Commit Graph
71 Commits
Author SHA1 Message Date
Sarvesh Bodakhe bc4db4f2a3 fix(wifi): scan security validation and NAN timer fixes
- Forbid TKIP cipher suites for WPA3-Enterprise scan results
- Use reason 210 (NO_AP_FOUND_W_COMPATIBLE_SECURITY) when an AP is
  found during a connecting scan but filtered out for incompatible
  security
- Stop NAN timers from re-arming after esp_wifi_stop
2026-06-09 11:52:04 +05:30
Sarvesh Bodakhe 62d32fded9 fix(wifi): set failure_retry_cnt before esp_wifi_set_config
failure_retry_cnt was being set after esp_wifi_set_config(), so the
retry count was never applied to the driver. Move it before the
set_config call so that WPS connection retries work as intended.
2026-04-09 12:01:41 +08:00
Sarvesh Bodakhe 0155748087 fix(wifi): ignore disconnect events outside WPS handshake phase in wps
wifi_station_wps_start() calls esp_wifi_disconnect() to leave a
previously connected AP before scanning for WPS registrars. When the
STA is already connected, the async disconnect event triggers
wps_sm_notify_deauth() which incorrectly treats it as a handshake failure,
disabling WPS entirely.

Guard wps_handle_failure() so it only fires when wps_get_status() is
WPS_STATUS_PENDING, i.e. the STA has found a WPS AP and is actively
in the M1-M8 exchange.
2026-04-09 12:01:41 +08:00
Sarvesh Bodakhe 6118e17532 fix(nan): zero-init pub_id and sub_id in NAN service functions
Both variables were uninitialized, returning a garbage value on
the error (goto fail) path.
2026-04-08 10:24:12 +08:00
Sarvesh Bodakhe b50583c053 fix(wpa_supplicant): fix memory leak on SAE commit queue post failure
In auth_sae_queue(), when wpa3_hostap_post_evt() fails, the queued
entry was left on the list and never freed. This leaks memory under
SAE commit floods or when the event queue is full.

Free the entry and remove it from the list on post failure.
2026-03-05 12:33:45 +05:30
Sarvesh Bodakhe 00571fe874 fix(wifi): send correct wifi_auth_mode_t in event WIFI_EVENT_STA_CONNECTED and logs
- Fixes the authmode sent in WIFI_EVENT_STA_CONNECTED for WPA3-Enterprise, which
  was previously taken directly from the AKM field. This caused incorrect values in some cases.
- Updates the "security" log to show the correct wifi_auth_mode_t.
- Fixes wrong authmode strength used in the connection path.
2025-09-02 12:29:38 +05:30
Sarvesh Bodakhe e5ccbe2e58 fix(wifi): add GCMP-128 cipher support for SoftAP mode
GCMP-256 SoftAP support was previously added as part of SAE Extended Key handling.
2025-08-01 11:47:49 +08:00
Sarvesh Bodakhe 4ed18496c4 fix(wifi): prevent crash in WPS-registrar due to nested 'eap_wsc_reset()' calls
When a WPS handshake is already in progress and the enrollee sends another EAPOL-Start
(e.g., due to missed packets or timeout), the registrar resets its state by calling
'eap_wsc_reset()'. This function frees 'sm->eap_method_priv' and then calls
'esp_wifi_ap_wps_disable()', which internally triggers another call to 'eap_wsc_reset()'.

This results in a double reset where the second invocation accesses the already freed
'sm->eap_method_priv', leading to a crash.

This fix sets 'sm->eap_method_priv' to NULL immediately after freeing it to ensure
any subsequent calls to eap_wsc_reset() do not access an invalid pointer.
2025-08-01 08:42:53 +05:30
Sarvesh Bodakhe e72a3de4b9 fix(wifi): Disconnect station in wps_start instead of wps_enable
Modifies changes from 84e62daedc
2025-07-23 10:47:18 +08:00
Sarvesh Bodakhe e454c9be2d fix(wif): Prevent NON-PMF STA retries if esp_wifi_disconnect() before handshake
Ensure that NON-PMF station does not attemp connection retries when
'esp_wifi_disconnect()' is called before the 4-way-handshake completes,
even if 'failure_retry_cnt' allows retries.
2025-06-17 21:27:38 +08:00
Sarvesh Bodakhe abd18025b2 fix(wifi): Avoid writing to NVS if station configuration is not changed
Fixes the regression introduced by 3d5bf355c3
2025-04-16 19:34:36 +05:30
Sarvesh Bodakhe a7d99f9204 fix(wifi): Fix connection failure for WPA-PSK keymgmt when password is changed
Fixes the regression introduced by 3d5bf355c3
2025-03-28 13:50:42 +05:30
Sarvesh Bodakhe baba98ec32 fix(wifi): Resolved WPS connectivity issue with pre-connected stations
This fixes the issue where station was not able connect using WPS if it was
already in connected state.

