FILS: Extend wpa_auth_pmksa_get() to support PMKID matching
This is needed for FILS processing to enable PMKSA caching. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
c30bd28b14
commit
c1bd4bac5f
4 changed files with 8 additions and 6 deletions
|
@ -3518,11 +3518,12 @@ void wpa_auth_pmksa_flush(struct wpa_authenticator *wpa_auth)
|
||||||
|
|
||||||
|
|
||||||
struct rsn_pmksa_cache_entry *
|
struct rsn_pmksa_cache_entry *
|
||||||
wpa_auth_pmksa_get(struct wpa_authenticator *wpa_auth, const u8 *sta_addr)
|
wpa_auth_pmksa_get(struct wpa_authenticator *wpa_auth, const u8 *sta_addr,
|
||||||
|
const u8 *pmkid)
|
||||||
{
|
{
|
||||||
if (!wpa_auth || !wpa_auth->pmksa)
|
if (!wpa_auth || !wpa_auth->pmksa)
|
||||||
return NULL;
|
return NULL;
|
||||||
return pmksa_cache_auth_get(wpa_auth->pmksa, sta_addr, NULL);
|
return pmksa_cache_auth_get(wpa_auth->pmksa, sta_addr, pmkid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -303,7 +303,8 @@ int wpa_auth_pmksa_list(struct wpa_authenticator *wpa_auth, char *buf,
|
||||||
size_t len);
|
size_t len);
|
||||||
void wpa_auth_pmksa_flush(struct wpa_authenticator *wpa_auth);
|
void wpa_auth_pmksa_flush(struct wpa_authenticator *wpa_auth);
|
||||||
struct rsn_pmksa_cache_entry *
|
struct rsn_pmksa_cache_entry *
|
||||||
wpa_auth_pmksa_get(struct wpa_authenticator *wpa_auth, const u8 *sta_addr);
|
wpa_auth_pmksa_get(struct wpa_authenticator *wpa_auth, const u8 *sta_addr,
|
||||||
|
const u8 *pmkid);
|
||||||
void wpa_auth_pmksa_set_to_sm(struct rsn_pmksa_cache_entry *pmksa,
|
void wpa_auth_pmksa_set_to_sm(struct rsn_pmksa_cache_entry *pmksa,
|
||||||
struct wpa_state_machine *sm,
|
struct wpa_state_machine *sm,
|
||||||
struct wpa_authenticator *wpa_auth,
|
struct wpa_authenticator *wpa_auth,
|
||||||
|
|
|
@ -1135,7 +1135,7 @@ void mesh_mpm_action_rx(struct wpa_supplicant *wpa_s,
|
||||||
*/
|
*/
|
||||||
if (!sta && action_field == PLINK_OPEN &&
|
if (!sta && action_field == PLINK_OPEN &&
|
||||||
(!(mconf->security & MESH_CONF_SEC_AMPE) ||
|
(!(mconf->security & MESH_CONF_SEC_AMPE) ||
|
||||||
wpa_auth_pmksa_get(hapd->wpa_auth, mgmt->sa)))
|
wpa_auth_pmksa_get(hapd->wpa_auth, mgmt->sa, NULL)))
|
||||||
sta = mesh_mpm_add_peer(wpa_s, mgmt->sa, &elems);
|
sta = mesh_mpm_add_peer(wpa_s, mgmt->sa, &elems);
|
||||||
|
|
||||||
if (!sta) {
|
if (!sta) {
|
||||||
|
|
|
@ -333,7 +333,7 @@ int mesh_rsn_auth_sae_sta(struct wpa_supplicant *wpa_s,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pmksa = wpa_auth_pmksa_get(hapd->wpa_auth, sta->addr);
|
pmksa = wpa_auth_pmksa_get(hapd->wpa_auth, sta->addr, NULL);
|
||||||
if (pmksa) {
|
if (pmksa) {
|
||||||
if (!sta->wpa_sm)
|
if (!sta->wpa_sm)
|
||||||
sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,
|
sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,
|
||||||
|
@ -611,7 +611,7 @@ int mesh_rsn_process_ampe(struct wpa_supplicant *wpa_s, struct sta_info *sta,
|
||||||
if (!sta->sae) {
|
if (!sta->sae) {
|
||||||
struct hostapd_data *hapd = wpa_s->ifmsh->bss[0];
|
struct hostapd_data *hapd = wpa_s->ifmsh->bss[0];
|
||||||
|
|
||||||
if (!wpa_auth_pmksa_get(hapd->wpa_auth, sta->addr)) {
|
if (!wpa_auth_pmksa_get(hapd->wpa_auth, sta->addr, NULL)) {
|
||||||
wpa_printf(MSG_INFO,
|
wpa_printf(MSG_INFO,
|
||||||
"Mesh RSN: SAE is not prepared yet");
|
"Mesh RSN: SAE is not prepared yet");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in a new issue