Lines Matching refs:sta

24 static void sae_set_state(struct sta_info *sta, enum sae_state state,  in sae_set_state()  argument
28 sae_state_txt(sta->sae->state), sae_state_txt(state), in sae_set_state()
29 MAC2STR(sta->addr), reason); in sae_set_state()
30 sta->sae->state = state; in sae_set_state()
35 struct sta_info *sta, in sae_get_password() argument
56 struct sta_info *sta, int update, int status_code) in auth_build_sae_commit() argument
64 if (sta->sae->tmp) { in auth_build_sae_commit()
65 rx_id = sta->sae->tmp->pw_id; in auth_build_sae_commit()
66 use_pt = sta->sae->h2e; in auth_build_sae_commit()
76 password = sae_get_password(hapd, sta, rx_id, &pt); in auth_build_sae_commit()
83 sae_prepare_commit_pt(sta->sae, pt, hapd->own_addr, sta->addr, in auth_build_sae_commit()
89 sae_prepare_commit(hapd->own_addr, sta->addr, in auth_build_sae_commit()
91 sta->sae) < 0) { in auth_build_sae_commit()
100 sae_write_commit(sta->sae, buf, sta->sae->tmp ? in auth_build_sae_commit()
101 sta->sae->tmp->anti_clogging_token : NULL, in auth_build_sae_commit()
112 struct sta_info *sta) in auth_build_sae_confirm() argument
121 if (sae_write_confirm(sta->sae, buf) < 0) { in auth_build_sae_confirm()
131 struct sta_info *sta, in auth_sae_send_commit() argument
138 data = auth_build_sae_commit(hapd, sta, update, status_code); in auth_sae_send_commit()
139 if (!data && sta->sae->tmp && sta->sae->tmp->pw_id) { in auth_sae_send_commit()
146 if (sta->sae->tmp && sta->sae->h2e) { in auth_sae_send_commit()
153 if (sta->remove_pending) { in auth_sae_send_commit()
156 reply_res = esp_send_sae_auth_reply(hapd, sta->addr, bssid, WLAN_AUTH_SAE, 1, in auth_sae_send_commit()
167 struct sta_info *sta, in auth_sae_send_confirm() argument
173 data = auth_build_sae_confirm(hapd, sta); in auth_sae_send_confirm()
179 if (sta->remove_pending) { in auth_sae_send_confirm()
182 reply_res = esp_send_sae_auth_reply(hapd, sta->addr, bssid, WLAN_AUTH_SAE, 2, in auth_sae_send_confirm()
195 struct sta_info *sta; in use_sae_anti_clogging() local
202 for (sta = hapd->sta_list; sta; sta = sta->next) { in use_sae_anti_clogging()
203 if (sta->sae && in use_sae_anti_clogging()
204 (sta->sae->state == SAE_COMMITTED || in use_sae_anti_clogging()
205 sta->sae->state == SAE_CONFIRMED)) { in use_sae_anti_clogging()
225 static int sae_check_big_sync(struct hostapd_data *hapd, struct sta_info *sta) in sae_check_big_sync() argument
227 if (sta->sae->sync > hapd->conf->sae_sync) { in sae_check_big_sync()
228 sae_set_state(sta, SAE_NOTHING, "Sync > dot11RSNASAESync"); in sae_check_big_sync()
229 sta->sae->sync = 0; in sae_check_big_sync()
236 void sae_accept_sta(struct hostapd_data *hapd, struct sta_info *sta) in sae_accept_sta() argument
238 sta->flags |= WLAN_STA_AUTH; in sae_accept_sta()
241 sta->sae_commit_processing = false; in sae_accept_sta()
244 sta->auth_alg = WLAN_AUTH_SAE; in sae_accept_sta()
245 sae_set_state(sta, SAE_ACCEPTED, "Accept Confirm"); in sae_accept_sta()
246 wpa_auth_pmksa_add_sae(hapd->wpa_auth, sta->addr, in sae_accept_sta()
247 sta->sae->pmk, sta->sae->pmkid, false); in sae_accept_sta()
251 static int sae_sm_step(struct hostapd_data *hapd, struct sta_info *sta, in sae_sm_step() argument
263 MAC2STR(sta->addr), sae_state_txt(sta->sae->state), in sae_sm_step()
265 switch (sta->sae->state) { in sae_sm_step()
268 if (sta->sae->tmp) { in sae_sm_step()
269 sta->sae->h2e = in sae_sm_step()
273 ret = auth_sae_send_commit(hapd, sta, bssid, in sae_sm_step()
280 sae_set_state(sta, SAE_COMMITTED, "Sent Commit"); in sae_sm_step()
282 if (sae_process_commit(sta->sae) < 0) { in sae_sm_step()
286 sta->sae->sync = 0; in sae_sm_step()
293 if (sae_process_commit(sta->sae) < 0) { in sae_sm_step()
297 ret = auth_sae_send_confirm(hapd, sta, bssid); in sae_sm_step()
301 sae_set_state(sta, SAE_CONFIRMED, "Sent Confirm"); in sae_sm_step()
302 sta->sae->sync = 0; in sae_sm_step()
309 ret = auth_sae_send_confirm(hapd, sta, bssid); in sae_sm_step()
314 sae_set_state(sta, SAE_CONFIRMED, "Sent Confirm"); in sae_sm_step()
321 return sae_sm_step(hapd, sta, bssid, auth_transaction, in sae_sm_step()
327 if (sae_check_big_sync(hapd, sta)) { in sae_sm_step()
330 sta->sae->sync++; in sae_sm_step()
332 ret = auth_sae_send_commit(hapd, sta, bssid, 1, in sae_sm_step()
339 if (sae_process_commit(sta->sae) < 0) { in sae_sm_step()
343 ret = auth_sae_send_confirm(hapd, sta, bssid); in sae_sm_step()
349 sta->sae->send_confirm = 0xffff; in sae_sm_step()
350 sae_accept_sta(hapd, sta); in sae_sm_step()
356 ret = auth_sae_send_commit(hapd, sta, bssid, 1, in sae_sm_step()
361 sae_set_state(sta, SAE_COMMITTED, "Sent Commit"); in sae_sm_step()
363 if (sae_process_commit(sta->sae) < 0) { in sae_sm_step()
367 sta->sae->sync = 0; in sae_sm_step()
369 if (sae_check_big_sync(hapd, sta)) { in sae_sm_step()
372 sta->sae->sync++; in sae_sm_step()
374 ret = auth_sae_send_confirm(hapd, sta, bssid); in sae_sm_step()
375 sae_clear_temp_data(sta->sae); in sae_sm_step()
383 sta->sae->state); in sae_sm_step()
464 int handle_auth_sae(struct hostapd_data *hapd, struct sta_info *sta, in handle_auth_sae() argument
479 if (!sta->sae) { in handle_auth_sae()
487 sta->sae = os_zalloc(sizeof(*sta->sae)); in handle_auth_sae()
488 if (!sta->sae) { in handle_auth_sae()
492 sae_set_state(sta, SAE_NOTHING, "Init"); in handle_auth_sae()
493 sta->sae->sync = 0; in handle_auth_sae()
504 if (sta->sae->state == SAE_COMMITTED) { in handle_auth_sae()
515 sae_group_allowed(sta->sae, groups, in handle_auth_sae()
520 sae_set_state(sta, SAE_NOTHING, in handle_auth_sae()
524 sae_set_state(sta, SAE_NOTHING, in handle_auth_sae()
526 sae_clear_data(sta->sae); in handle_auth_sae()
530 resp = sae_parse_commit(sta->sae, buf, len, &token, &token_len, default_group, in handle_auth_sae()
535 MAC2STR(sta->addr)); in handle_auth_sae()
541 sae_set_state(sta, SAE_NOTHING, in handle_auth_sae()
548 hapd->comeback_pending_idx, sta->addr, in handle_auth_sae()
552 MAC2STR(sta->addr)); in handle_auth_sae()
557 if (check_sae_rejected_groups(hapd, sta->sae)) { in handle_auth_sae()
571 MACSTR, MAC2STR(sta->addr)); in handle_auth_sae()
572 if (sta->sae->tmp) in handle_auth_sae()
573 h2e = sta->sae->h2e; in handle_auth_sae()
582 sta->sae->group, in handle_auth_sae()
583 sta->addr, h2e); in handle_auth_sae()
587 sta->sae_commit_processing = false; in handle_auth_sae()
593 resp = sae_sm_step(hapd, sta, bssid, auth_transaction, in handle_auth_sae()
613 if (sta->sae->state == SAE_ACCEPTED && in handle_auth_sae()
614 (peer_send_confirm <= sta->sae->rc || in handle_auth_sae()
620 MAC2STR(sta->addr), in handle_auth_sae()
621 peer_send_confirm, sta->sae->rc); in handle_auth_sae()
625 if (sae_check_confirm(sta->sae, buf, len) < 0) { in handle_auth_sae()
629 sta->sae->rc = peer_send_confirm; in handle_auth_sae()
631 resp = sae_sm_step(hapd, sta, bssid, auth_transaction, in handle_auth_sae()
652 if (!sta->remove_pending) { in handle_auth_sae()