wifi_wps_scan_done() issues an esp_wifi_disconnect() before
calling esp_wifi_connect() to associate with the newly discovered AP. This
behavior incorrectly triggered a failure event (WIFI_EVENT_STA_WPS_ER_FAILED)
even though the disconnection was part of the normal WPS flow. This commit
prevents sending the false failure event, ensuring expected WPS behavior.
2025-03-10 14:55:12 +05:30
Sarvesh Bodakhe 3d5bf355c3 fix(wifi): Fix wrong PMKSA cache entry being used when wifi password is changed 2025-02-21 10:54:57 +05:30
Sarvesh Bodakhe 9ed5ea1acf docs: Add migration guide for WPA3-Enterprise authentication modes for v5.4 2025-02-20 16:18:36 +05:30
Sarvesh Bodakhe 572eb92871 fix(wifi): Fix crash when failure_retry_cnt is set in station config
Fixes the regression introduced by 21c2bef602
2025-01-24 13:47:13 +05:30
Sarvesh Bodakhe 21c2bef602 fix(wifi): Fix stack overflow when failure_retry_cnt is set
Fix issue of increased stack usage when failure_retry_cnt is set
and wifi driver internally retries connection attempts
2025-01-24 13:49:31 +08:00
Sarvesh Bodakhe c9fb7769af fix(wifi): Fix bug in authmode detection for wpa2/wpa3 enterprise
WPA3-Enterprise mandates the use of AKM suite selector
00:0F:AC:5 (IEEE80211 802.1X with SHA-256)
2025-01-08 12:44:05 +05:30
Sarvesh Bodakhe 6fd082f8ac feat(wpa_supplicant): Add WIFI_EVENT_AP_WRONG_PASSWORD in SoftAP
This event is triggered when external station tries connecting to softAP
with wrong password.

Currently supported softAP AUTH modes: WPA-PSK, WPA2-PSK and WPA3-PSK (SAE-auth)
2024-12-14 18:17:53 +05:30
Sarvesh Bodakhe a01a3751f2 Merge branch 'bugfix/softap_wrong_disconnect_reason_code' into 'master'
fix(wifi): Fix wrong reason code used when softAP issues a disconnect for station

Closes WIFIBUG-454

See merge request espressif/esp-idf!33220
2024-10-21 19:01:46 +08:00
Sarvesh Bodakhe 6797c86135 fix(wifi): Fix wrong wifi reason codes reported on station and softAP
- Fix wrong reason code reported when softAP issues a disconnect for station
- Fix wrong reason code reported when association timeout happens at station
- Deprecate enums WIFI_REASON_ASSOC_EXPIRE, WIFI_REASON_NOT_AUTHED, WIFI_REASON_NOT_ASSOCED
  and use WIFI_REASON_DISASSOC_DUE_TO_INACTIVITY,
  WIFI_REASON_CLASS2_FRAME_FROM_NONAUTH_STA,
  WIFI_REASON_CLASS3_FRAME_FROM_NONASSOC_STA respectively
- Update wifi documentation related to reason codes
2024-10-21 11:31:17 +08:00
Sarvesh Bodakhe 61a13d7e3b fix(wifi): Add support to recongize different WPA3 Authentication modes from specs
Add support  to recognize APs supporting 'WPA3-Enterprise-Only Mode' and
'WPA3-Enterprise-Transition Mode' using authmodes WIFI_AUTH_WPA3_ENTERPRISE
and WIFI_AUTH_WPA2_WPA3_ENTERPRISE, respectively.
2024-10-17 11:12:29 +05:30
Sarvesh Bodakhe 1acf446369 Merge branch 'fix/add_wifi_public_header_checksums' into 'master'
feat(wifi/coex): Add integrity check for public headers files for esp32c5, esp32c61 and esp32_host

