Bluetooth: Add smp_ltk_sec_level() helper function
There are several places that need to determine the security level that an LTK can provide. This patch adds a convenience function for this to help make the code more readable. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
1afc2a1ab6
commit
a6f7833ca3
@ -4506,10 +4506,7 @@ static void hci_le_ltk_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
|
|||||||
memcpy(cp.ltk, ltk->val, sizeof(ltk->val));
|
memcpy(cp.ltk, ltk->val, sizeof(ltk->val));
|
||||||
cp.handle = cpu_to_le16(conn->handle);
|
cp.handle = cpu_to_le16(conn->handle);
|
||||||
|
|
||||||
if (ltk->authenticated)
|
conn->pending_sec_level = smp_ltk_sec_level(ltk);
|
||||||
conn->pending_sec_level = BT_SECURITY_HIGH;
|
|
||||||
else
|
|
||||||
conn->pending_sec_level = BT_SECURITY_MEDIUM;
|
|
||||||
|
|
||||||
conn->enc_key_size = ltk->enc_size;
|
conn->enc_key_size = ltk->enc_size;
|
||||||
|
|
||||||
|
@ -1114,7 +1114,7 @@ static bool smp_ltk_encrypt(struct l2cap_conn *conn, u8 sec_level)
|
|||||||
if (!key)
|
if (!key)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (sec_level > BT_SECURITY_MEDIUM && !key->authenticated)
|
if (smp_ltk_sec_level(key) < sec_level)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &hcon->flags))
|
if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &hcon->flags))
|
||||||
|
@ -125,6 +125,14 @@ enum {
|
|||||||
SMP_LTK_SLAVE,
|
SMP_LTK_SLAVE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline u8 smp_ltk_sec_level(struct smp_ltk *key)
|
||||||
|
{
|
||||||
|
if (key->authenticated)
|
||||||
|
return BT_SECURITY_HIGH;
|
||||||
|
|
||||||
|
return BT_SECURITY_MEDIUM;
|
||||||
|
}
|
||||||
|
|
||||||
/* SMP Commands */
|
/* SMP Commands */
|
||||||
bool smp_sufficient_security(struct hci_conn *hcon, u8 sec_level);
|
bool smp_sufficient_security(struct hci_conn *hcon, u8 sec_level);
|
||||||
int smp_conn_security(struct hci_conn *hcon, __u8 sec_level);
|
int smp_conn_security(struct hci_conn *hcon, __u8 sec_level);
|
||||||
|
Loading…
Reference in New Issue
Block a user