Loading system/btif/include/btif_dm.h +8 −1 Original line number Diff line number Diff line Loading @@ -90,6 +90,13 @@ typedef struct }btif_dm_ble_lcsrk_keys_t; typedef struct { BT_OCTET16 irk; tBLE_ADDR_TYPE addr_type; BD_ADDR static_addr; }btif_dm_ble_pid_keys_t; typedef struct { BOOLEAN is_penc_key_rcvd; Loading @@ -97,7 +104,7 @@ typedef struct BOOLEAN is_pcsrk_key_rcvd; btif_dm_ble_pcsrk_keys_t pcsrk_key; /* received peer device SRK */ BOOLEAN is_pid_key_rcvd; UINT8 pid_key[BT_OCTET16_LEN]; /* peer device ID key */ btif_dm_ble_pid_keys_t pid_key; /* peer device ID key */ BOOLEAN is_lenc_key_rcvd; btif_dm_ble_lenc_keys_t lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/ BOOLEAN is_lcsrk_key_rcvd; Loading system/btif/src/btif_dm.c +13 −4 Original line number Diff line number Diff line Loading @@ -1723,10 +1723,19 @@ static void btif_dm_upstreams_evt(UINT16 event, char* p_param) case BTA_LE_KEY_PID: BTIF_TRACE_DEBUG("Rcv BTA_LE_KEY_PID"); pairing_cb.ble.is_pid_key_rcvd = TRUE; memcpy(pairing_cb.ble.pid_key, p_data->ble_key.key_value.pid_key.irk, 16); pairing_cb.ble.pid_key.addr_type = p_data->ble_key.key_value.pid_key.addr_type; memcpy(pairing_cb.ble.pid_key.irk, p_data->ble_key.key_value.pid_key.irk, 16); memcpy(pairing_cb.ble.pid_key.static_addr, p_data->ble_key.key_value.pid_key.static_addr,BD_ADDR_LEN); for (i=0; i<16; i++) { BTIF_TRACE_DEBUG("pairing_cb.ble.pid_key[%d]=0x%02x",i,pairing_cb.ble.pid_key[i]); BTIF_TRACE_DEBUG("pairing_cb.ble.pid_key.irk[%d]=0x%02x" ,i,pairing_cb.ble.pid_key.irk[i]); } for (i=0; i<BD_ADDR_LEN; i++) { BTIF_TRACE_DEBUG("piaring_cb.ble.pid_address[%d] = %x" ,i, pairing_cb.ble.pid_key.static_addr[i]); } break; Loading Loading @@ -2880,9 +2889,9 @@ void btif_dm_save_ble_bonding_keys(void) if (pairing_cb.ble.is_pid_key_rcvd) { btif_storage_add_ble_bonding_key(&bd_addr, (char *) &pairing_cb.ble.pid_key[0], (char *) &pairing_cb.ble.pid_key, BTIF_DM_LE_KEY_PID, BT_OCTET16_LEN); sizeof(btif_dm_ble_pid_keys_t)); } Loading system/btif/src/btif_gatt_util.c +2 −6 Original line number Diff line number Diff line Loading @@ -48,8 +48,6 @@ static unsigned char BASE_UUID[16] = { 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; extern bt_status_t btif_dm_remove_bond(const bt_bdaddr_t *bd_addr); int uuidType(unsigned char* p_uuid) { int i = 0; Loading Loading @@ -297,14 +295,12 @@ static BOOLEAN btif_gatt_is_link_encrypted (BD_ADDR bd_addr) static void btif_gatt_set_encryption_cb (BD_ADDR bd_addr, tBTA_TRANSPORT transport, tBTA_STATUS result) { UNUSED(bd_addr); UNUSED(transport); if (result != BTA_SUCCESS && result != BTA_BUSY) { bt_bdaddr_t bda; bdcpy(bda.address, bd_addr); btif_dm_remove_bond(&bda); BTIF_TRACE_WARNING("%s() - Encryption failed (%d)", __FUNCTION__, result); } } Loading system/btif/src/btif_storage.c +9 −2 Original line number Diff line number Diff line Loading @@ -1225,7 +1225,7 @@ bt_status_t btif_in_fetch_bonded_ble_device(char *remote_bd_addr,int add, btif_b if (btif_storage_get_ble_bonding_key(&bd_addr, BTIF_DM_LE_KEY_PID, buf, sizeof(btif_dm_ble_pcsrk_keys_t)) == BT_STATUS_SUCCESS) sizeof(btif_dm_ble_pid_keys_t)) == BT_STATUS_SUCCESS) { if(add) { Loading @@ -1237,7 +1237,14 @@ bt_status_t btif_in_fetch_bonded_ble_device(char *remote_bd_addr,int add, btif_b p = (tBTA_LE_KEY_VALUE *)buf; for (i=0; i<16; i++) { BTIF_TRACE_DEBUG("p->pid_key[%d]=0x%02x",i,p->pid_key.irk[i]); BTIF_TRACE_DEBUG("p->pid_key.irk[%d]=0x%02x" ,i,p->pid_key.irk[i]); } BTIF_TRACE_DEBUG("p->pid_key.addr_type=%d",p->pid_key.addr_type); for (i=0; i<BD_ADDR_LEN; i++) { BTIF_TRACE_DEBUG("p->pid_key.static_addr[%d]=%02x" ,i,p->pid_key.static_addr[i]); } BTA_DmAddBleKey (bta_bd_addr, (tBTA_LE_KEY_VALUE *)buf, BTIF_DM_LE_KEY_PID); Loading system/stack/btm/btm_ble.c +0 −3 Original line number Diff line number Diff line Loading @@ -1615,9 +1615,6 @@ void btm_ble_connected (UINT8 *bda, UINT16 handle, UINT8 enc_mode, UINT8 role, if (p_dev_rec->ble.ble_addr_type == BLE_ADDR_RANDOM && !addr_matched) memcpy(p_dev_rec->ble.cur_rand_addr, bda, BD_ADDR_LEN); if (btm_cb.cmn_ble_vsc_cb.rpa_offloading == TRUE) btm_ble_vendor_disable_irk_list(); #endif if (role == HCI_ROLE_SLAVE) Loading Loading
system/btif/include/btif_dm.h +8 −1 Original line number Diff line number Diff line Loading @@ -90,6 +90,13 @@ typedef struct }btif_dm_ble_lcsrk_keys_t; typedef struct { BT_OCTET16 irk; tBLE_ADDR_TYPE addr_type; BD_ADDR static_addr; }btif_dm_ble_pid_keys_t; typedef struct { BOOLEAN is_penc_key_rcvd; Loading @@ -97,7 +104,7 @@ typedef struct BOOLEAN is_pcsrk_key_rcvd; btif_dm_ble_pcsrk_keys_t pcsrk_key; /* received peer device SRK */ BOOLEAN is_pid_key_rcvd; UINT8 pid_key[BT_OCTET16_LEN]; /* peer device ID key */ btif_dm_ble_pid_keys_t pid_key; /* peer device ID key */ BOOLEAN is_lenc_key_rcvd; btif_dm_ble_lenc_keys_t lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/ BOOLEAN is_lcsrk_key_rcvd; Loading
system/btif/src/btif_dm.c +13 −4 Original line number Diff line number Diff line Loading @@ -1723,10 +1723,19 @@ static void btif_dm_upstreams_evt(UINT16 event, char* p_param) case BTA_LE_KEY_PID: BTIF_TRACE_DEBUG("Rcv BTA_LE_KEY_PID"); pairing_cb.ble.is_pid_key_rcvd = TRUE; memcpy(pairing_cb.ble.pid_key, p_data->ble_key.key_value.pid_key.irk, 16); pairing_cb.ble.pid_key.addr_type = p_data->ble_key.key_value.pid_key.addr_type; memcpy(pairing_cb.ble.pid_key.irk, p_data->ble_key.key_value.pid_key.irk, 16); memcpy(pairing_cb.ble.pid_key.static_addr, p_data->ble_key.key_value.pid_key.static_addr,BD_ADDR_LEN); for (i=0; i<16; i++) { BTIF_TRACE_DEBUG("pairing_cb.ble.pid_key[%d]=0x%02x",i,pairing_cb.ble.pid_key[i]); BTIF_TRACE_DEBUG("pairing_cb.ble.pid_key.irk[%d]=0x%02x" ,i,pairing_cb.ble.pid_key.irk[i]); } for (i=0; i<BD_ADDR_LEN; i++) { BTIF_TRACE_DEBUG("piaring_cb.ble.pid_address[%d] = %x" ,i, pairing_cb.ble.pid_key.static_addr[i]); } break; Loading Loading @@ -2880,9 +2889,9 @@ void btif_dm_save_ble_bonding_keys(void) if (pairing_cb.ble.is_pid_key_rcvd) { btif_storage_add_ble_bonding_key(&bd_addr, (char *) &pairing_cb.ble.pid_key[0], (char *) &pairing_cb.ble.pid_key, BTIF_DM_LE_KEY_PID, BT_OCTET16_LEN); sizeof(btif_dm_ble_pid_keys_t)); } Loading
system/btif/src/btif_gatt_util.c +2 −6 Original line number Diff line number Diff line Loading @@ -48,8 +48,6 @@ static unsigned char BASE_UUID[16] = { 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; extern bt_status_t btif_dm_remove_bond(const bt_bdaddr_t *bd_addr); int uuidType(unsigned char* p_uuid) { int i = 0; Loading Loading @@ -297,14 +295,12 @@ static BOOLEAN btif_gatt_is_link_encrypted (BD_ADDR bd_addr) static void btif_gatt_set_encryption_cb (BD_ADDR bd_addr, tBTA_TRANSPORT transport, tBTA_STATUS result) { UNUSED(bd_addr); UNUSED(transport); if (result != BTA_SUCCESS && result != BTA_BUSY) { bt_bdaddr_t bda; bdcpy(bda.address, bd_addr); btif_dm_remove_bond(&bda); BTIF_TRACE_WARNING("%s() - Encryption failed (%d)", __FUNCTION__, result); } } Loading
system/btif/src/btif_storage.c +9 −2 Original line number Diff line number Diff line Loading @@ -1225,7 +1225,7 @@ bt_status_t btif_in_fetch_bonded_ble_device(char *remote_bd_addr,int add, btif_b if (btif_storage_get_ble_bonding_key(&bd_addr, BTIF_DM_LE_KEY_PID, buf, sizeof(btif_dm_ble_pcsrk_keys_t)) == BT_STATUS_SUCCESS) sizeof(btif_dm_ble_pid_keys_t)) == BT_STATUS_SUCCESS) { if(add) { Loading @@ -1237,7 +1237,14 @@ bt_status_t btif_in_fetch_bonded_ble_device(char *remote_bd_addr,int add, btif_b p = (tBTA_LE_KEY_VALUE *)buf; for (i=0; i<16; i++) { BTIF_TRACE_DEBUG("p->pid_key[%d]=0x%02x",i,p->pid_key.irk[i]); BTIF_TRACE_DEBUG("p->pid_key.irk[%d]=0x%02x" ,i,p->pid_key.irk[i]); } BTIF_TRACE_DEBUG("p->pid_key.addr_type=%d",p->pid_key.addr_type); for (i=0; i<BD_ADDR_LEN; i++) { BTIF_TRACE_DEBUG("p->pid_key.static_addr[%d]=%02x" ,i,p->pid_key.static_addr[i]); } BTA_DmAddBleKey (bta_bd_addr, (tBTA_LE_KEY_VALUE *)buf, BTIF_DM_LE_KEY_PID); Loading
system/stack/btm/btm_ble.c +0 −3 Original line number Diff line number Diff line Loading @@ -1615,9 +1615,6 @@ void btm_ble_connected (UINT8 *bda, UINT16 handle, UINT8 enc_mode, UINT8 role, if (p_dev_rec->ble.ble_addr_type == BLE_ADDR_RANDOM && !addr_matched) memcpy(p_dev_rec->ble.cur_rand_addr, bda, BD_ADDR_LEN); if (btm_cb.cmn_ble_vsc_cb.rpa_offloading == TRUE) btm_ble_vendor_disable_irk_list(); #endif if (role == HCI_ROLE_SLAVE) Loading