mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-01-19 03:14:05 -05:00
SAE: Use PMK in 4-way handshake
Use the PMK that is derived as part of the SAE authentication in the 4-way handshake instead of the PSK. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
f2e9818f73
commit
47b55a3ef5
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* hostapd / WPA authenticator glue code
|
* hostapd / WPA authenticator glue code
|
||||||
* Copyright (c) 2002-2011, Jouni Malinen <j@w1.fi>
|
* Copyright (c) 2002-2012, Jouni Malinen <j@w1.fi>
|
||||||
*
|
*
|
||||||
* This software may be distributed under the terms of the BSD license.
|
* This software may be distributed under the terms of the BSD license.
|
||||||
* See README for more details.
|
* See README for more details.
|
||||||
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include "utils/common.h"
|
#include "utils/common.h"
|
||||||
#include "common/ieee802_11_defs.h"
|
#include "common/ieee802_11_defs.h"
|
||||||
|
#include "common/sae.h"
|
||||||
#include "eapol_auth/eapol_auth_sm.h"
|
#include "eapol_auth/eapol_auth_sm.h"
|
||||||
#include "eapol_auth/eapol_auth_sm_i.h"
|
#include "eapol_auth/eapol_auth_sm_i.h"
|
||||||
#include "eap_server/eap.h"
|
#include "eap_server/eap.h"
|
||||||
@ -184,7 +185,17 @@ static const u8 * hostapd_wpa_auth_get_psk(void *ctx, const u8 *addr,
|
|||||||
{
|
{
|
||||||
struct hostapd_data *hapd = ctx;
|
struct hostapd_data *hapd = ctx;
|
||||||
struct sta_info *sta = ap_get_sta(hapd, addr);
|
struct sta_info *sta = ap_get_sta(hapd, addr);
|
||||||
const u8 *psk = hostapd_get_psk(hapd->conf, addr, prev_psk);
|
const u8 *psk;
|
||||||
|
|
||||||
|
#ifdef CONFIG_SAE
|
||||||
|
if (sta && sta->auth_alg == WLAN_AUTH_SAE) {
|
||||||
|
if (!sta->sae || prev_psk)
|
||||||
|
return NULL;
|
||||||
|
return sta->sae->pmk;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_SAE */
|
||||||
|
|
||||||
|
psk = hostapd_get_psk(hapd->conf, addr, prev_psk);
|
||||||
/*
|
/*
|
||||||
* This is about to iterate over all psks, prev_psk gives the last
|
* This is about to iterate over all psks, prev_psk gives the last
|
||||||
* returned psk which should not be returned again.
|
* returned psk which should not be returned again.
|
||||||
|
@ -488,6 +488,10 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data)
|
|||||||
}
|
}
|
||||||
if (res != 1)
|
if (res != 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
wpa_printf(MSG_DEBUG, "SME: SAE completed - setting PMK for "
|
||||||
|
"4-way handshake");
|
||||||
|
wpa_sm_set_pmk(wpa_s->wpa, wpa_s->sme.sae.pmk, PMK_LEN);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SAE */
|
#endif /* CONFIG_SAE */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user