aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/smp.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2014-02-22 12:06:32 -0500
committerMarcel Holtmann <marcel@holtmann.org>2014-02-22 12:59:23 -0500
commit863efaf224d24705c0ffdc59f2a0ec68f2d85b4f (patch)
treeb58c8d7eba9defd81c056dcb701435237031fa44 /net/bluetooth/smp.c
parent524237cb4b566ae73ec24c56852489b85e426241 (diff)
Bluetooth: Add initial code for distributing local IRK
This code adds a HCI_PRIVACY flag to track whether Privacy support is enabled (meaning we have a local IRK) and makes sure the IRK is distributed during SMP key distribution in case this flag is set. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/smp.c')
-rw-r--r--net/bluetooth/smp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 6355a460e9d0..8ef50c790b96 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -265,6 +265,9 @@ static void build_pairing_cmd(struct l2cap_conn *conn,
265 if (test_bit(HCI_RPA_RESOLVING, &hdev->dev_flags)) 265 if (test_bit(HCI_RPA_RESOLVING, &hdev->dev_flags))
266 remote_dist |= SMP_DIST_ID_KEY; 266 remote_dist |= SMP_DIST_ID_KEY;
267 267
268 if (test_bit(HCI_PRIVACY, &hdev->dev_flags))
269 local_dist |= SMP_DIST_ID_KEY;
270
268 if (rsp == NULL) { 271 if (rsp == NULL) {
269 req->io_capability = conn->hcon->io_capability; 272 req->io_capability = conn->hcon->io_capability;
270 req->oob_flag = SMP_OOB_NOT_PRESENT; 273 req->oob_flag = SMP_OOB_NOT_PRESENT;
@@ -1189,8 +1192,7 @@ int smp_distribute_keys(struct l2cap_conn *conn, __u8 force)
1189 struct smp_cmd_ident_addr_info addrinfo; 1192 struct smp_cmd_ident_addr_info addrinfo;
1190 struct smp_cmd_ident_info idinfo; 1193 struct smp_cmd_ident_info idinfo;
1191 1194
1192 /* Send a dummy key */ 1195 memcpy(idinfo.irk, hdev->irk, sizeof(idinfo.irk));
1193 get_random_bytes(idinfo.irk, sizeof(idinfo.irk));
1194 1196
1195 smp_send_cmd(conn, SMP_CMD_IDENT_INFO, sizeof(idinfo), &idinfo); 1197 smp_send_cmd(conn, SMP_CMD_IDENT_INFO, sizeof(idinfo), &idinfo);
1196 1198