This is an automated email from the ASF dual-hosted git repository. archer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push: new b739b2b18a xtensa/esp32s3: Support WPA3 on softap mode b739b2b18a is described below commit b739b2b18ae83151345d2cdf5c7ae73998092d0b Author: chen...@espressif.com <chen...@espressif.com> AuthorDate: Fri Dec 29 19:35:25 2023 +0800 xtensa/esp32s3: Support WPA3 on softap mode Signed-off-by: chen...@espressif.com <chen...@espressif.com> --- arch/xtensa/src/esp32s3/Kconfig | 14 +++++++++++ arch/xtensa/src/esp32s3/Make.defs | 2 +- arch/xtensa/src/esp32s3/Wireless.mk | 32 ++++++++++++++++++++++++++ arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c | 19 +++++++++++++-- 4 files changed, 64 insertions(+), 3 deletions(-) diff --git a/arch/xtensa/src/esp32s3/Kconfig b/arch/xtensa/src/esp32s3/Kconfig index 0568c64e74..04e4e86e10 100644 --- a/arch/xtensa/src/esp32s3/Kconfig +++ b/arch/xtensa/src/esp32s3/Kconfig @@ -1407,6 +1407,20 @@ config ESP32S3_WIFI_STATION_SOFTAP endchoice # ESP32S3 Wi-Fi mode +config ESP_WIFI_ENABLE_SAE_PK + bool "Enable SAE-PK" + default y + ---help--- + Select this option to enable SAE-PK + +config ESP_WIFI_ENABLE_WPA3_OWE_STA + bool "Enable OWE STA" + default y + ---help--- + Select this option to allow the device to establish OWE connection with eligible AP's. + PMF (Protected Management Frames) is a prerequisite feature for a WPA3 connection, it needs to be + explicitly configured before attempting connection. Please refer to the Wi-Fi Driver API Guide for details. + config ESP32S3_WIFI_STATIC_RXBUF_NUM int "Wi-Fi static RX buffer number" default 10 diff --git a/arch/xtensa/src/esp32s3/Make.defs b/arch/xtensa/src/esp32s3/Make.defs index 3dd9169823..d6563457cc 100644 --- a/arch/xtensa/src/esp32s3/Make.defs +++ b/arch/xtensa/src/esp32s3/Make.defs @@ -191,7 +191,7 @@ endif ESP_HAL_3RDPARTY_REPO = esp-hal-3rdparty ifndef ESP_HAL_3RDPARTY_VERSION - ESP_HAL_3RDPARTY_VERSION = 22804823777dbbb7f43925b7729b3a32331aa7cd + ESP_HAL_3RDPARTY_VERSION = 72cebefc6238637ae0a0ec6641fa4e2a0faa4901 endif ifndef ESP_HAL_3RDPARTY_URL diff --git a/arch/xtensa/src/esp32s3/Wireless.mk b/arch/xtensa/src/esp32s3/Wireless.mk index 9ca8d91fa8..224f6eaf15 100644 --- a/arch/xtensa/src/esp32s3/Wireless.mk +++ b/arch/xtensa/src/esp32s3/Wireless.mk @@ -87,6 +87,20 @@ CHIP_CSRCS += platform.c CHIP_CSRCS += sha1.c CHIP_CSRCS += sha256.c CHIP_CSRCS += sha512.c +CHIP_CSRCS += pk.c +CHIP_CSRCS += pk_wrap.c +CHIP_CSRCS += pkparse.c +CHIP_CSRCS += ecdsa.c +CHIP_CSRCS += asn1parse.c +CHIP_CSRCS += asn1write.c +CHIP_CSRCS += rsa.c +CHIP_CSRCS += md5.c +CHIP_CSRCS += oid.c +CHIP_CSRCS += pem.c +CHIP_CSRCS += hmac_drbg.c +CHIP_CSRCS += hash_info.c +CHIP_CSRCS += rsa_alt_helpers.c +CHIP_CSRCS += ecdh.c VPATH += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)mbedtls$(DELIM)port @@ -113,6 +127,16 @@ CFLAGS += $(DEFINE_PREFIX)ESP_SUPPLICANT CFLAGS += $(DEFINE_PREFIX)ESPRESSIF_USE CFLAGS += $(DEFINE_PREFIX)IEEE8021X_EAPOL CFLAGS += $(DEFINE_PREFIX)USE_WPA2_TASK +CFLAGS += $(DEFINE_PREFIX)CONFIG_SHA256 +CFLAGS += $(DEFINE_PREFIX)CONFIG_SAE + +ifeq ($(CONFIG_ESP_WIFI_ENABLE_SAE_PK),y) +CFLAGS += $(DEFINE_PREFIX)CONFIG_SAE_PK +endif + +ifeq ($(CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA),y) +CFLAGS += $(DEFINE_PREFIX)CONFIG_OWE_STA +endif ifeq ($(CONFIG_ESP_WIFI_GCMP_SUPPORT),y) CFLAGS += $(DEFINE_PREFIX)CONFIG_GCMP @@ -131,6 +155,7 @@ INCLUDES += $(INCDIR_PREFIX)$(ARCH_SRCDIR)$(DELIM)$(WIFI_WPA_SUPPLICANT)$(DELIM) CHIP_CSRCS += ap_config.c CHIP_CSRCS += ieee802_11.c +CHIP_CSRCS += comeback_token.c CHIP_CSRCS += pmksa_cache_auth.c CHIP_CSRCS += sta_info.c CHIP_CSRCS += wpa_auth_ie.c @@ -143,6 +168,10 @@ INCLUDES += $(INCDIR_PREFIX)$(ARCH_SRCDIR)$(DELIM)$(WIFI_WPA_SUPPLICANT)$(DELIM) CHIP_CSRCS += dragonfly.c CHIP_CSRCS += sae.c CHIP_CSRCS += wpa_common.c +CHIP_CSRCS += sae_pk.c +CHIP_CSRCS += bss.c +CHIP_CSRCS += scan.c +CHIP_CSRCS += ieee802_11_common.c VPATH += $(WIFI_WPA_SUPPLICANT)$(DELIM)src$(DELIM)crypto @@ -213,6 +242,8 @@ CHIP_CSRCS += esp_wpa_main.c CHIP_CSRCS += esp_wpa2.c CHIP_CSRCS += esp_wpa3.c CHIP_CSRCS += esp_wpas_glue.c +CHIP_CSRCS += esp_owe.c +CHIP_CSRCS += esp_scan.c VPATH += $(WIFI_WPA_SUPPLICANT)$(DELIM)esp_supplicant$(DELIM)src$(DELIM)crypto @@ -223,5 +254,6 @@ CHIP_CSRCS += crypto_mbedtls-ec.c CHIP_CSRCS += crypto_mbedtls-rsa.c CHIP_CSRCS += crypto_mbedtls.c CHIP_CSRCS += tls_mbedtls.c +CHIP_CSRCS += aes-siv.c endif diff --git a/arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c b/arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c index 74c40e541b..daf72babd5 100644 --- a/arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c +++ b/arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c @@ -116,6 +116,8 @@ # define DEFAULT_PS_MODE WIFI_PS_NONE #endif +#define ESP_MAX_PRIORITIES (25) + /**************************************************************************** * Private Types ****************************************************************************/ @@ -1810,8 +1812,14 @@ static int32_t esp_task_create_pinned_to_core(void *entry, cpu_set_t cpuset; #endif - pid = kthread_create(name, prio, stack_depth, entry, - (char * const *)param); + uint32_t target_prio = prio; + if (target_prio < ESP_MAX_PRIORITIES) + { + target_prio += esp_task_get_max_priority() - ESP_MAX_PRIORITIES; + } + + pid = kthread_create(name, target_prio, stack_depth, entry, + (char * const *)param); if (pid > 0) { if (task_handle != NULL) @@ -6476,6 +6484,13 @@ int esp_wifi_softap_auth(struct iwreq *iwr, bool set) wifi_cfg.ap.authmode = WIFI_AUTH_WPA2_PSK; break; + case IW_AUTH_WPA_VERSION_WPA3: + wifi_cfg.ap.pmf_cfg.required = true; + wifi_cfg.ap.pmf_cfg.capable = false; + wifi_cfg.ap.sae_pwe_h2e = WPA3_SAE_PWE_BOTH; + wifi_cfg.ap.authmode = WIFI_AUTH_WPA3_PSK; + break; + default: wlerr("Invalid wpa version %" PRId32 "\n", iwr->u.param.value);