Home | History | Annotate | Download | only in wpa_supplicant

Lines Matching refs:peerkey

94  * GroupKey and PeerKey require encryption, otherwise, encryption is optional.
110 * already taken by 802.11ma (PeerKey). Need to update the values here once
224 struct wpa_peerkey *peerkey);
1049 struct wpa_peerkey *peerkey;
1053 ssid == NULL || !ssid->peerkey)
1076 peerkey = os_malloc(sizeof(*peerkey));
1077 if (peerkey == NULL)
1079 os_memset(peerkey, 0, sizeof(*peerkey));
1080 peerkey->initiator = 1;
1081 os_memcpy(peerkey->addr, peer, ETH_ALEN);
1088 hdr = (struct rsn_ie_hdr *) peerkey->rsnie_i;
1112 hdr->len = (pos - peerkey->rsnie_i) - 2;
1113 peerkey->rsnie_i_len = pos - peerkey->rsnie_i;
1115 peerkey->rsnie_i, peerkey->rsnie_i_len);
1117 kde_len = peerkey->rsnie_i_len + 2 + RSN_SELECTOR_LEN + ETH_ALEN;
1123 wpa_supplicant_peerkey_free(sm, peerkey);
1136 if (hostapd_get_rand(peerkey->inonce, WPA_NONCE_LEN)) {
1140 wpa_supplicant_peerkey_free(sm, peerkey);
1143 peerkey->inonce, WPA_NONCE_LEN);
1151 pos = wpa_add_ie(pos, peerkey->rsnie_i, peerkey->rsnie_i_len);
1160 peerkey->next = sm->peerkey;
1161 sm->peerkey = peerkey;
2117 struct wpa_peerkey *peerkey = timeout_ctx;
2124 struct wpa_peerkey *peerkey)
2126 eloop_cancel_timeout(wpa_supplicant_smk_timeout, sm, peerkey);
2127 os_free(peerkey);
2199 int ver, struct wpa_peerkey *peerkey)
2208 kde_len = peerkey->rsnie_p_len +
2226 os_memcpy(reply->key_nonce, peerkey->pnonce, WPA_NONCE_LEN);
2232 pos = wpa_add_ie(pos, peerkey->rsnie_p, peerkey->rsnie_p_len);
2235 pos = wpa_add_kde(pos, RSN_KEY_DATA_MAC_ADDR, peerkey->addr, ETH_ALEN);
2239 peerkey->inonce, WPA_NONCE_LEN);
2254 struct wpa_peerkey *peerkey;
2263 if (ssid == NULL || !ssid->peerkey || sm->proto != WPA_PROTO_RSN) {
2298 wpa_printf(MSG_DEBUG, "RSN: Using CCMP for PeerKey");
2301 wpa_printf(MSG_DEBUG, "RSN: Using TKIP for PeerKey");
2314 peerkey = os_malloc(sizeof(*peerkey));
2315 if (peerkey == NULL)
2317 os_memset(peerkey, 0, sizeof(*peerkey));
2318 os_memcpy(peerkey->addr, kde.mac_addr, ETH_ALEN);
2319 os_memcpy(peerkey->inonce, key->key_nonce, WPA_NONCE_LEN);
2320 os_memcpy(peerkey->rsnie_i, kde.rsn_ie, kde.rsn_ie_len);
2321 peerkey->rsnie_i_len = kde.rsn_ie_len;
2322 peerkey->cipher = cipher;
2324 if (hostapd_get_rand(peerkey->pnonce, WPA_NONCE_LEN)) {
2327 wpa_supplicant_peerkey_free(sm, peerkey);
2331 hdr = (struct rsn_ie_hdr *) peerkey->rsnie_p;
2348 hdr->len = (pos - peerkey->rsnie_p) - 2;
2349 peerkey->rsnie_p_len = pos - peerkey->rsnie_p;
2351 peerkey->rsnie_p, peerkey->rsnie_p_len);
2353 wpa_supplicant_send_smk_m3(sm, src_addr, key, ver, peerkey);
2355 peerkey->next = sm->peerkey;
2356 sm->peerkey = peerkey;
2394 struct wpa_peerkey *peerkey)
2412 if (peerkey->cipher == WPA_CIPHER_CCMP)
2420 if (peerkey->cipher == WPA_CIPHER_CCMP)
2425 os_memcpy(msg->replay_counter, peerkey->replay_counter,
2427 inc_byte_array(peerkey->replay_counter, WPA_REPLAY_COUNTER_LEN);
2431 peerkey->smkid, PMKID_LEN);
2433 if (hostapd_get_rand(peerkey->inonce, WPA_NONCE_LEN)) {
2440 peerkey->inonce, WPA_NONCE_LEN);
2441 os_memcpy(msg->key_nonce, peerkey->inonce, WPA_NONCE_LEN);
2444 MAC2STR(peerkey->addr));
2445 wpa_eapol_key_send(sm, NULL, ver, peerkey->addr, ETH_P_EAPOL,
2451 struct wpa_peerkey *peerkey)
2460 kde_len = peerkey->rsnie_i_len +
2471 if (peerkey->cipher == WPA_CIPHER_CCMP)
2480 if (peerkey->cipher == WPA_CIPHER_CCMP)
2485 os_memcpy(msg->replay_counter, peerkey->replay_counter,
2487 inc_byte_array(peerkey->replay_counter, WPA_REPLAY_COUNTER_LEN);
2491 pos = wpa_add_ie(pos, peerkey->rsnie_i, peerkey->rsnie_i_len);
2492 lifetime = host_to_be32(peerkey->lifetime);
2496 os_memcpy(msg->key_nonce, peerkey->inonce, WPA_NONCE_LEN);
2499 MAC2STR(peerkey->addr));
2500 wpa_eapol_key_send(sm, peerkey->stk.kck, ver, peerkey->addr,
2510 struct wpa_peerkey *peerkey;
2516 if (ssid == NULL || !ssid->peerkey || sm->proto != WPA_PROTO_RSN) {
2537 for (peerkey = sm->peerkey; peerkey; peerkey = peerkey->next) {
2538 if (os_memcmp(peerkey->addr, kde.mac_addr, ETH_ALEN) == 0 &&
2539 os_memcmp(peerkey->initiator ? peerkey->inonce :
2540 peerkey->pnonce,
2544 if (peerkey == NULL) {
2551 if (peerkey->initiator) {
2563 if (os_memcmp(key->key_nonce, peerkey->inonce, WPA_NONCE_LEN)
2570 if (os_memcmp(kde.smk + PMK_LEN, peerkey->inonce,
2577 os_memcpy(peerkey->rsnie_p, kde.rsn_ie, kde.rsn_ie_len);
2578 peerkey->rsnie_p_len = kde.rsn_ie_len;
2579 os_memcpy(peerkey->pnonce, kde.nonce, WPA_NONCE_LEN);
2583 wpa_printf(MSG_DEBUG, "RSN: Using CCMP for PeerKey");
2584 peerkey->cipher = WPA_CIPHER_CCMP;
2586 wpa_printf(MSG_DEBUG, "RSN: Using TKIP for PeerKey");
2587 peerkey->cipher = WPA_CIPHER_TKIP;
2602 if (os_memcmp(kde.smk + PMK_LEN, peerkey->pnonce,
2609 if (os_memcmp(kde.nonce, peerkey->inonce, WPA_NONCE_LEN) != 0)
2617 os_memcpy(peerkey->smk, kde.smk, PMK_LEN);
2618 peerkey->smk_complete = 1;
2619 wpa_hexdump_key(MSG_DEBUG, "RSN: SMK", peerkey->smk, PMK_LEN);
2624 peerkey->lifetime = lifetime;
2626 peerkey->expiration = now.sec + lifetime;
2628 sm, peerkey);
2630 if (peerkey->initiator) {
2631 rsn_smkid(peerkey->smk, peerkey->pnonce, peerkey->addr,
2632 peerkey->inonce, sm->own_addr, peerkey->smkid);
2633 wpa_supplicant_send_stk_1_of_4(sm, peerkey);
2635 rsn_smkid(peerkey->smk, peerkey->pnonce, sm->own_addr,
2636 peerkey->inonce, peerkey->addr, peerkey->smkid);
2638 wpa_hexdump(MSG_DEBUG, "RSN: SMKID", peerkey->smkid, PMKID_LEN);
2656 if (ssid == NULL || !ssid->peerkey || sm->proto != WPA_PROTO_RSN) {
2686 struct wpa_peerkey *peerkey;
2688 for (peerkey = sm->peerkey; peerkey; peerkey = peerkey->next) {
2689 if (os_memcmp(peerkey->addr, kde.mac_addr, ETH_ALEN) ==
2693 if (peerkey == NULL) {
2706 struct wpa_peerkey *peerkey,
2718 MACSTR " (ver=%d)", MAC2STR(peerkey->addr), ver);
2730 if (os_memcmp(ie.pmkid, peerkey->smkid, PMKID_LEN) != 0) {
2736 if (hostapd_get_rand(peerkey->pnonce, WPA_NONCE_LEN)) {
2742 peerkey->pnonce, WPA_NONCE_LEN);
2746 stk = &peerkey->tstk;
2747 wpa_pmk_to_ptk(peerkey->smk, PMK_LEN, "Peer key expansion",
2748 sm->own_addr, peerkey->addr,
2749 peerkey->pnonce, key->key_nonce,
2755 peerkey->tstk_set = 1;
2757 kde_buf_len = peerkey->rsnie_p_len +
2764 pos = wpa_add_ie(pos, peerkey->rsnie_p, peerkey->rsnie_p_len);
2765 lifetime = host_to_be32(peerkey->lifetime);
2768 pos = wpa_add_kde(pos, RSN_KEY_DATA_PMKID, peerkey->smkid, PMKID_LEN);
2770 if (wpa_supplicant_send_2_of_4(sm, peerkey->addr, key, ver,
2771 peerkey->pnonce, kde_buf, kde_buf_len,
2778 os_memcpy(peerkey->inonce, key->key_nonce, WPA_NONCE_LEN);
2783 struct wpa_peerkey *peerkey,
2794 if (lifetime >= peerkey->lifetime) {
2797 "seconds - ignored", lifetime, peerkey->lifetime);
2803 lifetime, peerkey->lifetime);
2804 peerkey->lifetime = lifetime;
2807 peerkey->expiration = now.sec + lifetime;
2808 eloop_cancel_timeout(wpa_supplicant_smk_timeout, sm, peerkey);
2810 sm, peerkey);
2815 struct wpa_peerkey *peerkey,
2824 MACSTR " (ver=%d)", MAC2STR(peerkey->addr), ver);
2839 if (os_memcmp(kde.pmkid, peerkey->smkid, PMKID_LEN) != 0) {
2845 if (kde.rsn_ie_len != peerkey->rsnie_p_len ||
2846 os_memcmp(kde.rsn_ie, peerkey->rsnie_p, kde.rsn_ie_len) != 0) {
2850 peerkey->rsnie_p, peerkey->rsnie_p_len);
2856 wpa_supplicant_update_smk_lifetime(sm, peerkey, &kde);
2858 wpa_supplicant_send_stk_3_of_4(sm, peerkey);
2859 os_memcpy(peerkey->pnonce, key->key_nonce, WPA_NONCE_LEN);
2864 struct wpa_peerkey *peerkey,
2875 MACSTR " (ver=%d)", MAC2STR(peerkey->addr), ver);
2890 if (kde.rsn_ie_len != peerkey->rsnie_i_len ||
2891 os_memcmp(kde.rsn_ie, peerkey->rsnie_i, kde.rsn_ie_len) != 0) {
2896 peerkey->rsnie_i, peerkey->rsnie_i_len);
2903 if (os_memcmp(peerkey->inonce, key->key_nonce, WPA_NONCE_LEN) != 0) {
2907 MAC2STR(peerkey->addr));
2911 wpa_supplicant_update_smk_lifetime(sm, peerkey, &kde);
2913 if (wpa_supplicant_send_4_of_4(sm, peerkey->addr, key, ver,
2915 NULL, 0, &peerkey->stk))
2918 _key = (u8 *) peerkey->stk.tk1;
2919 if (peerkey->cipher == WPA_CIPHER_TKIP) {
2930 if (wpa_sm_set_key(sm, peerkey->cipher, peerkey->addr, 0, 1,
2940 struct wpa_peerkey *peerkey,
2947 MACSTR " (ver=%d)", MAC2STR(peerkey->addr), ver);
2950 if (wpa_sm_set_key(sm, peerkey->cipher, peerkey->addr, 0, 1,
2951 rsc, sizeof(rsc), (u8 *) peerkey->stk.tk1,
2952 peerkey->cipher == WPA_CIPHER_TKIP ? 32 : 16) < 0) {
3214 struct wpa_sm *sm, struct wpa_peerkey *peerkey,
3220 if (peerkey->initiator && !peerkey->stk_set) {
3221 wpa_pmk_to_ptk(peerkey->smk, PMK_LEN, "Peer key expansion",
3222 sm->own_addr, peerkey->addr,
3223 peerkey->inonce, key->key_nonce,
3224 (u8 *) &peerkey->stk, sizeof(peerkey->stk));
3225 peerkey->stk_set = 1;
3229 if (peerkey->tstk_set) {
3231 wpa_eapol_key_mic(peerkey->tstk.kck, ver, buf, len,
3238 peerkey->tstk_set = 0;
3239 peerkey->stk_set = 1;
3240 os_memcpy(&peerkey->stk, &peerkey->tstk,
3241 sizeof(peerkey->stk));
3245 if (!ok && peerkey->stk_set) {
3247 wpa_eapol_key_mic(peerkey->stk.kck, ver, buf, len,
3263 os_memcpy(peerkey->replay_counter, key->replay_counter,
3265 peerkey->replay_counter_set = 1;
3395 struct wpa_peerkey *peerkey = NULL;
3476 for (peerkey = sm->peerkey; peerkey; peerkey = peerkey->next) {
3477 if (os_memcmp(peerkey->addr, src_addr, ETH_ALEN) == 0)
3481 if (!(key_info & WPA_KEY_INFO_SMK_MESSAGE) && peerkey) {
3482 if (!peerkey->initiator && peerkey->replay_counter_set &&
3483 os_memcmp(key->replay_counter, peerkey->replay_counter,
3489 } else if (peerkey->initiator) {
3494 if (os_memcmp(_tmp, peerkey->replay_counter,
3504 if (peerkey && peerkey->initiator && (key_info & WPA_KEY_INFO_ACK)) {
3510 if (!peerkey && sm->rx_replay_counter_set &&
3520 && (peerkey == NULL || !peerkey->initiator)
3533 if ((key_info & WPA_KEY_INFO_MIC) && !peerkey &&
3538 if ((key_info & WPA_KEY_INFO_MIC) && peerkey &&
3540 sm, peerkey, key, ver, tmp, data_len))
3569 if (peerkey) {
3573 wpa_supplicant_process_stk_3_of_4(sm, peerkey,
3577 wpa_supplicant_process_stk_1_of_4(sm, peerkey,
3581 wpa_supplicant_process_stk_4_of_4(sm, peerkey,
3585 wpa_supplicant_process_stk_2_of_4(sm, peerkey,
3852 struct wpa_peerkey *prev, *peerkey = sm->peerkey;
3853 while (peerkey) {
3854 prev = peerkey;
3855 peerkey = peerkey->next;