feat(wifi): Add support for wpa3 compatible flag for softap

This commit is contained in:
Shreyas Sheth
2025-02-17 01:54:07 +05:30
committed by Kapil Gupta
parent 434671f5e6
commit ee3723b922
6 changed files with 58 additions and 3 deletions

View File

@@ -535,6 +535,10 @@ typedef struct {
wifi_sae_pwe_method_t sae_pwe_h2e; /**< Configuration for SAE PWE derivation method */ wifi_sae_pwe_method_t sae_pwe_h2e; /**< Configuration for SAE PWE derivation method */
uint8_t transition_disable; /**< Whether to enable transition disable feature */ uint8_t transition_disable; /**< Whether to enable transition disable feature */
uint8_t sae_ext; /**< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. */ uint8_t sae_ext; /**< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. */
uint8_t transition_disable: 1; /**< Whether to enable transition disable feature */
uint8_t sae_ext: 1; /**< Enable SAE EXT feature. SOC_GCMP_SUPPORT is required for this feature. */
uint8_t wpa3_compatible_mode: 1; /**< Whether to enable wpa3 compatible authmode feature */
uint8_t reserved: 5; /**< Reserved for future feature set */
wifi_bss_max_idle_config_t bss_max_idle_cfg; /**< Configuration for bss max idle, effective if CONFIG_WIFI_BSS_MAX_IDLE_SUPPORT is enabled */ wifi_bss_max_idle_config_t bss_max_idle_cfg; /**< Configuration for bss max idle, effective if CONFIG_WIFI_BSS_MAX_IDLE_SUPPORT is enabled */
uint16_t gtk_rekey_interval; /**< GTK rekeying interval in seconds. If set to 0, GTK rekeying is disabled. Range: 60 ~ 65535 including 0. */ uint16_t gtk_rekey_interval; /**< GTK rekeying interval in seconds. If set to 0, GTK rekeying is disabled. Range: 60 ~ 65535 including 0. */
} wifi_ap_config_t; } wifi_ap_config_t;

View File

