Lines Matching refs:hcon

600 	bt_dev_dbg(conn->hcon->hdev, "code 0x%2.2x", code);
654 struct hci_conn *hcon = conn->hcon;
655 struct hci_dev *hdev = hcon->hdev;
682 if (hcon->dst_type == ADDR_LE_DEV_PUBLIC)
687 oob_data = hci_find_remote_oob_data(hdev, &hcon->dst,
703 req->io_capability = conn->hcon->io_capability;
714 rsp->io_capability = conn->hcon->io_capability;
727 struct hci_dev *hdev = conn->hcon->hdev;
730 if (conn->hcon->pending_sec_level == BT_SECURITY_FIPS &&
747 struct hci_conn *hcon = conn->hcon;
755 mgmt_smp_complete(hcon, complete);
768 !hci_dev_test_flag(hcon->hdev, HCI_KEEP_DEBUG_KEYS)) {
794 hci_conn_drop(hcon);
799 struct hci_conn *hcon = conn->hcon;
806 mgmt_auth_failed(hcon, HCI_ERROR_AUTH_FAILURE);
854 struct hci_conn *hcon = conn->hcon;
864 bt_dev_dbg(hcon->hdev, "auth:%u lcl:%u rem:%u", auth, local_io,
885 hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
891 ret = mgmt_user_confirm_request(hcon->hdev, &hcon->dst,
892 hcon->type,
893 hcon->dst_type,
910 if (hcon->pending_sec_level < BT_SECURITY_HIGH)
911 hcon->pending_sec_level = BT_SECURITY_HIGH;
918 if (hcon->role == HCI_ROLE_MASTER)
930 bt_dev_dbg(hcon->hdev, "PassKey: %u", passkey);
935 ret = mgmt_user_passkey_request(hcon->hdev, &hcon->dst,
936 hcon->type, hcon->dst_type);
938 ret = mgmt_user_confirm_request(hcon->hdev, &hcon->dst,
939 hcon->type, hcon->dst_type,
942 ret = mgmt_user_passkey_notify(hcon->hdev, &hcon->dst,
943 hcon->type, hcon->dst_type,
955 bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
958 conn->hcon->init_addr_type, &conn->hcon->init_addr,
959 conn->hcon->resp_addr_type, &conn->hcon->resp_addr,
968 if (conn->hcon->out)
979 struct hci_conn *hcon = conn->hcon;
983 bt_dev_dbg(conn->hcon->hdev, "conn %p %s", conn,
984 conn->hcon->out ? "initiator" : "responder");
987 hcon->init_addr_type, &hcon->init_addr,
988 hcon->resp_addr_type, &hcon->resp_addr, confirm);
993 bt_dev_err(hcon->hdev, "pairing failed "
998 if (hcon->out) {
1005 if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &hcon->flags))
1008 hci_le_start_enc(hcon, ediv, rand, stk, smp->enc_key_size);
1009 hcon->enc_key_size = smp->enc_key_size;
1010 set_bit(HCI_CONN_STK_ENCRYPT, &hcon->flags);
1021 if (hcon->pending_sec_level == BT_SECURITY_HIGH)
1030 hci_add_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
1041 struct hci_conn *hcon = conn->hcon;
1042 struct hci_dev *hdev = hcon->hdev;
1047 if (hcon->type == ACL_LINK) {
1048 if (hcon->key_type == HCI_LK_DEBUG_COMBINATION)
1052 &hcon->flags);
1063 smp->remote_irk->link_type = hcon->type;
1070 if (hcon->type == LE_LINK) {
1071 bacpy(&hcon->dst, &smp->remote_irk->bdaddr);
1072 hcon->dst_type = smp->remote_irk->addr_type;
1083 smp->csrk->link_type = hcon->type;
1084 smp->csrk->bdaddr_type = hcon->dst_type;
1085 bacpy(&smp->csrk->bdaddr, &hcon->dst);
1090 smp->responder_csrk->link_type = hcon->type;
1091 smp->responder_csrk->bdaddr_type = hcon->dst_type;
1092 bacpy(&smp->responder_csrk->bdaddr, &hcon->dst);
1097 smp->ltk->link_type = hcon->type;
1098 smp->ltk->bdaddr_type = hcon->dst_type;
1099 bacpy(&smp->ltk->bdaddr, &hcon->dst);
1104 smp->responder_ltk->link_type = hcon->type;
1105 smp->responder_ltk->bdaddr_type = hcon->dst_type;
1106 bacpy(&smp->responder_ltk->bdaddr, &hcon->dst);
1116 else if (hcon->sec_level == BT_SECURITY_FIPS)
1121 key = hci_add_link_key(hdev, smp->conn->hcon, &hcon->dst,
1124 key->link_type = hcon->type;
1125 key->bdaddr_type = hcon->dst_type;
1142 struct hci_conn *hcon = smp->conn->hcon;
1150 if (hcon->pending_sec_level == BT_SECURITY_FIPS)
1155 smp->ltk = hci_add_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
1214 struct hci_conn *hcon = smp->conn->hcon;
1215 struct hci_dev *hdev = hcon->hdev;
1218 key = hci_find_link_key(hdev, &hcon->dst);
1251 struct hci_conn *hcon = conn->hcon;
1252 struct hci_dev *hdev = hcon->hdev;
1260 if (hcon->out && (smp->remote_key_dist & KEY_DIST_MASK)) {
1267 if (hcon->out) {
1276 if (hcon->type == LE_LINK && (*keydist & SMP_DIST_LINK_KEY))
1278 if (hcon->type == ACL_LINK && (*keydist & SMP_DIST_ENC_KEY))
1308 authenticated = hcon->sec_level == BT_SECURITY_HIGH;
1309 ltk = hci_add_ltk(hdev, &hcon->dst, hcon->dst_type,
1337 bacpy(&addrinfo.bdaddr, &hcon->src);
1338 addrinfo.addr_type = hcon->src_type;
1355 if (hcon->sec_level > BT_SECURITY_MEDIUM)
1386 bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
1388 hci_disconnect(conn->hcon, HCI_ERROR_REMOTE_USER_TERM);
1393 struct hci_conn *hcon = conn->hcon;
1403 bt_dev_err(hcon->hdev, "Unable to create CMAC crypto context");
1409 bt_dev_err(hcon->hdev, "Unable to create ECDH crypto context");
1420 hci_conn_hold(hcon);
1433 struct hci_conn *hcon = smp->conn->hcon;
1436 if (hcon->out) {
1444 memcpy(a, &hcon->init_addr, 6);
1445 memcpy(b, &hcon->resp_addr, 6);
1446 a[6] = hcon->init_addr_type;
1447 b[6] = hcon->resp_addr_type;
1454 struct hci_conn *hcon = smp->conn->hcon;
1459 memcpy(a, &hcon->init_addr, 6);
1460 memcpy(b, &hcon->resp_addr, 6);
1461 a[6] = hcon->init_addr_type;
1462 b[6] = hcon->resp_addr_type;
1464 if (hcon->out) {
1477 put_unaligned_le32(hcon->passkey_notify, r);
1491 struct hci_conn *hcon = conn->hcon;
1495 r = ((hcon->passkey_notify >> smp->passkey_round) & 0x01);
1512 struct hci_conn *hcon = conn->hcon;
1513 struct hci_dev *hdev = hcon->hdev;
1522 r = ((hcon->passkey_notify >> smp->passkey_round) & 0x01);
1543 if (!hcon->out) {
1571 if (hcon->out) {
1582 if (!hcon->out)
1599 struct hci_conn *hcon = conn->hcon;
1612 hcon->passkey_notify = le32_to_cpu(passkey);
1627 if (hcon->out) {
1638 int smp_user_confirm_reply(struct hci_conn *hcon, u16 mgmt_op, __le32 passkey)
1640 struct l2cap_conn *conn = hcon->l2cap_data;
1649 bt_dev_dbg(conn->hcon->hdev, "");
1672 bt_dev_dbg(conn->hcon->hdev, "PassKey: %u", value);
1708 struct hci_dev *hdev = conn->hcon->hdev;
1728 req->max_key_size = conn->hcon->enc_key_size;
1738 rsp->max_key_size = conn->hcon->enc_key_size;
1749 struct hci_dev *hdev = conn->hcon->hdev;
1759 if (conn->hcon->role != HCI_ROLE_SLAVE)
1792 if (conn->hcon->type == ACL_LINK) {
1794 if (!test_bit(HCI_CONN_AES_CCM, &conn->hcon->flags) &&
1829 if (conn->hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
1834 if (sec_level > conn->hcon->pending_sec_level)
1835 conn->hcon->pending_sec_level = sec_level;
1838 if (conn->hcon->pending_sec_level >= BT_SECURITY_HIGH) {
1841 method = get_auth_method(smp, conn->hcon->io_capability,
1885 struct hci_dev *hdev = smp->conn->hcon->hdev;
1941 struct hci_dev *hdev = conn->hcon->hdev;
1950 if (conn->hcon->role != HCI_ROLE_MASTER)
1985 if (conn->hcon->type == ACL_LINK) {
1994 else if (conn->hcon->pending_sec_level > BT_SECURITY_HIGH)
1995 conn->hcon->pending_sec_level = BT_SECURITY_HIGH;
1998 if (conn->hcon->pending_sec_level >= BT_SECURITY_HIGH) {
2040 bt_dev_dbg(conn->hcon->hdev, "");
2045 if (conn->hcon->out) {
2061 struct hci_conn *hcon = conn->hcon;
2062 struct hci_dev *hdev = hcon->hdev;
2067 if (hcon->out)
2099 struct hci_conn *hcon = conn->hcon;
2100 struct hci_dev *hdev = hcon->hdev;
2103 hcon->out ? "initiator" : "responder");
2125 if (conn->hcon->out) {
2144 struct hci_conn *hcon = conn->hcon;
2149 bt_dev_dbg(hcon->hdev, "conn %p", conn);
2160 if (hcon->out) {
2173 if (!hcon->out)
2184 if (hcon->out) {
2207 if (hci_find_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
2208 hcon->role)) {
2225 if (hcon->out) {
2242 err = mgmt_user_confirm_request(hcon->hdev, &hcon->dst, hcon->type,
2243 hcon->dst_type, passkey, confirm_hint);
2255 struct hci_conn *hcon = conn->hcon;
2257 key = hci_find_ltk(hcon->hdev, &hcon->dst, hcon->dst_type, hcon->role);
2264 if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &hcon->flags))
2267 hci_le_start_enc(hcon, key->ediv, key->rand, key->val, key->enc_size);
2268 hcon->enc_key_size = key->enc_size;
2271 clear_bit(HCI_CONN_STK_ENCRYPT, &hcon->flags);
2276 bool smp_sufficient_security(struct hci_conn *hcon, u8 sec_level,
2289 test_bit(HCI_CONN_STK_ENCRYPT, &hcon->flags) &&
2290 hci_find_ltk(hcon->hdev, &hcon->dst, hcon->dst_type, hcon->role))
2293 if (hcon->sec_level >= sec_level)
2303 struct hci_conn *hcon = conn->hcon;
2304 struct hci_dev *hdev = hcon->hdev;
2313 if (hcon->role != HCI_ROLE_MASTER)
2321 if (hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
2326 if (smp_sufficient_security(hcon, sec_level, SMP_USE_LTK)) {
2331 smp_ltk_encrypt(conn, hcon->sec_level);
2335 if (sec_level > hcon->pending_sec_level)
2336 hcon->pending_sec_level = sec_level;
2338 if (smp_ltk_encrypt(conn, hcon->pending_sec_level))
2363 int smp_conn_security(struct hci_conn *hcon, __u8 sec_level)
2365 struct l2cap_conn *conn = hcon->l2cap_data;
2371 bt_dev_dbg(hcon->hdev, "conn %p hcon %p level 0x%2.2x", conn, hcon,
2378 if (!hci_dev_test_flag(hcon->hdev, HCI_LE_ENABLED))
2381 if (smp_sufficient_security(hcon, sec_level, SMP_USE_LTK))
2384 if (sec_level > hcon->pending_sec_level)
2385 hcon->pending_sec_level = sec_level;
2387 if (hcon->role == HCI_ROLE_MASTER)
2388 if (smp_ltk_encrypt(conn, hcon->pending_sec_level))
2393 bt_dev_err(hcon->hdev, "security requested but not available");
2413 if (hci_dev_test_flag(hcon->hdev, HCI_SC_ENABLED)) {
2415 if (hci_dev_test_flag(hcon->hdev, HCI_SSP_ENABLED))
2422 if (!hci_dev_test_flag(hcon->hdev, HCI_FORCE_NO_MITM)) {
2426 if (hcon->io_capability != HCI_IO_NO_INPUT_OUTPUT ||
2427 hcon->pending_sec_level > BT_SECURITY_MEDIUM)
2431 if (hcon->role == HCI_ROLE_MASTER) {
2458 struct hci_conn *hcon;
2467 hcon = hci_conn_hash_lookup_le(hdev, bdaddr, addr_type);
2468 if (!hcon)
2471 conn = hcon->l2cap_data;
2508 bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
2514 if (hci_is_blocked_key(conn->hcon->hdev, HCI_BLOCKED_KEY_TYPE_LTK,
2516 bt_dev_warn_ratelimited(conn->hcon->hdev,
2518 &conn->hcon->dst);
2536 struct hci_dev *hdev = conn->hcon->hdev;
2537 struct hci_conn *hcon = conn->hcon;
2556 authenticated = (hcon->sec_level == BT_SECURITY_HIGH);
2557 ltk = hci_add_ltk(hdev, &hcon->dst, hcon->dst_type, SMP_LTK,
2573 bt_dev_dbg(conn->hcon->hdev, "");
2579 if (hci_is_blocked_key(conn->hcon->hdev, HCI_BLOCKED_KEY_TYPE_IRK,
2581 bt_dev_warn_ratelimited(conn->hcon->hdev,
2583 &conn->hcon->dst);
2602 struct hci_conn *hcon = conn->hcon;
2605 bt_dev_dbg(hcon->hdev, "");
2630 bt_dev_err(hcon->hdev, "ignoring IRK with no identity address");
2639 if (hci_is_identity_address(&hcon->dst, hcon->dst_type) &&
2640 (bacmp(&info->bdaddr, &hcon->dst) ||
2641 info->addr_type != hcon->dst_type)) {
2642 bt_dev_err(hcon->hdev,
2650 if (hci_bdaddr_is_rpa(&hcon->dst, hcon->dst_type))
2651 bacpy(&rpa, &hcon->dst);
2655 smp->remote_irk = hci_add_irk(conn->hcon->hdev, &smp->id_addr,
2672 bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
2684 if (conn->hcon->sec_level > BT_SECURITY_MEDIUM)
2699 struct hci_conn *hcon = conn->hcon;
2712 if (hcon->out) {
2744 struct hci_conn *hcon = conn->hcon;
2747 struct hci_dev *hdev = hcon->hdev;
2781 if (!hcon->out) {
2820 hcon->pending_sec_level = BT_SECURITY_MEDIUM;
2822 hcon->pending_sec_level = BT_SECURITY_FIPS;
2828 get_random_bytes(&hcon->passkey_notify,
2829 sizeof(hcon->passkey_notify));
2830 hcon->passkey_notify %= 1000000;
2831 hcon->passkey_entered = 0;
2833 if (mgmt_user_passkey_notify(hdev, &hcon->dst, hcon->type,
2834 hcon->dst_type,
2835 hcon->passkey_notify,
2836 hcon->passkey_entered))
2843 if (hcon->out)
2852 if (hcon->out)
2856 if (mgmt_user_passkey_request(hdev, &hcon->dst, hcon->type,
2857 hcon->dst_type))
2867 if (conn->hcon->out)
2885 struct hci_conn *hcon = conn->hcon;
2891 bt_dev_dbg(hcon->hdev, "conn %p", conn);
2896 memcpy(a, &hcon->init_addr, 6);
2897 memcpy(b, &hcon->resp_addr, 6);
2898 a[6] = hcon->init_addr_type;
2899 b[6] = hcon->resp_addr_type;
2901 if (hcon->out) {
2914 put_unaligned_le32(hcon->passkey_notify, r);
2926 if (!hcon->out) {
2938 if (hcon->out) {
2939 hci_le_start_enc(hcon, 0, 0, smp->tk, smp->enc_key_size);
2940 hcon->enc_key_size = smp->enc_key_size;
2951 bt_dev_dbg(conn->hcon->hdev, "value 0x%02x", kp->value);
2959 struct hci_conn *hcon = conn->hcon;
2967 if (!hci_dev_test_flag(hcon->hdev, HCI_LE_ENABLED)) {
3048 bt_dev_dbg(hcon->hdev, "Unknown command code 0x%2.2x", code);
3063 bt_dev_err(hcon->hdev, "unexpected SMP command 0x%02x from %pMR",
3064 code, &hcon->dst);
3073 bt_dev_dbg(conn->hcon->hdev, "chan %p", chan);
3085 struct hci_conn *hcon = conn->hcon;
3086 struct hci_dev *hdev = hcon->hdev;
3093 if (!test_bit(HCI_CONN_NEW_LINK_KEY, &hcon->flags))
3097 if (!test_bit(HCI_CONN_ENCRYPT, &hcon->flags))
3101 if (hcon->role != HCI_ROLE_MASTER)
3109 if (!test_bit(HCI_CONN_AES_CCM, &hcon->flags) &&
3118 if (!lmp_host_le_capable(hcon))
3153 struct hci_conn *hcon = conn->hcon;
3155 bt_dev_dbg(hcon->hdev, "chan %p", chan);
3157 if (hcon->type == ACL_LINK) {
3165 if (!test_bit(HCI_CONN_ENCRYPT, &hcon->flags))
3176 struct hci_conn *hcon = conn->hcon;
3178 bt_dev_dbg(hcon->hdev, "chan %p", chan);
3188 if (hcon->type == ACL_LINK && test_bit(HCI_CONN_ENCRYPT, &hcon->flags))
3196 bt_dev_dbg(chan->conn->hcon->hdev, "chan %p", chan);
3205 hci_disconnect(chan->conn->hcon, HCI_ERROR_AUTH_FAILURE);