resp = -1;
goto remove_sta;
}
+ if (!hostapd_sae_pw_id_in_use(hapd->conf))
+ sta->sae->no_pw_id = 1;
sae_set_state(sta, SAE_NOTHING, "Init");
sta->sae->sync = 0;
}
void sae_clear_data(struct sae_data *sae)
{
+ unsigned int no_pw_id;
+
if (sae == NULL)
return;
sae_clear_temp_data(sae);
crypto_bignum_deinit(sae->peer_commit_scalar, 0);
crypto_bignum_deinit(sae->peer_commit_scalar_accepted, 0);
+ no_pw_id = sae->no_pw_id;
os_memset(sae, 0, sizeof(*sae));
+ sae->no_pw_id = no_pw_id;
}
epos++; /* skip ext ID */
len--;
+ if (sae->no_pw_id) {
+ wpa_printf(MSG_DEBUG,
+ "SAE: Password Identifier included, but none has been enabled");
+ return WLAN_STATUS_UNKNOWN_PASSWORD_IDENTIFIER;
+ }
+
if (sae->tmp->pw_id &&
(len != os_strlen(sae->tmp->pw_id) ||
os_memcmp(sae->tmp->pw_id, epos, len) != 0)) {
u16 rc; /* protocol instance variable: Rc (received send-confirm) */
unsigned int h2e:1;
unsigned int pk:1;
+ unsigned int no_pw_id:1;
struct sae_temporary_data *tmp;
};