@@ -111,6 +111,15 @@ void *hostap_init(void)
} }
} }
#endif /* CONFIG_IEEE80211W */ #endif /* CONFIG_IEEE80211W */
//TODO how to set values
if (true) {
hapd->conf->rsn_override_key_mgmt = WPA_KEY_MGMT_SAE;
hapd->conf->rsn_override_pairwise = WPA_CIPHER_CCMP;
hapd->conf->rsn_override_mfp = MGMT_FRAME_PROTECTION_REQUIRED;
auth_conf->rsn_override_key_mgmt = WPA_KEY_MGMT_SAE;
auth_conf->rsn_override_pairwise = WPA_CIPHER_CCMP;
auth_conf->rsn_override_mfp = MGMT_FRAME_PROTECTION_REQUIRED;
}
/* TKIP is compulsory in WPA Mode */ /* TKIP is compulsory in WPA Mode */
if (auth_conf->wpa == WPA_PROTO_WPA && pairwise_cipher == WIFI_CIPHER_TYPE_CCMP) { if (auth_conf->wpa == WPA_PROTO_WPA && pairwise_cipher == WIFI_CIPHER_TYPE_CCMP) {
pairwise_cipher = WIFI_CIPHER_TYPE_TKIP_CCMP; pairwise_cipher = WIFI_CIPHER_TYPE_TKIP_CCMP;

View File

@@ -396,12 +396,10 @@ static bool hostap_sta_join(void **sta, u8 *bssid, u8 *assoc_req_ie, uint32_t as
if (elems.rsn_ie) { if (elems.rsn_ie) {
elems.rsn_ie = elems.rsn_ie - 2; elems.rsn_ie = elems.rsn_ie - 2;
elems.rsn_ie_len = elems.rsn_ie_len + 2; elems.rsn_ie_len = elems.rsn_ie_len + 2;
wpa_printf(MSG_DEBUG, "STA included RSN IE in (Re)AssocReq");
} }
if (elems.rsnxe) { if (elems.rsnxe) {
elems.rsnxe = elems.rsnxe - 2; elems.rsnxe = elems.rsnxe - 2;
elems.rsnxe_len = elems.rsnxe_len + 2; elems.rsnxe_len = elems.rsnxe_len + 2;
wpa_printf(MSG_DEBUG, "STA included RSN IE in (Re)AssocReq");
} }
if (*sta) { if (*sta) {

View File

@@ -266,6 +266,33 @@ static int ieee802_11_parse_vendor_specific(const u8 *pos, size_t elen,
elems->sae_pk_len = elen - 4; elems->sae_pk_len = elen - 4;
break; break;
#endif /* CONFIG_SAE_PK */ #endif /* CONFIG_SAE_PK */
//TODO think of way to ignore these
case P2P_OUI_TYPE:
/* Wi-Fi Alliance - P2P IE */
break;
case WFD_OUI_TYPE:
/* Wi-Fi Alliance - WFD IE */
break;
case HS20_INDICATION_OUI_TYPE:
/* Hotspot 2.0 */
break;
case HS20_OSEN_OUI_TYPE:
/* Hotspot 2.0 OSEN */
break;
case MBO_OUI_TYPE:
/* MBO-OCE */
break;
case HS20_ROAMING_CONS_SEL_OUI_TYPE:
/* Hotspot 2.0 Roaming Consortium Selection */
break;
case MULTI_AP_OUI_TYPE:
break;
case OWE_OUI_TYPE:
/* OWE Transition Mode element */
break;
case DPP_CC_OUI_TYPE:
/* DPP Configurator Connectivity element */
break;
case WFA_RSNE_OVERRIDE_OUI_TYPE: case WFA_RSNE_OVERRIDE_OUI_TYPE:
elems->rsne_override = pos; elems->rsne_override = pos;
elems->rsne_override_len = elen; elems->rsne_override_len = elen;

View File

@@ -299,8 +299,9 @@
#define WLAN_TIMEOUT_KEY_LIFETIME 2 #define WLAN_TIMEOUT_KEY_LIFETIME 2
#define WLAN_TIMEOUT_ASSOC_COMEBACK 3 #define WLAN_TIMEOUT_ASSOC_COMEBACK 3
#define OUI_WFA 0x506f9a /* DPP Public Action frame identifiers - OUI_WFA */
#define DPP_OUI_TYPE 0x1A #define DPP_OUI_TYPE 0x1A
#define OUI_WFA 0x506f9a
#define WFA_RSNE_OVERRIDE_OUI_TYPE 0x29 #define WFA_RSNE_OVERRIDE_OUI_TYPE 0x29
#define WFA_RSNE_OVERRIDE_2_OUI_TYPE 0x2a #define WFA_RSNE_OVERRIDE_2_OUI_TYPE 0x2a
#define WFA_RSNXE_OVERRIDE_OUI_TYPE 0x2b #define WFA_RSNXE_OVERRIDE_OUI_TYPE 0x2b
@@ -308,6 +309,21 @@
#define RSNE_OVERRIDE_2_IE_VENDOR_TYPE 0x506f9a2a #define RSNE_OVERRIDE_2_IE_VENDOR_TYPE 0x506f9a2a
#define RSNXE_OVERRIDE_IE_VENDOR_TYPE 0x506f9a2b #define RSNXE_OVERRIDE_IE_VENDOR_TYPE 0x506f9a2b
#define WFD_OUI_TYPE 10
#define NAN_OUI_TYPE 0x13
#define MBO_OUI_TYPE 22
#define OWE_OUI_TYPE 28
#define MULTI_AP_OUI_TYPE 0x1B
#define DPP_CC_OUI_TYPE 0x1e
#define SAE_PK_OUI_TYPE 0x1f
#define QM_IE_OUI_TYPE 0x22
#define WFA_CAPA_OUI_TYPE 0x23
#define P2P_OUI_TYPE 9
#define HS20_INDICATION_OUI_TYPE 16
#define HS20_OSEN_OUI_TYPE 18
#define HS20_ROAMING_CONS_SEL_OUI_TYPE 29
#define WMM_OUI_TYPE 2 #define WMM_OUI_TYPE 2
#define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0 #define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0
#define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1 #define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1

View File

@@ -78,6 +78,7 @@ void wifi_init_softap(void)
#else /* CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT */ #else /* CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT */
.authmode = WIFI_AUTH_WPA2_PSK, .authmode = WIFI_AUTH_WPA2_PSK,
#endif #endif
.wpa3_compatible_mode = 1,
.pmf_cfg = { .pmf_cfg = {
.required = true, .required = true,
}, },