/openbmc/linux/net/bluetooth/ |
H A D | smp.h | 90 __u8 irk[16]; member 191 bool smp_irk_matches(struct hci_dev *hdev, const u8 irk[16], 193 int smp_generate_rpa(struct hci_dev *hdev, const u8 irk[16], bdaddr_t *rpa);
|
H A D | hci_request.c | 375 struct smp_irk *irk; in del_from_accept_list() local 377 irk = hci_find_irk_by_addr(req->hdev, bdaddr, bdaddr_type); in del_from_accept_list() 378 if (irk) { in del_from_accept_list() 428 struct smp_irk *irk; in add_to_accept_list() local 430 irk = hci_find_irk_by_addr(hdev, ¶ms->addr, in add_to_accept_list() 432 if (irk) { in add_to_accept_list() 437 memcpy(cp.peer_irk, irk->val, 16); in add_to_accept_list() 440 memcpy(cp.local_irk, hdev->irk, 16); in add_to_accept_list() 658 err = smp_generate_rpa(hdev, hdev->irk, &hdev->rpa); in hci_update_random_address()
|
H A D | hci_core.c | 1188 struct smp_irk *irk; in hci_find_irk_by_rpa() local 1191 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { in hci_find_irk_by_rpa() 1192 if (!bacmp(&irk->rpa, rpa)) { in hci_find_irk_by_rpa() 1193 irk_to_return = irk; in hci_find_irk_by_rpa() 1198 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { in hci_find_irk_by_rpa() 1199 if (smp_irk_matches(hdev, irk->val, rpa)) { in hci_find_irk_by_rpa() 1200 bacpy(&irk->rpa, rpa); in hci_find_irk_by_rpa() 1201 irk_to_return = irk; in hci_find_irk_by_rpa() 1223 struct smp_irk *irk; in hci_find_irk_by_addr() local 1230 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { in hci_find_irk_by_addr() [all …]
|
H A D | hci_debugfs.c | 682 16, hdev->irk, &hdev->rpa); in identity_show() 824 struct smp_irk *irk; in identity_resolving_keys_show() local 827 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { in identity_resolving_keys_show() 829 &irk->bdaddr, irk->addr_type, in identity_resolving_keys_show() 830 16, irk->val, &irk->rpa); in identity_resolving_keys_show()
|
H A D | smp.c | 114 u8 irk[16]; member 472 static int smp_ah(const u8 irk[16], const u8 r[3], u8 res[3]) in smp_ah() 481 err = smp_e(irk, _res); in smp_ah() 498 bool smp_irk_matches(struct hci_dev *hdev, const u8 irk[16], in smp_irk_matches() 508 bt_dev_dbg(hdev, "RPA %pMR IRK %*phN", bdaddr, 16, irk); in smp_irk_matches() 510 err = smp_ah(irk, &bdaddr->b[3], hash); in smp_irk_matches() 517 int smp_generate_rpa(struct hci_dev *hdev, const u8 irk[16], bdaddr_t *rpa) in smp_generate_rpa() 530 err = smp_ah(irk, &rpa->b[3], rpa->b); in smp_generate_rpa() 1322 memcpy(idinfo.irk, hdev->irk, sizeof(idinfo.irk)); in smp_distribute_keys() 2583 info->irk)) { in smp_cmd_ident_info() [all …]
|
H A D | hci_conn.c | 75 struct smp_irk *irk; in hci_connect_le_scan_cleanup() local 83 irk = hci_get_irk(hdev, bdaddr, bdaddr_type); in hci_connect_le_scan_cleanup() 84 if (irk) { in hci_connect_le_scan_cleanup() 85 bdaddr = &irk->bdaddr; in hci_connect_le_scan_cleanup() 86 bdaddr_type = irk->addr_type; in hci_connect_le_scan_cleanup() 1289 struct smp_irk *irk; in hci_connect_le() local 1329 irk = hci_find_irk_by_addr(hdev, dst, dst_type); in hci_connect_le() 1330 if (irk && bacmp(&irk->rpa, BDADDR_ANY)) { in hci_connect_le() 1331 dst = &irk->rpa; in hci_connect_le()
|
H A D | hci_sync.c | 1096 err = smp_generate_rpa(hdev, hdev->irk, &hdev->rpa); in hci_update_random_address_sync() 2354 struct smp_irk *irk; in hci_le_add_resolve_list_sync() local 2369 memcpy(cp.peer_irk, hdev->irk, 16); in hci_le_add_resolve_list_sync() 2373 irk = hci_find_irk_by_addr(hdev, ¶ms->addr, params->addr_type); in hci_le_add_resolve_list_sync() 2374 if (!irk) in hci_le_add_resolve_list_sync() 2386 memcpy(cp.peer_irk, irk->val, 16); in hci_le_add_resolve_list_sync() 2403 memcpy(cp.local_irk, hdev->irk, 16); in hci_le_add_resolve_list_sync() 2416 struct smp_irk *irk; in hci_le_set_privacy_mode_sync() local 2429 irk = hci_find_irk_by_addr(hdev, ¶ms->addr, params->addr_type); in hci_le_set_privacy_mode_sync() 2430 if (!irk) in hci_le_set_privacy_mode_sync() [all …]
|
H A D | mgmt.c | 7027 memcpy(hdev->irk, cp->irk, sizeof(hdev->irk)); in set_privacy() 7036 memset(hdev->irk, 0, sizeof(hdev->irk)); in set_privacy() 7054 static bool irk_is_valid(struct mgmt_irk_info *irk) in irk_is_valid() argument 7056 switch (irk->addr.type) { in irk_is_valid() 7062 if ((irk->addr.bdaddr.b[5] & 0xc0) != 0xc0) in irk_is_valid() 7117 struct mgmt_irk_info *irk = &cp->irks[i]; in load_irks() local 7121 irk->val)) { in load_irks() 7123 &irk->addr.bdaddr); in load_irks() 7127 hci_add_irk(hdev, &irk->addr.bdaddr, in load_irks() 7128 le_addr_type(irk->addr.type), irk->val, in load_irks() [all …]
|
H A D | hci_event.c | 5621 struct smp_irk *irk; in le_conn_complete_evt() local 5693 irk = hci_get_irk(hdev, &conn->dst, conn->dst_type); in le_conn_complete_evt() 5694 if (irk) { in le_conn_complete_evt() 5695 bacpy(&conn->dst, &irk->bdaddr); in le_conn_complete_evt() 5696 conn->dst_type = irk->addr_type; in le_conn_complete_evt() 6003 struct smp_irk *irk; in process_adv_report() local 6069 if (!smp_irk_matches(hdev, hdev->irk, direct_addr)) in process_adv_report() 6074 irk = hci_get_irk(hdev, bdaddr, bdaddr_type); in process_adv_report() 6075 if (irk) { in process_adv_report() 6076 bdaddr = &irk->bdaddr; in process_adv_report() [all …]
|
/openbmc/linux/include/net/bluetooth/ |
H A D | mgmt.h | 414 __u8 irk[16]; member 1027 struct mgmt_irk_info irk; member
|
H A D | hci_core.h | 595 __u8 irk[16]; member 2327 void mgmt_new_irk(struct hci_dev *hdev, struct smp_irk *irk, bool persistent);
|