• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/wpa/src/ap/

Lines Matching defs:wpa_auth

26 #include "wpa_auth.h"
626 static int wpa_ft_rrb_send(struct wpa_authenticator *wpa_auth, const u8 *dst,
629 if (wpa_auth->cb->send_ether == NULL)
632 return wpa_auth->cb->send_ether(wpa_auth->cb_ctx, dst, ETH_P_RRB,
637 static int wpa_ft_rrb_oui_send(struct wpa_authenticator *wpa_auth,
641 if (!wpa_auth->cb->send_oui)
645 return wpa_auth->cb->send_oui(wpa_auth->cb_ctx, dst, oui_suffix, data,
650 static int wpa_ft_action_send(struct wpa_authenticator *wpa_auth,
653 if (wpa_auth->cb->send_ft_action == NULL)
655 return wpa_auth->cb->send_ft_action(wpa_auth->cb_ctx, dst,
660 static const u8 * wpa_ft_get_psk(struct wpa_authenticator *wpa_auth,
664 if (wpa_auth->cb->get_psk == NULL)
666 return wpa_auth->cb->get_psk(wpa_auth->cb_ctx, addr, p2p_dev_addr,
672 wpa_ft_add_sta(struct wpa_authenticator *wpa_auth, const u8 *sta_addr)
674 if (wpa_auth->cb->add_sta == NULL)
676 return wpa_auth->cb->add_sta(wpa_auth->cb_ctx, sta_addr);
680 static int wpa_ft_set_vlan(struct wpa_authenticator *wpa_auth,
683 if (!wpa_auth->cb->set_vlan)
685 return wpa_auth->cb->set_vlan(wpa_auth->cb_ctx, sta_addr, vlan);
689 static int wpa_ft_get_vlan(struct wpa_authenticator *wpa_auth,
692 if (!wpa_auth->cb->get_vlan)
694 return wpa_auth->cb->get_vlan(wpa_auth->cb_ctx, sta_addr, vlan);
699 wpa_ft_set_identity(struct wpa_authenticator *wpa_auth, const u8 *sta_addr,
702 if (!wpa_auth->cb->set_identity)
704 return wpa_auth->cb->set_identity(wpa_auth->cb_ctx, sta_addr, identity,
710 wpa_ft_get_identity(struct wpa_authenticator *wpa_auth, const u8 *sta_addr,
714 if (!wpa_auth->cb->get_identity)
716 return wpa_auth->cb->get_identity(wpa_auth->cb_ctx, sta_addr, buf);
721 wpa_ft_set_radius_cui(struct wpa_authenticator *wpa_auth, const u8 *sta_addr,
724 if (!wpa_auth->cb->set_radius_cui)
726 return wpa_auth->cb->set_radius_cui(wpa_auth->cb_ctx, sta_addr,
732 wpa_ft_get_radius_cui(struct wpa_authenticator *wpa_auth, const u8 *sta_addr,
736 if (!wpa_auth->cb->get_radius_cui)
738 return wpa_auth->cb->get_radius_cui(wpa_auth->cb_ctx, sta_addr, buf);
743 wpa_ft_set_session_timeout(struct wpa_authenticator *wpa_auth,
746 if (!wpa_auth->cb->set_session_timeout)
748 wpa_auth->cb->set_session_timeout(wpa_auth->cb_ctx, sta_addr,
754 wpa_ft_get_session_timeout(struct wpa_authenticator *wpa_auth,
757 if (!wpa_auth->cb->get_session_timeout)
759 return wpa_auth->cb->get_session_timeout(wpa_auth->cb_ctx, sta_addr);
763 static int wpa_ft_add_tspec(struct wpa_authenticator *wpa_auth,
767 if (wpa_auth->cb->add_tspec == NULL) {
771 return wpa_auth->cb->add_tspec(wpa_auth->cb_ctx, sta_addr, tspec_ie,
777 static int wpa_channel_info(struct wpa_authenticator *wpa_auth,
780 if (!wpa_auth->cb->channel_info)
782 return wpa_auth->cb->channel_info(wpa_auth->cb_ctx, ci);
882 int (*cb)(struct wpa_authenticator *wpa_auth,
900 static void wpa_ft_rrb_seq_flush(struct wpa_authenticator *wpa_auth,
908 item->cb(wpa_auth, item->src_addr, item->enc,
924 wpa_ft_rrb_seq_req(struct wpa_authenticator *wpa_auth,
930 int (*cb)(struct wpa_authenticator *wpa_auth,
986 wpa_auth, item);
991 wpa_auth->addr, FT_PACKET_R0KH_R1KH_SEQ_REQ,
999 wpa_ft_rrb_oui_send(wpa_auth, src_addr, FT_PACKET_R0KH_R1KH_SEQ_REQ,
1092 wpa_ft_rrb_seq_accept(struct wpa_authenticator *wpa_auth,
1320 static int wpa_ft_store_pmk_r0(struct wpa_authenticator *wpa_auth,
1329 struct wpa_ft_pmk_cache *cache = wpa_auth->ft_pmk_cache;
1384 static int wpa_ft_fetch_pmk_r0(struct wpa_authenticator *wpa_auth,
1388 struct wpa_ft_pmk_cache *cache = wpa_auth->ft_pmk_cache;
1407 static int wpa_ft_store_pmk_r1(struct wpa_authenticator *wpa_auth,
1416 struct wpa_ft_pmk_cache *cache = wpa_auth->ft_pmk_cache;
1417 int max_expires_in = wpa_auth->conf.r1_max_key_lifetime;
1474 static int wpa_ft_fetch_pmk_r1(struct wpa_authenticator *wpa_auth,
1482 struct wpa_ft_pmk_cache *cache = wpa_auth->ft_pmk_cache;
1540 static void wpa_ft_rrb_lookup_r0kh(struct wpa_authenticator *wpa_auth,
1550 if (wpa_auth->conf.r0kh_list)
1551 r0kh = *wpa_auth->conf.r0kh_list;
1587 static void wpa_ft_rrb_lookup_r1kh(struct wpa_authenticator *wpa_auth,
1597 if (wpa_auth->conf.r1kh_list)
1598 r1kh = *wpa_auth->conf.r1kh_list;
1618 static int wpa_ft_rrb_check_r0kh(struct wpa_authenticator *wpa_auth,
1621 if (f_r0kh_id_len != wpa_auth->conf.r0_key_holder_len ||
1622 os_memcmp_const(f_r0kh_id, wpa_auth->conf.r0_key_holder,
1630 static int wpa_ft_rrb_check_r1kh(struct wpa_authenticator *wpa_auth,
1633 if (os_memcmp_const(f_r1kh_id, wpa_auth->conf.r1_key_holder,
1643 struct wpa_authenticator *wpa_auth = eloop_ctx;
1646 if (!wpa_auth->conf.r0kh_list)
1649 for (r0kh = *wpa_auth->conf.r0kh_list; r0kh; r0kh = r0kh->next) {
1659 *wpa_auth->conf.r0kh_list = r0kh->next;
1661 wpa_ft_rrb_seq_flush(wpa_auth, r0kh->seq, 0);
1667 static void wpa_ft_rrb_r0kh_replenish(struct wpa_authenticator *wpa_auth,
1672 wpa_auth, r0kh);
1676 static void wpa_ft_rrb_r0kh_timeout(struct wpa_authenticator *wpa_auth,
1679 eloop_cancel_timeout(wpa_ft_rrb_del_r0kh, wpa_auth, r0kh);
1683 wpa_auth, r0kh);
1688 wpa_ft_rrb_add_r0kh(struct wpa_authenticator *wpa_auth,
1695 if (!wpa_auth->conf.r0kh_list)
1712 r0kh->next = *wpa_auth->conf.r0kh_list;
1713 *wpa_auth->conf.r0kh_list = r0kh;
1717 wpa_auth, r0kh);
1728 struct wpa_authenticator *wpa_auth = eloop_ctx;
1731 if (!wpa_auth->conf.r1kh_list)
1734 for (r1kh = *wpa_auth->conf.r1kh_list; r1kh; r1kh = r1kh->next) {
1744 *wpa_auth->conf.r1kh_list = r1kh->next;
1746 wpa_ft_rrb_seq_flush(wpa_auth, r1kh->seq, 0);
1752 static void wpa_ft_rrb_r1kh_replenish(struct wpa_authenticator *wpa_auth,
1757 wpa_auth, r1kh);
1762 wpa_ft_rrb_add_r1kh(struct wpa_authenticator *wpa_auth,
1768 if (!wpa_auth->conf.r1kh_list)
1778 r1kh->next = *wpa_auth->conf.r1kh_list;
1779 *wpa_auth->conf.r1kh_list = r1kh;
1783 wpa_auth, r1kh);
1798 static void wpa_ft_deinit_seq(struct wpa_authenticator *wpa_auth)
1803 eloop_cancel_timeout(wpa_ft_rrb_seq_timeout, wpa_auth, ELOOP_ALL_CTX);
1805 if (wpa_auth->conf.r0kh_list)
1806 r0kh = *wpa_auth->conf.r0kh_list;
1812 wpa_ft_rrb_seq_flush(wpa_auth, r0kh->seq, 0);
1817 if (wpa_auth->conf.r1kh_list)
1818 r1kh = *wpa_auth->conf.r1kh_list;
1824 wpa_ft_rrb_seq_flush(wpa_auth, r1kh->seq, 0);
1831 static void wpa_ft_deinit_rkh_tmp(struct wpa_authenticator *wpa_auth)
1836 if (wpa_auth->conf.r0kh_list)
1837 r0kh = *wpa_auth->conf.r0kh_list;
1842 if (eloop_cancel_timeout(wpa_ft_rrb_del_r0kh, wpa_auth,
1847 *wpa_auth->conf.r0kh_list = r0kh_next;
1855 if (wpa_auth->conf.r1kh_list)
1856 r1kh = *wpa_auth->conf.r1kh_list;
1861 if (eloop_cancel_timeout(wpa_ft_rrb_del_r1kh, wpa_auth,
1866 *wpa_auth->conf.r1kh_list = r1kh_next;
1876 void wpa_ft_deinit(struct wpa_authenticator *wpa_auth)
1878 wpa_ft_deinit_seq(wpa_auth);
1879 wpa_ft_deinit_rkh_tmp(wpa_auth);
1883 static void wpa_ft_block_r0kh(struct wpa_authenticator *wpa_auth,
1888 if (!wpa_auth->conf.rkh_neg_timeout)
1891 wpa_ft_rrb_lookup_r0kh(wpa_auth, f_r0kh_id, f_r0kh_id_len,
1903 wpa_ft_rrb_r0kh_timeout(wpa_auth, r0kh,
1904 wpa_auth->conf.rkh_neg_timeout);
1907 wpa_ft_rrb_add_r0kh(wpa_auth, r0kh_wildcard, NULL, f_r0kh_id,
1909 wpa_auth->conf.rkh_neg_timeout);
1920 wpa_ft_block_r0kh(sm->wpa_auth, sm->r0kh_id, sm->r0kh_id_len);
1934 const u8 *key, *f_r1kh_id = sm->wpa_auth->conf.r1_key_holder;
1962 sm->wpa_auth->conf.rkh_pull_retries;
1965 wpa_ft_rrb_lookup_r0kh(sm->wpa_auth, sm->r0kh_id, sm->r0kh_id_len,
1969 r0kh_timeout = sm->wpa_auth->conf.rkh_pull_timeout / 1000 +
1972 wpa_ft_rrb_r0kh_replenish(sm->wpa_auth, r0kh, r0kh_timeout);
1976 r0kh = wpa_ft_rrb_add_r0kh(sm->wpa_auth, r0kh_wildcard,
1991 if (os_memcmp(r0kh->addr, sm->wpa_auth->addr, ETH_ALEN) == 0) {
2006 wpa_ft_rrb_seq_req(sm->wpa_auth, r0kh->seq, r0kh->addr,
2024 sm->wpa_auth->addr, FT_PACKET_R0KH_R1KH_PULL,
2036 tsecs = sm->wpa_auth->conf.rkh_pull_timeout / 1000;
2037 tusecs = (sm->wpa_auth->conf.rkh_pull_timeout % 1000) * 1000;
2040 wpa_ft_rrb_oui_send(sm->wpa_auth, r0kh->addr, FT_PACKET_R0KH_R1KH_PULL,
2052 int expires_in = sm->wpa_auth->conf.r0_key_lifetime;
2060 if (wpa_ft_get_vlan(sm->wpa_auth, sm->addr, &vlan) < 0) {
2066 identity_len = wpa_ft_get_identity(sm->wpa_auth, sm->addr, &identity);
2067 radius_cui_len = wpa_ft_get_radius_cui(sm->wpa_auth, sm->addr,
2069 session_timeout = wpa_ft_get_session_timeout(sm->wpa_auth, sm->addr);
2071 return wpa_ft_store_pmk_r0(sm->wpa_auth, sm->addr, pmk_r0, pmk_r0_len,
2086 const u8 *mdid = sm->wpa_auth->conf.mobility_domain;
2087 const u8 *r0kh = sm->wpa_auth->conf.r0_key_holder;
2088 size_t r0kh_len = sm->wpa_auth->conf.r0_key_holder_len;
2089 const u8 *r1kh = sm->wpa_auth->conf.r1_key_holder;
2090 const u8 *ssid = sm->wpa_auth->conf.ssid;
2091 size_t ssid_len = sm->wpa_auth->conf.ssid_len;
2092 int psk_local = sm->wpa_auth->conf.ft_psk_generate_local;
2093 int expires_in = sm->wpa_auth->conf.r0_key_lifetime;
2113 if (wpa_ft_get_vlan(sm->wpa_auth, sm->addr, &vlan) < 0) {
2119 identity_len = wpa_ft_get_identity(sm->wpa_auth, sm->addr, &identity);
2120 radius_cui_len = wpa_ft_get_radius_cui(sm->wpa_auth, sm->addr,
2122 session_timeout = wpa_ft_get_session_timeout(sm->wpa_auth, sm->addr);
2132 wpa_ft_store_pmk_r0(sm->wpa_auth, sm->addr, pmk_r0, pmk_r0_len,
2145 wpa_ft_store_pmk_r1(sm->wpa_auth, sm->addr, pmk_r1, pmk_r1_len,
2151 sm->addr, sm->wpa_auth->addr, sm->pmk_r1_name,
2156 static inline int wpa_auth_get_seqnum(struct wpa_authenticator *wpa_auth,
2159 if (wpa_auth->cb->get_seqnum == NULL)
2161 return wpa_auth->cb->get_seqnum(wpa_auth->cb_ctx, addr, idx, seq);
2220 wpa_auth_get_seqnum(sm->wpa_auth, NULL, gsm->GN, subelem + 5);
2253 igtk_len = wpa_cipher_key_len(sm->wpa_auth->conf.group_mgmt_cipher);
2267 wpa_auth_get_seqnum(sm->wpa_auth, NULL, gsm->GN_igtk, pos);
2340 if (parse.wmm_tspec && sm->wpa_auth->conf.ap_mlme) {
2360 if (parse.wmm_tspec && !sm->wpa_auth->conf.ap_mlme) {
2363 res = wpa_ft_add_tspec(sm->wpa_auth, sm->addr, pos,
2436 conf = &sm->wpa_auth->conf;
2519 if (wpa_channel_info(sm->wpa_auth, &ci) != 0) {
2595 wpa_ft_mic(kck, kck_len, sm->addr, sm->wpa_auth->addr, 6,
2614 static inline int wpa_auth_set_key(struct wpa_authenticator *wpa_auth,
2619 if (wpa_auth->cb->set_key == NULL)
2621 return wpa_auth->cb->set_key(wpa_auth->cb_ctx, vlan_id, alg, addr, idx,
2654 if (wpa_auth_set_key(sm->wpa_auth, 0, alg, sm->addr, 0,
2677 struct wpa_authenticator *wpa_auth = sm->wpa_auth;
2678 const u8 *mdid = wpa_auth->conf.mobility_domain;
2681 const u8 *r1kh = wpa_auth->conf.r1_key_holder;
2682 const u8 *ssid = wpa_auth->conf.ssid;
2683 size_t ssid_len = wpa_auth->conf.ssid_len;
2689 pmk = wpa_ft_get_psk(wpa_auth, sm->addr, sm->p2p_dev_addr,
2712 wpa_ft_get_vlan(sm->wpa_auth, sm->addr, out_vlan) < 0) {
2720 sm->wpa_auth, sm->addr, out_identity);
2725 sm->wpa_auth, sm->addr, out_radius_cui);
2730 sm->wpa_auth, sm->addr);
2753 key_mgmt = parse->key_mgmt & sm->wpa_auth->conf.wpa_key_mgmt;
2773 ciphers = parse->pairwise_cipher & sm->wpa_auth->conf.rsn_pairwise;
2786 static int wpa_ft_local_derive_pmk_r1(struct wpa_authenticator *wpa_auth,
2798 struct wpa_auth_config *conf = &wpa_auth->conf;
2811 if (wpa_ft_fetch_pmk_r0(sm->wpa_auth, sm->addr, req_pmk_r0_name, &r0) <
2831 wpa_ft_store_pmk_r1(wpa_auth, sm->addr, out_pmk_r1, r0->pmk_r0_len,
2884 conf = &sm->wpa_auth->conf;
2899 sm->wpa_auth->conf.mobility_domain,
2948 sm->wpa_auth->conf.r1_key_holder, sm->addr,
2963 } else if (wpa_ft_fetch_pmk_r1(sm->wpa_auth, sm->addr, pmk_r1_name,
2969 if (wpa_ft_local_derive_pmk_r1(sm->wpa_auth, sm,
3011 sm->addr, sm->wpa_auth->addr, pmk_r1_name,
3021 if (wpa_ft_set_vlan(sm->wpa_auth, sm->addr, &vlan) < 0) {
3025 if (wpa_ft_set_identity(sm->wpa_auth, sm->addr,
3027 wpa_ft_set_radius_cui(sm->wpa_auth, sm->addr,
3032 wpa_ft_set_session_timeout(sm->wpa_auth, sm->addr, session_timeout);
3093 sm->ft_pending_pull_left_retries = sm->wpa_auth->conf.rkh_pull_retries;
3159 sm->wpa_auth->conf.mobility_domain,
3234 if (os_memcmp_const(parse.r1kh_id, sm->wpa_auth->conf.r1_key_holder,
3241 sm->wpa_auth->conf.r1_key_holder, FT_R1KH_ID_LEN);
3270 if (wpa_ft_mic(kck, kck_len, sm->addr, sm->wpa_auth->addr, 5,
3283 MAC2STR(sm->addr), MAC2STR(sm->wpa_auth->addr));
3302 if (wpa_channel_info(sm->wpa_auth, &ci) != 0) {
3371 os_memcmp(target_ap, sm->wpa_auth->addr, ETH_ALEN) == 0) {
3379 if (!sm->wpa_auth->conf.ft_over_ds) {
3391 os_memcpy(frame->ap_address, sm->wpa_auth->addr, ETH_ALEN);
3394 wpa_ft_rrb_send(sm->wpa_auth, target_ap, (u8 *) frame,
3414 static int wpa_ft_rrb_rx_request(struct wpa_authenticator *wpa_auth,
3424 sm = wpa_ft_add_sta(wpa_auth, sta_addr);
3436 sm->ft_pending_pull_left_retries = sm->wpa_auth->conf.rkh_pull_retries;
3457 struct wpa_authenticator *wpa_auth = sm->wpa_auth;
3482 os_memcpy(frame->ap_address, wpa_auth->addr, ETH_ALEN);
3488 os_memcpy(pos, wpa_auth->addr, ETH_ALEN);
3495 wpa_ft_rrb_send(wpa_auth, current_ap, (u8 *) frame,
3577 static int wpa_ft_rrb_rx_pull(struct wpa_authenticator *wpa_auth,
3604 if (wpa_ft_rrb_check_r0kh(wpa_auth, f_r0kh_id, f_r0kh_id_len)) {
3612 wpa_ft_rrb_lookup_r1kh(wpa_auth, f_r1kh_id, &r1kh, &r1kh_wildcard);
3646 r1kh = wpa_ft_rrb_add_r1kh(wpa_auth, r1kh_wildcard, src_addr,
3648 wpa_auth->conf.rkh_pos_timeout);
3653 wpa_ft_rrb_seq_req(wpa_auth, r1kh->seq, src_addr, f_r0kh_id,
3660 wpa_ft_rrb_seq_accept(wpa_auth, r1kh->seq, src_addr, auth, auth_len,
3662 wpa_ft_rrb_r1kh_replenish(wpa_auth, r1kh,
3663 wpa_auth->conf.rkh_pos_timeout);
3700 if (wpa_ft_fetch_pmk_r0(wpa_auth, f_s1kh_id, f_pmk_r0_name, &r0) < 0) {
3703 NULL, wpa_auth->addr,
3708 f_s1kh_id, resp_auth, wpa_auth->addr,
3714 wpa_ft_rrb_oui_send(wpa_auth, src_addr,
3730 static int wpa_ft_rrb_rx_r1(struct wpa_authenticator *wpa_auth,
3735 int (*cb)(struct wpa_authenticator *wpa_auth,
3770 if (wpa_ft_rrb_check_r1kh(wpa_auth, f_r1kh_id)) {
3775 wpa_ft_rrb_lookup_r0kh(wpa_auth, f_r0kh_id, f_r0kh_id_len, &r0kh,
3808 r0kh = wpa_ft_rrb_add_r0kh(wpa_auth, r0kh_wildcard, src_addr,
3810 wpa_auth->conf.rkh_pos_timeout);
3815 wpa_ft_rrb_seq_req(wpa_auth, r0kh->seq, src_addr, f_r0kh_id,
3821 wpa_ft_rrb_seq_accept(wpa_auth, r0kh->seq, src_addr, auth, auth_len,
3823 wpa_ft_rrb_r0kh_replenish(wpa_auth, r0kh,
3824 wpa_auth->conf.rkh_pos_timeout);
3888 if (wpa_ft_store_pmk_r1(wpa_auth, f_s1kh_id, f_pmk_r1, pmk_r1_len,
3929 sm->ft_pending_cb(sm->ft_pending_cb_ctx, sm->addr, sm->wpa_auth->addr,
3960 static int wpa_ft_rrb_rx_resp(struct wpa_authenticator *wpa_auth,
3980 if (!wpa_auth_for_each_sta(wpa_auth, ft_get_sta_cb, &ctx)) {
3986 ret = wpa_ft_rrb_rx_r1(wpa_auth, src_addr, FT_PACKET_R0KH_R1KH_RESP,
3999 if (wpa_auth_for_each_sta(wpa_auth, ft_get_sta_cb, &ctx)) {
4014 static int wpa_ft_rrb_rx_push(struct wpa_authenticator *wpa_auth,
4023 if (wpa_ft_rrb_rx_r1(wpa_auth, src_addr, FT_PACKET_R0KH_R1KH_PUSH,
4032 static int wpa_ft_rrb_rx_seq(struct wpa_authenticator *wpa_auth,
4056 to_r0kh = !wpa_ft_rrb_check_r0kh(wpa_auth, f_r0kh_id, f_r0kh_id_len);
4057 to_r1kh = !wpa_ft_rrb_check_r1kh(wpa_auth, f_r1kh_id);
4070 wpa_ft_rrb_lookup_r0kh(wpa_auth, f_r0kh_id, f_r0kh_id_len,
4088 wpa_ft_rrb_lookup_r1kh(wpa_auth, f_r1kh_id, &r1kh,
4113 r0kh = wpa_ft_rrb_add_r0kh(wpa_auth, r0kh_wildcard,
4120 wpa_ft_rrb_r0kh_replenish(wpa_auth, r0kh, ftRRBseqTimeout);
4130 r1kh = wpa_ft_rrb_add_r1kh(wpa_auth, r1kh_wildcard,
4136 wpa_ft_rrb_r1kh_replenish(wpa_auth, r1kh, ftRRBseqTimeout);
4150 static int wpa_ft_rrb_rx_seq_req(struct wpa_authenticator *wpa_auth,
4167 if (wpa_ft_rrb_rx_seq(wpa_auth, src_addr, FT_PACKET_R0KH_R1KH_SEQ_REQ,
4200 wpa_auth->addr, FT_PACKET_R0KH_R1KH_SEQ_RESP,
4204 wpa_ft_rrb_oui_send(wpa_auth, src_addr,
4215 static int wpa_ft_rrb_rx_seq_resp(struct wpa_authenticator *wpa_auth,
4236 if (wpa_ft_rrb_rx_seq(wpa_auth, src_addr, FT_PACKET_R0KH_R1KH_SEQ_RESP,
4264 wpa_ft_rrb_r0kh_replenish(wpa_auth, r0kh,
4265 wpa_auth->conf.rkh_pos_timeout);
4271 wpa_ft_rrb_r1kh_replenish(wpa_auth, r1kh,
4272 wpa_auth->conf.rkh_pos_timeout);
4281 wpa_ft_rrb_seq_accept(wpa_auth, rkh_seq, src_addr, auth,
4308 wpa_ft_rrb_seq_flush(wpa_auth, rkh_seq, 1);
4316 int wpa_ft_rrb_rx(struct wpa_authenticator *wpa_auth, const u8 *src_addr,
4393 if (os_memcmp(target_ap_addr, wpa_auth->addr, ETH_ALEN) != 0) {
4400 if (wpa_ft_rrb_rx_request(wpa_auth, frame->ap_address,
4417 if (wpa_ft_action_send(wpa_auth, sta_addr, start, alen) < 0)
4434 void wpa_ft_rrb_oui_rx(struct wpa_authenticator *wpa_auth, const u8 *src_addr,
4481 wpa_ft_rrb_rx_pull(wpa_auth, src_addr, enc, elen, auth, alen,
4485 wpa_ft_rrb_rx_resp(wpa_auth, src_addr, enc, elen, auth, alen,
4489 wpa_ft_rrb_rx_push(wpa_auth, src_addr, enc, elen, auth, alen,
4493 wpa_ft_rrb_rx_seq_req(wpa_auth, src_addr, enc, elen, auth, alen,
4497 wpa_ft_rrb_rx_seq_resp(wpa_auth, src_addr, enc, elen, auth,
4504 static int wpa_ft_generate_pmk_r1(struct wpa_authenticator *wpa_auth,
4523 .len = wpa_auth->conf.r0_key_holder_len,
4524 .data = wpa_auth->conf.r0_key_holder },
4536 r1kh->id, s1kh_id, push_auth, wpa_auth->addr,
4541 wpa_ft_rrb_oui_send(wpa_auth, r1kh->addr, FT_PACKET_R0KH_R1KH_PUSH,
4549 void wpa_ft_push_pmk_r1(struct wpa_authenticator *wpa_auth, const u8 *addr)
4551 struct wpa_ft_pmk_cache *cache = wpa_auth->ft_pmk_cache;
4555 if (!wpa_auth->conf.pmk_r1_push)
4557 if (!wpa_auth->conf.r1kh_list)
4575 for (r1kh = *wpa_auth->conf.r1kh_list; r1kh; r1kh = r1kh->next) {
4581 wpa_ft_generate_pmk_r1(wpa_auth, r0, r1kh, addr);