diff --git a/hostapd/config_file.c b/hostapd/config_file.c index e6033e7ab..b187ec7cb 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -4184,6 +4184,8 @@ static int hostapd_config_fill(struct hostapd_config *conf, bss->sae_require_mfp = atoi(pos); } else if (os_strcmp(buf, "sae_confirm_immediate") == 0) { bss->sae_confirm_immediate = atoi(pos); + } else if (os_strcmp(buf, "sae_pwe") == 0) { + bss->sae_pwe = atoi(pos); } else if (os_strcmp(buf, "local_pwr_constraint") == 0) { int val = atoi(pos); if (val < 0 || val > 255) { diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf index 326f967a5..9739c61a4 100644 --- a/hostapd/hostapd.conf +++ b/hostapd/hostapd.conf @@ -1750,6 +1750,14 @@ own_ip_addr=127.0.0.1 # to send its SAE Confirm message first. #sae_confirm_immediate=0 +# SAE mechanism for PWE derivation +# 0 = hunting-and-pecking loop only (default) +# 1 = hash-to-element only +# 2 = both hunting-and-pecking loop and hash-to-element enabled +# Note: The default value is likely to change from 0 to 2 once the new +# hash-to-element mechanism has received more interoperability testing. +#sae_pwe=0 + # FILS Cache Identifier (16-bit value in hexdump format) #fils_cache_id=0011 diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h index 346a7dd1b..2d09d0614 100644 --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -650,6 +650,7 @@ struct hostapd_bss_config { unsigned int sae_sync; int sae_require_mfp; int sae_confirm_immediate; + int sae_pwe; int *sae_groups; struct sae_password_entry *sae_passwords; diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h index 2f1b1de6b..f0f03aa52 100644 --- a/src/ap/wpa_auth.h +++ b/src/ap/wpa_auth.h @@ -230,6 +230,7 @@ struct wpa_auth_config { unsigned int fils_cache_id_set:1; u8 fils_cache_id[FILS_CACHE_ID_LEN]; #endif /* CONFIG_FILS */ + int sae_pwe; }; typedef enum { diff --git a/src/ap/wpa_auth_glue.c b/src/ap/wpa_auth_glue.c index c0786cee5..76f86d9d5 100644 --- a/src/ap/wpa_auth_glue.c +++ b/src/ap/wpa_auth_glue.c @@ -130,6 +130,7 @@ static void hostapd_wpa_auth_conf(struct hostapd_bss_config *conf, os_memcpy(wconf->fils_cache_id, conf->fils_cache_id, FILS_CACHE_ID_LEN); #endif /* CONFIG_FILS */ + wconf->sae_pwe = conf->sae_pwe; }