Commit d378a2d7 authored by Johan Hedberg's avatar Johan Hedberg Committed by Marcel Holtmann
Browse files

Bluetooth: Set correct LTK type and authentication for SC



After generating the LTK we should set the correct type (normal SC or
debug) and authentication information for it.

Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 6c0dcc50
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -2060,6 +2060,7 @@ static int smp_cmd_dhkey_check(struct l2cap_conn *conn, struct sk_buff *skb)
	struct smp_chan *smp = chan->data;
	u8 a[7], b[7], *local_addr, *remote_addr;
	u8 io_cap[3], r[16], e[16];
	u8 key_type, auth;
	int err;

	BT_DBG("conn %p", conn);
@@ -2092,8 +2093,18 @@ static int smp_cmd_dhkey_check(struct l2cap_conn *conn, struct sk_buff *skb)
	if (memcmp(check->e, e, 16))
		return SMP_DHKEY_CHECK_FAILED;

	if (test_bit(SMP_FLAG_DEBUG_KEY, &smp->flags))
		key_type = SMP_LTK_P256_DEBUG;
	else
		key_type = SMP_LTK_P256;

	if (hcon->pending_sec_level == BT_SECURITY_FIPS)
		auth = 1;
	else
		auth = 0;

	smp->ltk = hci_add_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
			       SMP_LTK_P256, 0, smp->tk, smp->enc_key_size,
			       key_type, auth, smp->tk, smp->enc_key_size,
			       0, 0);

	if (hcon->out) {