smp.c (524237cb4b566ae73ec24c56852489b85e426241) | smp.c (863efaf224d24705c0ffdc59f2a0ec68f2d85b4f) |
---|---|
1/* 2 BlueZ - Bluetooth protocol stack for Linux 3 Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License version 2 as 7 published by the Free Software Foundation; 8 --- 251 unchanged lines hidden (view full) --- 260 authreq |= SMP_AUTH_BONDING; 261 } else { 262 authreq &= ~SMP_AUTH_BONDING; 263 } 264 265 if (test_bit(HCI_RPA_RESOLVING, &hdev->dev_flags)) 266 remote_dist |= SMP_DIST_ID_KEY; 267 | 1/* 2 BlueZ - Bluetooth protocol stack for Linux 3 Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License version 2 as 7 published by the Free Software Foundation; 8 --- 251 unchanged lines hidden (view full) --- 260 authreq |= SMP_AUTH_BONDING; 261 } else { 262 authreq &= ~SMP_AUTH_BONDING; 263 } 264 265 if (test_bit(HCI_RPA_RESOLVING, &hdev->dev_flags)) 266 remote_dist |= SMP_DIST_ID_KEY; 267 |
268 if (test_bit(HCI_PRIVACY, &hdev->dev_flags)) 269 local_dist |= SMP_DIST_ID_KEY; 270 |
|
268 if (rsp == NULL) { 269 req->io_capability = conn->hcon->io_capability; 270 req->oob_flag = SMP_OOB_NOT_PRESENT; 271 req->max_key_size = SMP_MAX_ENC_KEY_SIZE; 272 req->init_key_dist = local_dist; 273 req->resp_key_dist = remote_dist; 274 req->auth_req = (authreq & AUTH_REQ_MASK); 275 --- 908 unchanged lines hidden (view full) --- 1184 1185 *keydist &= ~SMP_DIST_ENC_KEY; 1186 } 1187 1188 if (*keydist & SMP_DIST_ID_KEY) { 1189 struct smp_cmd_ident_addr_info addrinfo; 1190 struct smp_cmd_ident_info idinfo; 1191 | 271 if (rsp == NULL) { 272 req->io_capability = conn->hcon->io_capability; 273 req->oob_flag = SMP_OOB_NOT_PRESENT; 274 req->max_key_size = SMP_MAX_ENC_KEY_SIZE; 275 req->init_key_dist = local_dist; 276 req->resp_key_dist = remote_dist; 277 req->auth_req = (authreq & AUTH_REQ_MASK); 278 --- 908 unchanged lines hidden (view full) --- 1187 1188 *keydist &= ~SMP_DIST_ENC_KEY; 1189 } 1190 1191 if (*keydist & SMP_DIST_ID_KEY) { 1192 struct smp_cmd_ident_addr_info addrinfo; 1193 struct smp_cmd_ident_info idinfo; 1194 |
1192 /* Send a dummy key */ 1193 get_random_bytes(idinfo.irk, sizeof(idinfo.irk)); | 1195 memcpy(idinfo.irk, hdev->irk, sizeof(idinfo.irk)); |
1194 1195 smp_send_cmd(conn, SMP_CMD_IDENT_INFO, sizeof(idinfo), &idinfo); 1196 1197 /* Just public address */ 1198 memset(&addrinfo, 0, sizeof(addrinfo)); 1199 bacpy(&addrinfo.bdaddr, &hcon->src); 1200 1201 smp_send_cmd(conn, SMP_CMD_IDENT_ADDR_INFO, sizeof(addrinfo), --- 26 unchanged lines hidden --- | 1196 1197 smp_send_cmd(conn, SMP_CMD_IDENT_INFO, sizeof(idinfo), &idinfo); 1198 1199 /* Just public address */ 1200 memset(&addrinfo, 0, sizeof(addrinfo)); 1201 bacpy(&addrinfo.bdaddr, &hcon->src); 1202 1203 smp_send_cmd(conn, SMP_CMD_IDENT_ADDR_INFO, sizeof(addrinfo), --- 26 unchanged lines hidden --- |