SAE: Centralize function for sending initial COMMIT
When performing SAE authentication in mesh, one station may initiate authentication by sending a COMMIT as soon as a peer candidate is discovered. Previously we did this in mesh_rsn.c, but this left some of the state initialization in a different part of the code from the rest of the state machine, and we may need to add other initializations here in the future, so move that to a more central function. Signed-off-by: Bob Copeland <me@bobcopeland.com>
This commit is contained in:
parent
28c91ee124
commit
a206e2a175
3 changed files with 48 additions and 74 deletions
|
@ -755,6 +755,37 @@ reply:
|
|||
}
|
||||
wpabuf_free(data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* auth_sae_init_committed - Send COMMIT and start SAE in committed state
|
||||
* @hapd: BSS data for the device initiating the authentication
|
||||
* @sta: the peer to which commit authentication frame is sent
|
||||
*
|
||||
* This function implements Init event handling (IEEE Std 802.11-2012,
|
||||
* 11.3.8.6.3) in which initial COMMIT message is sent. Prior to calling, the
|
||||
* sta->sae structure should be initialized appropriately via a call to
|
||||
* sae_prepare_commit().
|
||||
*/
|
||||
int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!sta->sae || !sta->sae->tmp)
|
||||
return -1;
|
||||
|
||||
if (sta->sae->state != SAE_NOTHING)
|
||||
return -1;
|
||||
|
||||
ret = auth_sae_send_commit(hapd, sta, hapd->own_addr, 0);
|
||||
if (ret)
|
||||
return -1;
|
||||
|
||||
sta->sae->state = SAE_COMMITTED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SAE */
|
||||
|
||||
|
||||
|
|
|
@ -89,4 +89,6 @@ int hostapd_update_time_adv(struct hostapd_data *hapd);
|
|||
void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr);
|
||||
u8 * hostapd_eid_bss_max_idle_period(struct hostapd_data *hapd, u8 *eid);
|
||||
|
||||
int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta);
|
||||
|
||||
#endif /* IEEE802_11_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue