From 5e60fb4fd4ab3c4f65d29b1c08adf627ccfa412e Mon Sep 17 00:00:00 2001 From: Shreyas Sheth Date: Thu, 6 Apr 2023 18:43:06 +0530 Subject: [PATCH] esp_wifi: Install keys after eapol and NVS store security values 1. Bugfix store authmode security in NVS 2. Install keys after successful transmission of EAPOL 4/4 Message --- components/esp_wifi/lib | 2 +- .../wpa_supplicant/src/esp_supplicant/esp_wifi_driver.h | 1 + components/wpa_supplicant/src/rsn_supp/wpa.c | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index 07f3665430..26b2a6da3b 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit 07f3665430637bbc45650292038be0ea2f2b0d97 +Subproject commit 26b2a6da3b96bceffd7154055e23c847f727c26f diff --git a/components/wpa_supplicant/src/esp_supplicant/esp_wifi_driver.h b/components/wpa_supplicant/src/esp_supplicant/esp_wifi_driver.h index dbfaa51e06..5154588603 100644 --- a/components/wpa_supplicant/src/esp_supplicant/esp_wifi_driver.h +++ b/components/wpa_supplicant/src/esp_supplicant/esp_wifi_driver.h @@ -280,5 +280,6 @@ esp_err_t esp_wifi_remain_on_channel(uint8_t ifx, uint8_t type, uint8_t channel, uint8_t esp_wifi_sta_get_config_sae_pwe_h2e_internal(void); uint8_t esp_wifi_sta_get_use_h2e_internal(void); void esp_wifi_sta_disable_wpa2_authmode_internal(void); +bool esp_wifi_eb_tx_status_success_internal(void *eb); #endif /* _ESP_WIFI_DRIVER_H_ */ diff --git a/components/wpa_supplicant/src/rsn_supp/wpa.c b/components/wpa_supplicant/src/rsn_supp/wpa.c index 2054127d2b..a029224560 100644 --- a/components/wpa_supplicant/src/rsn_supp/wpa.c +++ b/components/wpa_supplicant/src/rsn_supp/wpa.c @@ -2581,6 +2581,12 @@ void eapol_txcb(void *eb) case WPA_FIRST_HALF_4WAY_HANDSHAKE: break; case WPA_LAST_HALF_4WAY_HANDSHAKE: + + if (esp_wifi_eb_tx_status_success_internal(eb) != true) { + wpa_printf(MSG_ERROR, "Eapol message 4/4 tx failure, not installing keys"); + return; + } + if (sm->txcb_flags & WPA_4_4_HANDSHAKE_BIT) { sm->txcb_flags &= ~WPA_4_4_HANDSHAKE_BIT; isdeauth = wpa_supplicant_send_4_of_4_txcallback(sm);