See merge request espressif/esp-idf!33932
2024-10-09 23:49:12 +08:00
Sarvesh Bodakhe 8b4ebea872 ci: Add md5 checksum validation for COEX public header files for new chips
Add MD5 checksum validation for public header files of the following new chips:
esp32c5 and esp32c61.
2024-10-09 23:11:09 +08:00
Sarvesh Bodakhe 5cab997c15 ci: Add md5 checksum validation for WiFi public header files for new chips
Add MD5 checksum validation for public header files of the following new chips:
esp32c5, esp32c6, and esp32_host.
2024-10-09 23:11:09 +08:00
Sarvesh Bodakhe 2d6188ea76 feat(wifi): Add checks for public headers for esp32c5, esp32c61 and esp32_host
Add md5sum integrity check for public header files for esp32c5, esp32c61
and esp32_host libraries.
2024-10-09 23:11:09 +08:00
Sarvesh Bodakhe 9ebfd93c5d fix(wpa_supplicant): Fix debug print in wps_start_msg_timer() 2024-10-07 16:31:43 +05:30
Sarvesh Bodakhe 463149cad2 fix(wifi): Fix bug in wrong profile checking of AP's RSNXE IE 2024-10-07 16:31:43 +05:30
Sarvesh Bodakhe 5a1dd12513 fix(wifi): Do not try re-connection when sta disconnects with esp_wifi_disconnect()
Do not follow wifi_config::wifi_sta_config::failure_retry_cnt logic when
station itself issues a disconnect from AP/Router using
esp_wifi_disconnect()
2024-09-30 17:04:01 +05:30
Sarvesh Bodakhe 3fbd7eb80b fix(wifi): Free scan configuration after use when channel bitmap is used 2024-07-17 17:34:02 +05:30
Sarvesh Bodakhe 20a3be5191 fix(wpa_supplicant): Avoid delaying removal of wps enrollee by 10ms
This is no longer needed as eloop timers are now executed in wifi task context.
2024-07-11 14:53:27 +05:30
Sarvesh Bodakhe 54e61fbb97 fix(wpa_supplicant): Handle case when WPS registrar misses WSC_DONE sent by station
When registrar somehow misses the WSC_DONE sent by station and station
goes for next connection after sending deauth, make sure that softAP
disables the registrar.
2024-07-11 14:53:24 +05:30
Sarvesh Bodakheandjgujarathi ac508b5778 fix(wifi): Fix issue of supplicant using wrong parameters to configure bss
- Ensure that wpa_supplicant's state machine registers the requirement for rsnxe
  before deciding to add rsnxe to a assoc request.

Co-authored-by: jgujarathi <jash.gujarathi@espressif.com>
2024-07-01 15:32:45 +05:30
Sarvesh Bodakhe 205fa4fa6e fix(wifi): Fix station PMF issue
Fix issue of station PMF not getting reset when disconnecing from PMF connection
2024-06-18 13:32:07 +05:30
Sarvesh Bodakhe 4cde0246a6 fix(wifi): Add back WIFI_AUTH_WPA3_EXT_PSK and WIFI_AUTH_WPA3_EXT_PSK_MIXED_MODE
Add back above authmodes instead of removing and merging them with WIFI_AUTH_WPA3_PSK
in minor releases during v5.x.

These authmodes will be removed from v6.0
2024-05-30 19:16:45 +05:30
Sarvesh Bodakhe 6f966dd0ee fix(esp_wifi): Add some bugfixes and cleanup in softAP
1. Fix wrong reason code in 'WIFI_EVENT_AP_STADISCONNECTED' event
2. cleanup in softAP for disconnecting connected station
3. Update examples to display reason while processing WIFI_EVENT_AP_STADISCONNECTED event
2024-05-19 00:52:59 +05:30
Sarvesh Bodakhe bc63f1e7fa fix(wifi): Fix issue of wrong Rx control information of espnow packets
Only for esp32 and esp32s2
2024-05-08 17:11:34 +05:30
Sarvesh Bodakhe 2700b750b6 fix(wifi): Fix issue in scan when AP advertises WPA and WPA2 with SAE AKM 2024-05-06 11:43:27 +05:30
Sarvesh Bodakhe d97c8ed1b1 fix(wifi): Add bugfix to avoid RSNXE and KDE mismatch during 4-way-handshake 2024-04-16 19:49:28 +05:30
Sarvesh Bodakhe 72f0c47526 fix(esp_wifi): Fix regression caused by fe35466c when supplicant logs enabled 2024-03-20 10:53:30 +05:30
Sarvesh Bodakhe 1d71178193 fix(wpa_supplicant): Add bugfixes related to ciphersuites in wifi enterprise
- Avoid downgrading TLS ciphersuites when client RSA keys are larger than RSA-2048 bit.
- Note that when using bigger certificates on low-power chips without crypto
  hardware acceleration, it is recommended to adjust the task watchdog timer (TWDT)
  if it is enabled. For precise information on timing requirements, you can check
  performance numbers at https://github.com/espressif/mbedtls/wiki/Performance-Numbers.
