/linux-4.1.27/net/bluetooth/ |
H A D | smp.h | 89 __u8 irk[16]; member in struct:smp_cmd_ident_info 188 bool smp_irk_matches(struct hci_dev *hdev, const u8 irk[16], 190 int smp_generate_rpa(struct hci_dev *hdev, const u8 irk[16], bdaddr_t *rpa);
|
H A D | hci_debugfs.c | 653 16, hdev->irk, &hdev->rpa); identity_show() 824 struct smp_irk *irk; identity_resolving_keys_show() local 827 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { identity_resolving_keys_show() 829 &irk->bdaddr, irk->addr_type, identity_resolving_keys_show() 830 16, irk->val, &irk->rpa); identity_resolving_keys_show()
|
H A D | hci_core.c | 2280 struct smp_irk *irk; hci_find_irk_by_rpa() local 2283 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { hci_find_irk_by_rpa() 2284 if (!bacmp(&irk->rpa, rpa)) { hci_find_irk_by_rpa() 2286 return irk; hci_find_irk_by_rpa() 2290 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { hci_find_irk_by_rpa() 2291 if (smp_irk_matches(hdev, irk->val, rpa)) { hci_find_irk_by_rpa() 2292 bacpy(&irk->rpa, rpa); hci_find_irk_by_rpa() 2294 return irk; hci_find_irk_by_rpa() 2305 struct smp_irk *irk; hci_find_irk_by_addr() local 2312 list_for_each_entry_rcu(irk, &hdev->identity_resolving_keys, list) { hci_find_irk_by_addr() 2313 if (addr_type == irk->addr_type && hci_find_irk_by_addr() 2314 bacmp(bdaddr, &irk->bdaddr) == 0) { hci_find_irk_by_addr() 2316 return irk; hci_find_irk_by_addr() 2403 struct smp_irk *irk; hci_add_irk() local 2405 irk = hci_find_irk_by_addr(hdev, bdaddr, addr_type); hci_add_irk() 2406 if (!irk) { hci_add_irk() 2407 irk = kzalloc(sizeof(*irk), GFP_KERNEL); hci_add_irk() 2408 if (!irk) hci_add_irk() 2411 bacpy(&irk->bdaddr, bdaddr); hci_add_irk() 2412 irk->addr_type = addr_type; hci_add_irk() 2414 list_add_rcu(&irk->list, &hdev->identity_resolving_keys); hci_add_irk() 2417 memcpy(irk->val, val, 16); hci_add_irk() 2418 bacpy(&irk->rpa, rpa); hci_add_irk() 2420 return irk; hci_add_irk() 2476 struct smp_irk *irk; hci_bdaddr_is_paired() local 2491 irk = hci_get_irk(hdev, bdaddr, addr_type); hci_bdaddr_is_paired() 2492 if (irk) { hci_bdaddr_is_paired() 2493 bdaddr = &irk->bdaddr; hci_bdaddr_is_paired() 2494 addr_type = irk->addr_type; hci_bdaddr_is_paired()
|
H A D | smp.c | 105 u8 irk[16]; member in struct:smp_chan 463 static int smp_ah(struct crypto_blkcipher *tfm, const u8 irk[16], smp_ah() argument 473 err = smp_e(tfm, irk, _res); smp_ah() 490 bool smp_irk_matches(struct hci_dev *hdev, const u8 irk[16], smp_irk_matches() argument 503 BT_DBG("RPA %pMR IRK %*phN", bdaddr, 16, irk); smp_irk_matches() 505 err = smp_ah(smp->tfm_aes, irk, &bdaddr->b[3], hash); smp_irk_matches() 512 int smp_generate_rpa(struct hci_dev *hdev, const u8 irk[16], bdaddr_t *rpa) smp_generate_rpa() argument 528 err = smp_ah(smp->tfm_aes, irk, &rpa->b[3], rpa->b); smp_generate_rpa() 1295 memcpy(idinfo.irk, hdev->irk, sizeof(idinfo.irk)); smp_distribute_keys() 2437 memcpy(smp->irk, info->irk, 16); smp_cmd_ident_info() 2489 smp->id_addr_type, smp->irk, &rpa); smp_cmd_ident_addr_info() 3327 const u8 irk[16] = { test_ah() local 3335 err = smp_ah(tfm_aes, irk, r, res); test_ah()
|
H A D | hci_conn.c | 732 struct smp_irk *irk; hci_connect_le() local 779 irk = hci_find_irk_by_addr(hdev, dst, dst_type); hci_connect_le() 780 if (irk && bacmp(&irk->rpa, BDADDR_ANY)) { hci_connect_le() 781 dst = &irk->rpa; hci_connect_le()
|
H A D | mgmt.c | 5367 memcpy(hdev->irk, cp->irk, sizeof(hdev->irk)); set_privacy() 5371 memset(hdev->irk, 0, sizeof(hdev->irk)); set_privacy() 5387 static bool irk_is_valid(struct mgmt_irk_info *irk) irk_is_valid() argument 5389 switch (irk->addr.type) { irk_is_valid() 5395 if ((irk->addr.bdaddr.b[5] & 0xc0) != 0xc0) irk_is_valid() 5449 struct mgmt_irk_info *irk = &cp->irks[i]; load_irks() local 5452 if (irk->addr.type == BDADDR_LE_PUBLIC) load_irks() 5457 hci_add_irk(hdev, &irk->addr.bdaddr, addr_type, irk->val, load_irks() 7613 void mgmt_new_irk(struct hci_dev *hdev, struct smp_irk *irk) mgmt_new_irk() argument 7630 if (bacmp(&irk->rpa, BDADDR_ANY)) mgmt_new_irk() 7635 bacpy(&ev.rpa, &irk->rpa); mgmt_new_irk() 7636 bacpy(&ev.irk.addr.bdaddr, &irk->bdaddr); mgmt_new_irk() 7637 ev.irk.addr.type = link_to_bdaddr(LE_LINK, irk->addr_type); mgmt_new_irk() 7638 memcpy(ev.irk.val, irk->val, sizeof(irk->val)); mgmt_new_irk()
|
H A D | hci_event.c | 4445 struct smp_irk *irk; hci_le_conn_complete_evt() local 4522 irk = hci_get_irk(hdev, &conn->dst, conn->dst_type); hci_le_conn_complete_evt() 4523 if (irk) { hci_le_conn_complete_evt() 4524 bacpy(&conn->dst, &irk->bdaddr); hci_le_conn_complete_evt() 4525 conn->dst_type = irk->addr_type; hci_le_conn_complete_evt() 4710 struct smp_irk *irk; process_adv_report() local 4737 if (!smp_irk_matches(hdev, hdev->irk, direct_addr)) process_adv_report() 4742 irk = hci_get_irk(hdev, bdaddr, bdaddr_type); process_adv_report() 4743 if (irk) { process_adv_report() 4744 bdaddr = &irk->bdaddr; process_adv_report() 4745 bdaddr_type = irk->addr_type; process_adv_report()
|
H A D | hci_request.c | 348 err = smp_generate_rpa(hdev, hdev->irk, &hdev->rpa); hci_update_random_address()
|
/linux-4.1.27/include/net/bluetooth/ |
H A D | mgmt.h | 402 __u8 irk[16]; member in struct:mgmt_cp_set_privacy 715 struct mgmt_irk_info irk; member in struct:mgmt_ev_new_irk
|
H A D | hci_core.h | 378 __u8 irk[16]; member in struct:hci_dev 1399 void mgmt_new_irk(struct hci_dev *hdev, struct smp_irk *irk);
|