| /linux/net/bluetooth/ |
| H A D | smp.h | 87 __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_core.c | 1177 struct smp_irk *irk; in hci_find_irk_by_rpa() local 1180 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { in hci_find_irk_by_rpa() 1181 if (!bacmp(&irk->rpa, rpa)) { in hci_find_irk_by_rpa() 1182 irk_to_return = irk; in hci_find_irk_by_rpa() 1187 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { in hci_find_irk_by_rpa() 1188 if (smp_irk_matches(hdev, irk->val, rpa)) { in hci_find_irk_by_rpa() 1189 bacpy(&irk->rpa, rpa); in hci_find_irk_by_rpa() 1190 irk_to_return = irk; in hci_find_irk_by_rpa() 1212 struct smp_irk *irk; in hci_find_irk_by_addr() local 1219 list_for_each_entry_rcu(irk, in hci_find_irk_by_addr() 1318 struct smp_irk *irk; hci_add_irk() local 1391 struct smp_irk *irk; hci_bdaddr_is_paired() local [all...] |
| H A D | hci_conn.c | 72 struct smp_irk *irk; in hci_connect_le_scan_cleanup() local 80 irk = hci_get_irk(hdev, bdaddr, bdaddr_type); in hci_connect_le_scan_cleanup() 81 if (irk) { in hci_connect_le_scan_cleanup() 82 bdaddr = &irk->bdaddr; in hci_connect_le_scan_cleanup() 83 bdaddr_type = irk->addr_type; in hci_connect_le_scan_cleanup() 1014 struct smp_irk *irk = NULL; in __hci_conn_add() 1026 irk = hci_get_irk(hdev, dst, dst_type); in __hci_conn_add() 1033 irk = hci_get_irk(hdev, dst, dst_type); in __hci_conn_add() 1041 if (irk && in __hci_conn_add() 1044 &irk in __hci_conn_add() 1006 struct smp_irk *irk = NULL; __hci_conn_add() local 1473 struct smp_irk *irk; hci_connect_le() local [all...] |
| H A D | hci_debugfs.c | 678 16, hdev->irk, &hdev->rpa); in identity_show() 820 struct smp_irk *irk; in identity_resolving_keys_show() local 823 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { in identity_resolving_keys_show() 825 &irk->bdaddr, irk->addr_type, in identity_resolving_keys_show() 826 16, irk->val, &irk->rpa); in identity_resolving_keys_show()
|
| H A D | smp.c | 109 u8 irk[16]; member 451 static int smp_ah(const u8 irk[16], const u8 r[3], u8 res[3]) in smp_ah() 460 err = smp_e(irk, _res); in smp_ah() 477 bool smp_irk_matches(struct hci_dev *hdev, const u8 irk[16], in smp_irk_matches() 487 bt_dev_dbg(hdev, "RPA %pMR IRK %*phN", bdaddr, 16, irk); in smp_irk_matches() 489 err = smp_ah(irk, &bdaddr->b[3], hash); in smp_irk_matches() 496 int smp_generate_rpa(struct hci_dev *hdev, const u8 irk[16], bdaddr_t *rpa) in smp_generate_rpa() 509 err = smp_ah(irk, &rpa->b[3], rpa->b); in smp_generate_rpa() 1298 memcpy(idinfo.irk, hdev->irk, sizeo in smp_distribute_keys() 3458 const u8 irk[16] = { test_ah() local [all...] |
| H A D | hci_sync.c | 1093 err = smp_generate_rpa(hdev, hdev->irk, &hdev->rpa); in hci_update_random_address_sync() 2473 * Setting params to NULL programs local hdev->irk in hci_le_add_resolve_list_sync() 2479 struct smp_irk *irk; in hci_le_add_resolve_list_sync() 2486 /* Attempt to program local identity address, type and irk if params is in hci_le_add_resolve_list_sync() 2494 memcpy(cp.peer_irk, hdev->irk, 16); in hci_le_add_resolve_list_sync() 2499 irk = hci_find_irk_by_addr(hdev, ¶ms->addr, params->addr_type); in hci_le_add_resolve_list_sync() 2500 if (!irk) in hci_le_add_resolve_list_sync() 2512 memcpy(cp.peer_irk, irk->val, 16); in hci_le_add_resolve_list_sync() 2529 memcpy(cp.local_irk, hdev->irk, 16); 2542 struct smp_irk *irk; in hci_le_set_privacy_mode_sync() 2471 struct smp_irk *irk; hci_le_add_resolve_list_sync() local 2534 struct smp_irk *irk; hci_le_set_privacy_mode_sync() local [all...] |
| H A D | mgmt.c | 3222 /* Abort any ongoing SMP pairing. Removes ltk and irk if they exist. */ in unpair_device() 7234 memcpy(hdev->irk, cp->irk, sizeof(hdev->irk)); in set_privacy() 7243 memset(hdev->irk, 0, sizeof(hdev->irk)); in set_privacy() 7261 static bool irk_is_valid(struct mgmt_irk_info *irk) in irk_is_valid() argument 7263 switch (irk->addr.type) { in irk_is_valid() 7269 if ((irk->addr.bdaddr.b[5] & 0xc0) != 0xc0) in irk_is_valid() 7324 struct mgmt_irk_info *irk in load_irks() local 9955 mgmt_new_irk(struct hci_dev * hdev,struct smp_irk * irk,bool persistent) mgmt_new_irk() argument [all...] |
| H A D | hci_event.c | 5759 struct smp_irk *irk; in le_conn_complete_evt() local 5843 irk = hci_get_irk(hdev, &conn->dst, conn->dst_type); in le_conn_complete_evt() 5844 if (irk) { in le_conn_complete_evt() 5845 bacpy(&conn->dst, &irk->bdaddr); in le_conn_complete_evt() 5846 conn->dst_type = irk->addr_type; in le_conn_complete_evt() 6236 struct smp_irk *irk; in process_adv_report() local 6305 if (!smp_irk_matches(hdev, hdev->irk, direct_addr)) in process_adv_report() 6310 irk = hci_get_irk(hdev, bdaddr, bdaddr_type); in process_adv_report() 6311 if (irk) { in process_adv_report() 6312 bdaddr = &irk->bdaddr; in process_adv_report() [all …]
|
| /linux/include/net/bluetooth/ |
| H A D | mgmt.h | 420 __u8 irk[16]; member 1060 struct mgmt_irk_info irk; member
|
| H A D | hci_core.h | 609 __u8 irk[16]; 2509 void mgmt_new_irk(struct hci_dev *hdev, struct smp_irk *irk, bool persistent); 608 __u8 irk[16]; global() member
|