2024-03-20 09:33:52 +05:30
Sarvesh Bodakhe 05b882baea fix(wpa_supplicant): Update cipher suite list for TLSv1.3 suiteb and some refactoring
- Use MBEDTLS_TLS1_3_AES_256_GCM_SHA384 cipher for TLSv1.3-suiteb
- Call psa_crypto_init() in tls_connection_init() to reduce redundancy
2024-03-20 09:33:52 +05:30
Sarvesh Bodakhe 5903e9ea2b feat(wpa_supplicant): Make CONFIG_ESP_WIFI_EAP_TLS1_3 an experimental feature 2024-03-20 09:33:52 +05:30
Sarvesh Bodakhe 5ce95cae91 fix(esp_wifi): Enable Server certificate validation when using mbedtls TLS v1.3
In TLS v1.2, It was possible to disable server certificate validation simply by using
API 'mbedtls_ssl_conf_authmode'. But this behaviour is changed in TLS v1.3. We can not
disable server certificate validation in TLS v1.3 using this API anymore.

For more details, refer https://github.com/Mbed-TLS/mbedtls/issues/7075
2024-03-20 09:33:52 +05:30
Sarvesh Bodakhe ec09cdf885 feat(wpa_supplicant): Add TLS v1.3 support for WiFi enterprise
* Add TLS v1.3 support for following EAP methods:
  - EAP-TLS  (RFC 9190)
  - EAP-PEAP (RFC 9427)
  - EAP-TTLS (RFC 9427)
* Add mbedtls porting for TLS v1.3 exporter (RFC 8446 Section 7.5)
* Add new Kconfig flag to enable TLS v1.3 for EAP methods
* Advertise TLS v1.3 signature algorithms if TLS 1.3 is enabled for EAP
  methods
* Advertise TLS v1.3 cipher suites if CONFIG_ESP_WIFI_EAP_TLS1_3 enabled
* Add support to Ack protected success indication
  (workaround for EAP-TLS 1.3 and 1.2 compatibilty)
2024-03-20 09:33:52 +05:30
Sarvesh Bodakhe 886bf9e82f feat(wpa_supplicant): Add support for RFC 5705 TLS exporter context with mbedTLS 2024-03-20 09:33:52 +05:30
Sarvesh Bodakhe 0ed1cadcf1 feat(esp_wifi): Update Wi-Fi WPA3 authmodes as per WPA Specification v3.3
* Merge 'WIFI_AUTH_WPA3_EXT_PSK' and 'WIFI_AUTH_WPA3_EXT_PSK_MIXED_MODE'
  into 'WIFI_AUTH_WPA3_PSK' as per specification.
2024-03-19 11:33:55 +05:30
Sarvesh Bodakhe fe35466cdd fix(wpa_supplicant): Improve execution flow for WPS registrar public APIs
Make sure that WPS registrar public APIs do not modify supplicant
data in application task context. Execute API functionlity in eloop
context to prevent protential race conditions.
2024-03-18 12:43:39 +05:30
Sarvesh Bodakhe aad6f44c25 fix(wifi): Avoid dereferencing a dangling function pointer in WPS supplicant
Avoid dereferencing a dangling function pointer in 'eap_server_sm_deinit()'.
This issue arises when hostap unregisteres EAP methods before it removes
the server state machine for station.
2024-03-18 12:43:38 +05:30
Sarvesh Bodakhe 34725cdbfd feat(wifi): Add support SAE-PK and WPA3-Enterprise transition disable 2024-03-15 13:55:31 +05:30
Sarvesh Bodakhe 0154e81d87 feat(wifi): Sync public header files between ESP-IDF and Wi-Fi driver
- Updated WiFi libraries based on the IDF changes
- Renamed esp_wifi_native.h to esp_wifi_types_native.h
- Reverted forward declarations of native wifi types and HE types
- Forward declare as opaque structs only if we don't have native types (csi and ctrl_packet types)
2024-02-01 12:17:43 +01:00
Sarvesh Bodakhe c0b3af2292 fix(esp_wifi): Add md5sum validation checks for new public headers and sync headers
Add checks for following public headers:
- esp_wifi_types_generic.h
- esp_wifi_native.h
2024-02-01 12:17:43 +01:00
Sarvesh Bodakhe 615d928aa5 fix(esp_wifi): Add support for WPA3 + WPA3_EXT_PSK mixed mode and minor bugfixes
- Add support for WPA3 + WPA3_EXT_PSK mixed mode
- Improvements in scan and connect path as per specifications along with
  minor bugfixes
- When AP advertises all PSK modes (WPA, WPA2 and WPA3), make sure that
  station treats it as WPA2_WPA3_PSK mixed mode.

