mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-25 00:38:24 -05:00
SAE: Use BSSID stored in ext_auth_bssid for set_pmk
pending_bssid is cleared in the connected state and thus is not valid if SAE authentication is done to a new BSSID when in the connected state. Hence use the BSSID from ext_auth_bssid while configuring the PMK for the external authentication case. This is required for roaming to a new BSSID with driver-based-SME while the SAE processing happens with wpa_supplicant. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
e0b331d896
commit
b7cd64876d
@ -1197,12 +1197,12 @@ static int sme_sae_auth(struct wpa_supplicant *wpa_s, u16 auth_transaction,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sme_sae_set_pmk(struct wpa_supplicant *wpa_s)
|
static int sme_sae_set_pmk(struct wpa_supplicant *wpa_s, const u8 *bssid)
|
||||||
{
|
{
|
||||||
wpa_printf(MSG_DEBUG,
|
wpa_printf(MSG_DEBUG,
|
||||||
"SME: SAE completed - setting PMK for 4-way handshake");
|
"SME: SAE completed - setting PMK for 4-way handshake");
|
||||||
wpa_sm_set_pmk(wpa_s->wpa, wpa_s->sme.sae.pmk, PMK_LEN,
|
wpa_sm_set_pmk(wpa_s->wpa, wpa_s->sme.sae.pmk, PMK_LEN,
|
||||||
wpa_s->sme.sae.pmkid, wpa_s->pending_bssid);
|
wpa_s->sme.sae.pmkid, bssid);
|
||||||
if (wpa_s->conf->sae_pmkid_in_assoc) {
|
if (wpa_s->conf->sae_pmkid_in_assoc) {
|
||||||
/* Update the own RSNE contents now that we have set the PMK
|
/* Update the own RSNE contents now that we have set the PMK
|
||||||
* and added a PMKSA cache entry based on the successfully
|
* and added a PMKSA cache entry based on the successfully
|
||||||
@ -1261,7 +1261,7 @@ void sme_external_auth_mgmt_rx(struct wpa_supplicant *wpa_s,
|
|||||||
if (res != 1)
|
if (res != 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (sme_sae_set_pmk(wpa_s) < 0)
|
if (sme_sae_set_pmk(wpa_s, wpa_s->sme.ext_auth_bssid) < 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1315,7 +1315,7 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data)
|
|||||||
if (res != 1)
|
if (res != 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (sme_sae_set_pmk(wpa_s) < 0)
|
if (sme_sae_set_pmk(wpa_s, wpa_s->pending_bssid) < 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SAE */
|
#endif /* CONFIG_SAE */
|
||||||
|
Loading…
Reference in New Issue
Block a user