Bluetooth: Add SMP flag for SC and set it when necessary.

This patch adds a new SMP flag for tracking whether Secure Connections
is in use and sets the flag when both remote and local side have elected
to use Secure Connections.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Johan Hedberg 2014-05-16 11:03:34 +03:00 коммит произвёл Marcel Holtmann
Родитель 0edb14de56
Коммит 6566877694
1 изменённых файлов: 7 добавлений и 0 удалений

Просмотреть файл

@ -45,6 +45,7 @@ enum {
SMP_FLAG_MITM_AUTH, SMP_FLAG_MITM_AUTH,
SMP_FLAG_COMPLETE, SMP_FLAG_COMPLETE,
SMP_FLAG_INITIATOR, SMP_FLAG_INITIATOR,
SMP_FLAG_SC,
}; };
struct smp_chan { struct smp_chan {
@ -973,6 +974,9 @@ static u8 smp_cmd_pairing_req(struct l2cap_conn *conn, struct sk_buff *skb)
build_pairing_cmd(conn, req, &rsp, auth); build_pairing_cmd(conn, req, &rsp, auth);
if (rsp.auth_req & SMP_AUTH_SC)
set_bit(SMP_FLAG_SC, &smp->flags);
key_size = min(req->max_key_size, rsp.max_key_size); key_size = min(req->max_key_size, rsp.max_key_size);
if (check_enc_key_size(conn, key_size)) if (check_enc_key_size(conn, key_size))
return SMP_ENC_KEY_SIZE; return SMP_ENC_KEY_SIZE;
@ -1020,6 +1024,9 @@ static u8 smp_cmd_pairing_rsp(struct l2cap_conn *conn, struct sk_buff *skb)
auth = rsp->auth_req & AUTH_REQ_MASK(hdev); auth = rsp->auth_req & AUTH_REQ_MASK(hdev);
if ((req->auth_req & SMP_AUTH_SC) && (auth & SMP_AUTH_SC))
set_bit(SMP_FLAG_SC, &smp->flags);
/* If we need MITM check that it can be achieved */ /* If we need MITM check that it can be achieved */
if (conn->hcon->pending_sec_level >= BT_SECURITY_HIGH) { if (conn->hcon->pending_sec_level >= BT_SECURITY_HIGH) {
u8 method; u8 method;