Closes https://github.com/espressif/esp-idf/issues/12517
2024-01-11 10:42:38 +08:00
Sarvesh Bodakhe b42e14c9b7 fix(wifi): fix bug in 'esp_wifi_deauthenticate_internal' and other improvements 2023-11-15 08:27:50 +05:30
Sarvesh Bodakhe 2d83e3e7f4 fix(wpa_supplicant): Add some bugfixes in wpa_supplicant
1) Add parameter to configure reason code of deauth frame
2) Add logs to indicate MIC failure 4-Way-Handshake
3) Process RSNXE capabilities only if AP advertises them
2023-11-15 08:06:37 +05:30
Sarvesh Bodakhe 0a95914839 fix(esp_wifi): Fix issue of station disconnecting immediately when AP RSSI is zero 2023-10-27 09:35:20 +05:30
Sarvesh Bodakhe 2c3394ff01 fix(wpa_supplicant): Add support to detect PBC overlap in wps registrar mode 2023-08-11 16:06:23 +05:30
Sarvesh Bodakhe bb88774286 esp_wifi: Fix tx_callback issue for ESP32C6 2023-05-04 14:13:39 +05:30
Sarvesh Bodakhe cd0d42d43b wpa_supplicant: Use 'mbedtls_pk_parse_public_key' to parse compressed EC public key and remove unnecessary code
Support to parse compressed EC public key is added from 'mbedtls-3.4.0'
2023-04-28 18:23:42 +05:30
Sarvesh Bodakhe 9e4915b81b esp-wifi: add station SAE-PK (Public Key) configuration note 2023-04-28 18:23:42 +05:30
Sarvesh Bodakhe 0518d2eb65 wpa_supplicant: Fix PMKID SHA-256 related regression
Fixed regression caused by commit 38e9c8b4
2023-04-26 18:00:32 +05:30
Sarvesh Bodakhe 41f5be80e8 esp_wifi: Validate softap interface when sending beacon frame 2023-04-10 19:16:47 +08:00
Sarvesh Bodakhe 96a2ae937c esp_wifi: handle SA-Query bug in AP-STA concurrent mode when both connections are PMF enabled 2023-03-31 18:20:28 +05:30
Sarvesh Bodakhe b89a851645 esp_wifi: Move wpa_supplicant WIFI_EVENT_STA_CONNECTED and WIFI_EVENT_STA_DISCONNECTED event handlers into callbacks
Executing supplicant WIFI_EVENT_STA_CONNECTED and WIFI_EVENT_STA_DISCONNECTED handlers in event-handler context can lead to concurrency issues.
Moving the functionality into 'wpa_sta_connected_cb' and 'wpa_sta_disconnected_cb' callbacks and execute in ppTask context.
2023-03-31 12:34:03 +05:30
Sarvesh Bodakhe 7fb6f3b9e3 esp_wifi: remove unnecessary code under SAE-PK configuration 2023-03-31 12:34:03 +05:30
Sarvesh Bodakhe 56dd04c7f6 esp_wifi: improve station SA query procedure handling
1. disable SA query timers when station disconnect and other SA query related improvements
2. send appropriate reason code in 4 way handshake failure
2023-03-20 19:35:42 +05:30
Sarvesh Bodakhe 5b6676da21 esp_wifi: fix typo in wifi_enterprise example README
Closes https://github.com/espressif/esp-idf/issues/10042
2023-02-22 12:36:06 +05:30
Sarvesh Bodakhe d2f6a3dacc esp-wifi: add SAE-PK (Public Key) authentication support for station 2023-02-16 13:49:11 +05:30
Sarvesh Bodakhe 299e32ce68 esp_wifi: softap: buffer deauth, disassoc, action frames for connected station in sleep mode
1) improve deauth/disassoc handling
2) improve SA-query procedure handling
2023-02-03 00:10:00 +05:30
Sarvesh Bodakhe a24062d080 esp_wifi: improvements in station and softAP for connection management
1) station: send deauth while going from assoc to init, if reason is assoc timeout
2) softAP pmf: do not drop open deauth/disassoc if keys are not generated
3) softAP pmf: improvements in SA query handling
2023-02-01 12:22:46 +05:30
Sarvesh Bodakhe ecafe007e5 esp_wifi: Update wifi libs
Update wifi libs with below changes -
1. reject AP when assoc comeback time given is greater than 5 seconds
2. handle when assoc req is received before SA query procedure is finished

Closes https://github.com/espressif/esp-idf/issues/9428
2022-12-14 12:17:53 +05:30