Bluetooth: Fix setting correct authentication information for SMP STK
When we store the STK in slave role we should set the correct authentication information for it. If the pairing is producing a HIGH security level the STK is considered authenticated, and otherwise it's considered unauthenticated. This patch fixes the value passed to the hci_add_ltk() function when adding the STK on the slave side. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Tested-by: Marcin Kraglak <marcin.kraglak@tieto.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Cc: stable@vger.kernel.org
This commit is contained in:
Родитель
4ad51a75c7
Коммит
fff3490f47
|
@ -544,7 +544,7 @@ static u8 smp_random(struct smp_chan *smp)
|
||||||
hci_le_start_enc(hcon, ediv, rand, stk);
|
hci_le_start_enc(hcon, ediv, rand, stk);
|
||||||
hcon->enc_key_size = smp->enc_key_size;
|
hcon->enc_key_size = smp->enc_key_size;
|
||||||
} else {
|
} else {
|
||||||
u8 stk[16];
|
u8 stk[16], auth;
|
||||||
__le64 rand = 0;
|
__le64 rand = 0;
|
||||||
__le16 ediv = 0;
|
__le16 ediv = 0;
|
||||||
|
|
||||||
|
@ -556,8 +556,13 @@ static u8 smp_random(struct smp_chan *smp)
|
||||||
memset(stk + smp->enc_key_size, 0,
|
memset(stk + smp->enc_key_size, 0,
|
||||||
SMP_MAX_ENC_KEY_SIZE - smp->enc_key_size);
|
SMP_MAX_ENC_KEY_SIZE - smp->enc_key_size);
|
||||||
|
|
||||||
|
if (hcon->pending_sec_level == BT_SECURITY_HIGH)
|
||||||
|
auth = 1;
|
||||||
|
else
|
||||||
|
auth = 0;
|
||||||
|
|
||||||
hci_add_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
|
hci_add_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
|
||||||
HCI_SMP_STK_SLAVE, 0, stk, smp->enc_key_size,
|
HCI_SMP_STK_SLAVE, auth, stk, smp->enc_key_size,
|
||||||
ediv, rand);
|
ediv, rand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче