Lines Matching defs:wpa_s
45 struct wpa_supplicant *wpa_s = ctx;
47 return wpa_drv_send_mlme(wpa_s, data, data_len, noack, freq, wait);
61 struct wpa_supplicant *wpa_s = eloop_ctx;
65 wpas_pasn_auth_stop(wpa_s);
67 wpas_pasn_auth_work_done(wpa_s, PASN_STATUS_FAILURE);
71 static void wpas_pasn_cancel_auth_work(struct wpa_supplicant *wpa_s)
76 radio_remove_works(wpa_s, "pasn-start-auth", 0);
80 static void wpas_pasn_auth_status(struct wpa_supplicant *wpa_s,
95 wpa_msg(wpa_s, MSG_INFO, PASN_AUTH_STATUS MACSTR
106 wpa_msg(wpa_s, MSG_INFO,
153 static int wpas_pasn_get_params_from_bss(struct wpa_supplicant *wpa_s,
167 bss = wpa_bss_get_bssid(wpa_s, peer_addr);
169 wpa_supplicant_update_scan_results(wpa_s, peer_addr);
170 bss = wpa_bss_get_bssid(wpa_s, peer_addr);
195 for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) {
196 if (!wpas_network_disabled(wpa_s, ssid) &&
214 wpa_msg(wpa_s, MSG_WARNING,
226 if (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SAE) || !ssid)
231 if (!(wpa_s->drv_flags & (WPA_DRIVER_FLAGS_SME |
239 os_strcmp(wpa_supplicant_get_eap_mode(wpa_s), "LEAP") != 0) {
243 pmksa_cache_get_current(wpa_s->wpa)) {
249 pmksa_cache_clear_current(wpa_s->wpa);
277 os_strcmp(wpa_supplicant_get_eap_mode(wpa_s), "LEAP") != 0) {
281 pmksa_cache_get_current(wpa_s->wpa)) {
287 pmksa_cache_clear_current(wpa_s->wpa);
309 static int wpas_pasn_set_keys_from_cache(struct wpa_supplicant *wpa_s,
316 entry = ptksa_cache_get(wpa_s->ptksa, peer_addr, cipher);
333 wpa_drv_set_secure_ranging_ctx(wpa_s, own_addr, peer_addr, cipher,
342 static void wpas_pasn_configure_next_peer(struct wpa_supplicant *wpa_s,
352 while (wpa_s->pasn_count < pasn_params->num_peers) {
353 peer = &pasn_params->peer[wpa_s->pasn_count];
355 if (ether_addr_equal(wpa_s->bssid, peer->peer_addr)) {
359 wpa_s->pasn_count++;
363 if (wpas_pasn_set_keys_from_cache(wpa_s, peer->own_addr,
368 wpa_s->pasn_count++;
372 if (wpas_pasn_get_params_from_bss(wpa_s, peer)) {
374 wpa_s->pasn_count++;
378 if (wpas_pasn_auth_start(wpa_s, peer->own_addr,
384 wpa_s->pasn_count++;
392 if (wpa_s->pasn_count == pasn_params->num_peers) {
393 wpa_drv_send_pasn_resp(wpa_s, pasn_params);
395 os_free(wpa_s->pasn_params);
396 wpa_s->pasn_params = NULL;
401 void wpas_pasn_auth_work_done(struct wpa_supplicant *wpa_s, int status)
403 if (!wpa_s->pasn_params)
406 wpa_s->pasn_params->peer[wpa_s->pasn_count].status = status;
407 wpa_s->pasn_count++;
408 wpas_pasn_configure_next_peer(wpa_s, wpa_s->pasn_params);
412 static void wpas_pasn_delete_peers(struct wpa_supplicant *wpa_s,
423 ptksa_cache_flush(wpa_s->ptksa, peer->peer_addr,
450 static void wpas_pasn_reset(struct wpa_supplicant *wpa_s)
452 struct pasn_data *pasn = &wpa_s->pasn;
454 wpas_pasn_cancel_auth_work(wpa_s);
455 wpa_s->pasn_auth_work = NULL;
456 eloop_cancel_timeout(wpas_pasn_auth_work_timeout, wpa_s, NULL);
462 static struct wpa_bss * wpas_pasn_allowed(struct wpa_supplicant *wpa_s,
471 if (ether_addr_equal(wpa_s->bssid, peer_addr)) {
477 bss = wpa_bss_get_bssid_latest(wpa_s, peer_addr);
508 struct wpa_supplicant *wpa_s = work->wpa_s;
510 struct pasn_data *pasn = &wpa_s->pasn;
527 wpa_s, NULL);
528 wpa_s->pasn_auth_work = NULL;
540 bss = wpas_pasn_allowed(wpa_s, awork->peer_addr, awork->akmp,
555 derive_kdk = (wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_SEC_LTF_STA) &&
560 derive_kdk = wpa_s->conf->force_kdk_derivation;
569 if ((wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_SEC_LTF_STA) &&
576 pasn->corrupt_mic = wpa_s->conf->pasn_corrupt_mic;
580 if (wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_SEC_LTF_STA)
582 if (wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_SEC_RTT_STA)
584 if (wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_PROT_RANGE_NEG_STA)
587 pasn_register_callbacks(pasn, wpa_s, wpas_pasn_send_mlme, NULL);
588 ssid = wpa_config_get_network(wpa_s->conf, awork->network_id);
619 pasn->eapol = wpa_s->eapol;
628 pasn->fast_reauth = wpa_s->conf->fast_reauth;
632 pasn_set_initiator_pmksa(pasn, wpa_sm_get_pmksa_cache(wpa_s->wpa));
636 ret = wpa_pasn_ft_derive_pmk_r1(wpa_s->wpa, awork->akmp,
662 eloop_register_timeout(2, 0, wpas_pasn_auth_work_timeout, wpa_s, NULL);
668 wpa_s->pasn_auth_work = work;
677 int wpas_pasn_auth_start(struct wpa_supplicant *wpa_s,
693 if (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_OFFCHANNEL_TX)) {
699 if (radio_work_pending(wpa_s, "pasn-start-auth")) {
705 if (wpa_s->pasn_auth_work) {
710 bss = wpas_pasn_allowed(wpa_s, peer_addr, akmp, cipher);
714 wpas_pasn_reset(wpa_s);
735 if (radio_add_work(wpa_s, bss->freq, "pasn-start-auth", 1,
746 void wpas_pasn_auth_stop(struct wpa_supplicant *wpa_s)
748 struct pasn_data *pasn = &wpa_s->pasn;
750 if (!wpa_s->pasn.ecdh)
755 wpas_pasn_auth_status(wpa_s, pasn->peer_addr, pasn_get_akmp(pasn),
760 wpas_pasn_reset(wpa_s);
764 static int wpas_pasn_immediate_retry(struct wpa_supplicant *wpa_s,
777 wpas_pasn_reset(wpa_s);
779 return wpas_pasn_auth_start(wpa_s, own_addr, peer_addr, akmp, cipher,
787 struct wpa_supplicant *wpa_s = entry->ctx;
795 wpas_pasn_deauthenticate(wpa_s, own_addr, peer_addr);
799 int wpas_pasn_auth_rx(struct wpa_supplicant *wpa_s,
802 struct pasn_data *pasn = &wpa_s->pasn;
806 if (!wpa_s->pasn_auth_work)
809 pasn_register_callbacks(pasn, wpa_s, wpas_pasn_send_mlme, NULL);
812 ptksa_cache_add(wpa_s->ptksa, pasn->own_addr, pasn->peer_addr,
816 wpa_s->pasn_params ? wpas_pasn_deauth_cb : NULL,
817 wpa_s->pasn_params ? wpa_s : NULL,
821 wpa_sm_set_cur_pmksa(wpa_s->wpa, pasn->pmksa_entry);
827 wpas_pasn_auth_stop(wpa_s);
828 wpas_pasn_auth_work_done(wpa_s, PASN_STATUS_FAILURE);
832 ret = wpas_pasn_immediate_retry(wpa_s, pasn, &pasn_data);
838 void wpas_pasn_auth_trigger(struct wpa_supplicant *wpa_s,
844 if (wpa_s->pasn_params) {
856 wpa_s->pasn_params = os_zalloc(sizeof(struct pasn_auth));
857 if (!wpa_s->pasn_params) {
863 wpa_s->pasn_count = 0;
864 wpa_s->pasn_params->num_peers = num_peers;
867 dst = &wpa_s->pasn_params->peer[i];
869 os_memcpy(dst->own_addr, wpa_s->own_addr, ETH_ALEN);
882 wpas_pasn_delete_peers(wpa_s, wpa_s->pasn_params);
883 os_free(wpa_s->pasn_params);
884 wpa_s->pasn_params = NULL;
886 wpas_pasn_configure_next_peer(wpa_s, wpa_s->pasn_params);
891 int wpas_pasn_auth_tx_status(struct wpa_supplicant *wpa_s,
895 struct pasn_data *pasn = &wpa_s->pasn;
898 if (!wpa_s->pasn_auth_work) {
908 if (!wpa_s->pasn_params) {
909 wpas_pasn_auth_stop(wpa_s);
913 wpas_pasn_set_keys_from_cache(wpa_s, pasn->own_addr, pasn->peer_addr,
916 wpas_pasn_auth_stop(wpa_s);
917 wpas_pasn_auth_work_done(wpa_s, PASN_STATUS_SUCCESS);
923 int wpas_pasn_deauthenticate(struct wpa_supplicant *wpa_s, const u8 *own_addr,
931 if (ether_addr_equal(wpa_s->bssid, peer_addr)) {
937 wpa_drv_set_secure_ranging_ctx(wpa_s, own_addr, peer_addr, 0, 0, NULL,
942 ptksa_cache_flush(wpa_s->ptksa, peer_addr, WPA_CIPHER_NONE);
944 bss = wpa_bss_get_bssid(wpa_s, peer_addr);
973 ret = wpa_drv_send_mlme(wpa_s, wpabuf_head(buf), wpabuf_len(buf), 1,