Lines Matching refs:hcon

599 	bt_dev_dbg(conn->hcon->hdev, "code 0x%2.2x", code);
653 struct hci_conn *hcon = conn->hcon;
654 struct hci_dev *hdev = hcon->hdev;
681 if (hcon->dst_type == ADDR_LE_DEV_PUBLIC)
686 oob_data = hci_find_remote_oob_data(hdev, &hcon->dst,
702 req->io_capability = conn->hcon->io_capability;
713 rsp->io_capability = conn->hcon->io_capability;
726 struct hci_dev *hdev = conn->hcon->hdev;
729 if (conn->hcon->pending_sec_level == BT_SECURITY_FIPS &&
746 struct hci_conn *hcon = conn->hcon;
754 mgmt_smp_complete(hcon, complete);
767 !hci_dev_test_flag(hcon->hdev, HCI_KEEP_DEBUG_KEYS)) {
793 hci_conn_drop(hcon);
798 struct hci_conn *hcon = conn->hcon;
805 mgmt_auth_failed(hcon, HCI_ERROR_AUTH_FAILURE);
853 struct hci_conn *hcon = conn->hcon;
863 bt_dev_dbg(hcon->hdev, "auth:%d lcl:%d rem:%d", auth, local_io,
884 hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
890 ret = mgmt_user_confirm_request(hcon->hdev, &hcon->dst,
891 hcon->type,
892 hcon->dst_type,
909 if (hcon->pending_sec_level < BT_SECURITY_HIGH)
910 hcon->pending_sec_level = BT_SECURITY_HIGH;
917 if (hcon->role == HCI_ROLE_MASTER)
929 bt_dev_dbg(hcon->hdev, "PassKey: %d", passkey);
934 ret = mgmt_user_passkey_request(hcon->hdev, &hcon->dst,
935 hcon->type, hcon->dst_type);
937 ret = mgmt_user_confirm_request(hcon->hdev, &hcon->dst,
938 hcon->type, hcon->dst_type,
941 ret = mgmt_user_passkey_notify(hcon->hdev, &hcon->dst,
942 hcon->type, hcon->dst_type,
954 bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
957 conn->hcon->init_addr_type, &conn->hcon->init_addr,
958 conn->hcon->resp_addr_type, &conn->hcon->resp_addr,
967 if (conn->hcon->out)
978 struct hci_conn *hcon = conn->hcon;
982 bt_dev_dbg(conn->hcon->hdev, "conn %p %s", conn,
983 conn->hcon->out ? "initiator" : "responder");
986 hcon->init_addr_type, &hcon->init_addr,
987 hcon->resp_addr_type, &hcon->resp_addr, confirm);
992 bt_dev_err(hcon->hdev, "pairing failed "
997 if (hcon->out) {
1004 if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &hcon->flags))
1007 hci_le_start_enc(hcon, ediv, rand, stk, smp->enc_key_size);
1008 hcon->enc_key_size = smp->enc_key_size;
1009 set_bit(HCI_CONN_STK_ENCRYPT, &hcon->flags);
1020 if (hcon->pending_sec_level == BT_SECURITY_HIGH)
1029 hci_add_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
1040 struct hci_conn *hcon = conn->hcon;
1041 struct hci_dev *hdev = hcon->hdev;
1046 if (hcon->type == ACL_LINK) {
1047 if (hcon->key_type == HCI_LK_DEBUG_COMBINATION)
1051 &hcon->flags);
1062 smp->remote_irk->link_type = hcon->type;
1069 if (hcon->type == LE_LINK) {
1070 bacpy(&hcon->dst, &smp->remote_irk->bdaddr);
1071 hcon->dst_type = smp->remote_irk->addr_type;
1077 smp->csrk->link_type = hcon->type;
1078 smp->csrk->bdaddr_type = hcon->dst_type;
1079 bacpy(&smp->csrk->bdaddr, &hcon->dst);
1084 smp->responder_csrk->link_type = hcon->type;
1085 smp->responder_csrk->bdaddr_type = hcon->dst_type;
1086 bacpy(&smp->responder_csrk->bdaddr, &hcon->dst);
1091 smp->ltk->link_type = hcon->type;
1092 smp->ltk->bdaddr_type = hcon->dst_type;
1093 bacpy(&smp->ltk->bdaddr, &hcon->dst);
1098 smp->responder_ltk->link_type = hcon->type;
1099 smp->responder_ltk->bdaddr_type = hcon->dst_type;
1100 bacpy(&smp->responder_ltk->bdaddr, &hcon->dst);
1110 else if (hcon->sec_level == BT_SECURITY_FIPS)
1115 key = hci_add_link_key(hdev, smp->conn->hcon, &hcon->dst,
1118 key->link_type = hcon->type;
1119 key->bdaddr_type = hcon->dst_type;
1136 struct hci_conn *hcon = smp->conn->hcon;
1144 if (hcon->pending_sec_level == BT_SECURITY_FIPS)
1149 smp->ltk = hci_add_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
1208 struct hci_conn *hcon = smp->conn->hcon;
1209 struct hci_dev *hdev = hcon->hdev;
1212 key = hci_find_link_key(hdev, &hcon->dst);
1245 struct hci_conn *hcon = conn->hcon;
1246 struct hci_dev *hdev = hcon->hdev;
1254 if (hcon->out && (smp->remote_key_dist & KEY_DIST_MASK)) {
1261 if (hcon->out) {
1270 if (hcon->type == LE_LINK && (*keydist & SMP_DIST_LINK_KEY))
1272 if (hcon->type == ACL_LINK && (*keydist & SMP_DIST_ENC_KEY))
1302 authenticated = hcon->sec_level == BT_SECURITY_HIGH;
1303 ltk = hci_add_ltk(hdev, &hcon->dst, hcon->dst_type,
1331 bacpy(&addrinfo.bdaddr, &hcon->src);
1332 addrinfo.addr_type = hcon->src_type;
1349 if (hcon->sec_level > BT_SECURITY_MEDIUM)
1380 bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
1382 hci_disconnect(conn->hcon, HCI_ERROR_REMOTE_USER_TERM);
1387 struct hci_conn *hcon = conn->hcon;
1397 bt_dev_err(hcon->hdev, "Unable to create CMAC crypto context");
1403 bt_dev_err(hcon->hdev, "Unable to create ECDH crypto context");
1414 hci_conn_hold(hcon);
1427 struct hci_conn *hcon = smp->conn->hcon;
1430 if (hcon->out) {
1438 memcpy(a, &hcon->init_addr, 6);
1439 memcpy(b, &hcon->resp_addr, 6);
1440 a[6] = hcon->init_addr_type;
1441 b[6] = hcon->resp_addr_type;
1448 struct hci_conn *hcon = smp->conn->hcon;
1453 memcpy(a, &hcon->init_addr, 6);
1454 memcpy(b, &hcon->resp_addr, 6);
1455 a[6] = hcon->init_addr_type;
1456 b[6] = hcon->resp_addr_type;
1458 if (hcon->out) {
1471 put_unaligned_le32(hcon->passkey_notify, r);
1485 struct hci_conn *hcon = conn->hcon;
1489 r = ((hcon->passkey_notify >> smp->passkey_round) & 0x01);
1506 struct hci_conn *hcon = conn->hcon;
1507 struct hci_dev *hdev = hcon->hdev;
1516 r = ((hcon->passkey_notify >> smp->passkey_round) & 0x01);
1537 if (!hcon->out) {
1565 if (hcon->out) {
1576 if (!hcon->out)
1593 struct hci_conn *hcon = conn->hcon;
1606 hcon->passkey_notify = le32_to_cpu(passkey);
1621 if (hcon->out) {
1632 int smp_user_confirm_reply(struct hci_conn *hcon, u16 mgmt_op, __le32 passkey)
1634 struct l2cap_conn *conn = hcon->l2cap_data;
1640 bt_dev_dbg(conn->hcon->hdev, "");
1666 bt_dev_dbg(conn->hcon->hdev, "PassKey: %d", value);
1702 struct hci_dev *hdev = conn->hcon->hdev;
1722 req->max_key_size = conn->hcon->enc_key_size;
1732 rsp->max_key_size = conn->hcon->enc_key_size;
1743 struct hci_dev *hdev = conn->hcon->hdev;
1753 if (conn->hcon->role != HCI_ROLE_SLAVE)
1786 if (conn->hcon->type == ACL_LINK) {
1788 if (!test_bit(HCI_CONN_AES_CCM, &conn->hcon->flags) &&
1823 if (conn->hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
1828 if (sec_level > conn->hcon->pending_sec_level)
1829 conn->hcon->pending_sec_level = sec_level;
1832 if (conn->hcon->pending_sec_level >= BT_SECURITY_HIGH) {
1835 method = get_auth_method(smp, conn->hcon->io_capability,
1879 struct hci_dev *hdev = smp->conn->hcon->hdev;
1935 struct hci_dev *hdev = conn->hcon->hdev;
1944 if (conn->hcon->role != HCI_ROLE_MASTER)
1979 if (conn->hcon->type == ACL_LINK) {
1988 else if (conn->hcon->pending_sec_level > BT_SECURITY_HIGH)
1989 conn->hcon->pending_sec_level = BT_SECURITY_HIGH;
1992 if (conn->hcon->pending_sec_level >= BT_SECURITY_HIGH) {
2034 bt_dev_dbg(conn->hcon->hdev, "");
2039 if (conn->hcon->out) {
2055 struct hci_conn *hcon = conn->hcon;
2056 struct hci_dev *hdev = hcon->hdev;
2061 if (hcon->out)
2093 struct hci_conn *hcon = conn->hcon;
2094 struct hci_dev *hdev = hcon->hdev;
2097 hcon->out ? "initiator" : "responder");
2119 if (conn->hcon->out) {
2138 struct hci_conn *hcon = conn->hcon;
2143 bt_dev_dbg(hcon->hdev, "conn %p", conn);
2154 if (hcon->out) {
2167 if (!hcon->out)
2178 if (hcon->out) {
2201 if (hci_find_ltk(hcon->hdev, &hcon->dst, hcon->dst_type,
2202 hcon->role)) {
2219 if (hcon->out) {
2236 err = mgmt_user_confirm_request(hcon->hdev, &hcon->dst, hcon->type,
2237 hcon->dst_type, passkey, confirm_hint);
2249 struct hci_conn *hcon = conn->hcon;
2251 key = hci_find_ltk(hcon->hdev, &hcon->dst, hcon->dst_type, hcon->role);
2258 if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &hcon->flags))
2261 hci_le_start_enc(hcon, key->ediv, key->rand, key->val, key->enc_size);
2262 hcon->enc_key_size = key->enc_size;
2265 clear_bit(HCI_CONN_STK_ENCRYPT, &hcon->flags);
2270 bool smp_sufficient_security(struct hci_conn *hcon, u8 sec_level,
2283 test_bit(HCI_CONN_STK_ENCRYPT, &hcon->flags) &&
2284 hci_find_ltk(hcon->hdev, &hcon->dst, hcon->dst_type, hcon->role))
2287 if (hcon->sec_level >= sec_level)
2297 struct hci_conn *hcon = conn->hcon;
2298 struct hci_dev *hdev = hcon->hdev;
2307 if (hcon->role != HCI_ROLE_MASTER)
2315 if (hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
2320 if (smp_sufficient_security(hcon, sec_level, SMP_USE_LTK)) {
2325 smp_ltk_encrypt(conn, hcon->sec_level);
2329 if (sec_level > hcon->pending_sec_level)
2330 hcon->pending_sec_level = sec_level;
2332 if (smp_ltk_encrypt(conn, hcon->pending_sec_level))
2357 int smp_conn_security(struct hci_conn *hcon, __u8 sec_level)
2359 struct l2cap_conn *conn = hcon->l2cap_data;
2365 bt_dev_dbg(hcon->hdev, "conn %p hcon %p level 0x%2.2x", conn, hcon,
2372 if (!hci_dev_test_flag(hcon->hdev, HCI_LE_ENABLED))
2375 if (smp_sufficient_security(hcon, sec_level, SMP_USE_LTK))
2378 if (sec_level > hcon->pending_sec_level)
2379 hcon->pending_sec_level = sec_level;
2381 if (hcon->role == HCI_ROLE_MASTER)
2382 if (smp_ltk_encrypt(conn, hcon->pending_sec_level))
2387 bt_dev_err(hcon->hdev, "security requested but not available");
2407 if (hci_dev_test_flag(hcon->hdev, HCI_SC_ENABLED)) {
2409 if (hci_dev_test_flag(hcon->hdev, HCI_SSP_ENABLED))
2416 if (!hci_dev_test_flag(hcon->hdev, HCI_FORCE_NO_MITM)) {
2420 if (hcon->io_capability != HCI_IO_NO_INPUT_OUTPUT ||
2421 hcon->pending_sec_level > BT_SECURITY_MEDIUM)
2425 if (hcon->role == HCI_ROLE_MASTER) {
2452 struct hci_conn *hcon;
2461 hcon = hci_conn_hash_lookup_le(hdev, bdaddr, addr_type);
2462 if (!hcon)
2465 conn = hcon->l2cap_data;
2502 bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
2508 if (hci_is_blocked_key(conn->hcon->hdev, HCI_BLOCKED_KEY_TYPE_LTK,
2510 bt_dev_warn_ratelimited(conn->hcon->hdev,
2512 &conn->hcon->dst);
2530 struct hci_dev *hdev = conn->hcon->hdev;
2531 struct hci_conn *hcon = conn->hcon;
2550 authenticated = (hcon->sec_level == BT_SECURITY_HIGH);
2551 ltk = hci_add_ltk(hdev, &hcon->dst, hcon->dst_type, SMP_LTK,
2567 bt_dev_dbg(conn->hcon->hdev, "");
2573 if (hci_is_blocked_key(conn->hcon->hdev, HCI_BLOCKED_KEY_TYPE_IRK,
2575 bt_dev_warn_ratelimited(conn->hcon->hdev,
2577 &conn->hcon->dst);
2596 struct hci_conn *hcon = conn->hcon;
2599 bt_dev_dbg(hcon->hdev, "");
2624 bt_dev_err(hcon->hdev, "ignoring IRK with no identity address");
2633 if (hci_is_identity_address(&hcon->dst, hcon->dst_type) &&
2634 (bacmp(&info->bdaddr, &hcon->dst) ||
2635 info->addr_type != hcon->dst_type)) {
2636 bt_dev_err(hcon->hdev,
2644 if (hci_bdaddr_is_rpa(&hcon->dst, hcon->dst_type))
2645 bacpy(&rpa, &hcon->dst);
2649 smp->remote_irk = hci_add_irk(conn->hcon->hdev, &smp->id_addr,
2666 bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
2678 if (conn->hcon->sec_level > BT_SECURITY_MEDIUM)
2693 struct hci_conn *hcon = conn->hcon;
2706 if (hcon->out) {
2738 struct hci_conn *hcon = conn->hcon;
2741 struct hci_dev *hdev = hcon->hdev;
2775 if (!hcon->out) {
2814 hcon->pending_sec_level = BT_SECURITY_MEDIUM;
2816 hcon->pending_sec_level = BT_SECURITY_FIPS;
2822 get_random_bytes(&hcon->passkey_notify,
2823 sizeof(hcon->passkey_notify));
2824 hcon->passkey_notify %= 1000000;
2825 hcon->passkey_entered = 0;
2827 if (mgmt_user_passkey_notify(hdev, &hcon->dst, hcon->type,
2828 hcon->dst_type,
2829 hcon->passkey_notify,
2830 hcon->passkey_entered))
2837 if (hcon->out)
2846 if (hcon->out)
2850 if (mgmt_user_passkey_request(hdev, &hcon->dst, hcon->type,
2851 hcon->dst_type))
2861 if (conn->hcon->out)
2879 struct hci_conn *hcon = conn->hcon;
2885 bt_dev_dbg(hcon->hdev, "conn %p", conn);
2890 memcpy(a, &hcon->init_addr, 6);
2891 memcpy(b, &hcon->resp_addr, 6);
2892 a[6] = hcon->init_addr_type;
2893 b[6] = hcon->resp_addr_type;
2895 if (hcon->out) {
2908 put_unaligned_le32(hcon->passkey_notify, r);
2920 if (!hcon->out) {
2932 if (hcon->out) {
2933 hci_le_start_enc(hcon, 0, 0, smp->tk, smp->enc_key_size);
2934 hcon->enc_key_size = smp->enc_key_size;
2945 bt_dev_dbg(conn->hcon->hdev, "value 0x%02x", kp->value);
2953 struct hci_conn *hcon = conn->hcon;
2961 if (!hci_dev_test_flag(hcon->hdev, HCI_LE_ENABLED)) {
3042 bt_dev_dbg(hcon->hdev, "Unknown command code 0x%2.2x", code);
3057 bt_dev_err(hcon->hdev, "unexpected SMP command 0x%02x from %pMR",
3058 code, &hcon->dst);
3067 bt_dev_dbg(conn->hcon->hdev, "chan %p", chan);
3079 struct hci_conn *hcon = conn->hcon;
3080 struct hci_dev *hdev = hcon->hdev;
3087 if (!test_bit(HCI_CONN_NEW_LINK_KEY, &hcon->flags))
3091 if (!test_bit(HCI_CONN_ENCRYPT, &hcon->flags))
3095 if (hcon->role != HCI_ROLE_MASTER)
3103 if (!test_bit(HCI_CONN_AES_CCM, &hcon->flags) &&
3112 if (!lmp_host_le_capable(hcon))
3147 struct hci_conn *hcon = conn->hcon;
3149 bt_dev_dbg(hcon->hdev, "chan %p", chan);
3151 if (hcon->type == ACL_LINK) {
3159 if (!test_bit(HCI_CONN_ENCRYPT, &hcon->flags))
3170 struct hci_conn *hcon = conn->hcon;
3172 bt_dev_dbg(hcon->hdev, "chan %p", chan);
3182 if (hcon->type == ACL_LINK && test_bit(HCI_CONN_ENCRYPT, &hcon->flags))
3190 bt_dev_dbg(chan->conn->hcon->hdev, "chan %p", chan);
3199 hci_disconnect(chan->conn->hcon, HCI_ERROR_AUTH_FAILURE);