Commit Graph
365 Commits
Author SHA1 Message Date
Shreyas Sheth 81940d44bc fix(wifi): Resolve comments for softap fixes 2024-12-27 16:21:52 +05:30
Shreyas Sheth d0631ec21d fix(wifi): Resolve comments on feature/softap_fixes_for_ceritification 2024-12-27 15:58:47 +05:30
Shreyas Sheth d6054570e9 fix(wifi): Make sure auth is sent after sae process 2024-12-27 15:58:47 +05:30
Shreyas Sheth 484736976c feat(wifi): Add support for transition_disable for softAP
Bugfix rsnxe len for assoc req
2024-12-27 15:58:47 +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
Shyamal Khachane 624878b6e2 fix(esp_wifi): Populate appropriate reason codes when softAP sends deauthentication
Populate appropriate reason for sending deauthentication when softAP receives
invalid RSN IE from association request
2024-10-21 11:31:17 +08:00
aditi beda284524 feat(esp_wifi): Add esp-idf specific changes
Added esp-idf implementation specific changes on top of the upstream updates.
2024-09-29 19:13:20 +08:00
aditi fbde07c953 feat(esp_wifi): Replace crypto_key with crypto_ec_key
Replaced all occurances of crypto_key with crypto_ec_key struct
    to make the code more consistent with upstream.
2024-09-29 19:13:20 +08:00
aditi_lonkar cab4dc15f4 feat(esp_wifi): Restructure dpp crypto Layer APIs
1) Update dpp implementation as per upstram hostapd tag hostap_2_10.
2) Move dpp crypto routines into a separate source code file.
2024-09-29 19:13:20 +08:00
yinqingzhao a8ede32979 fix(wifi): modify some SOC_WIFI_SUPPORT_5G to CONFIG_SOC_WIFI_SUPPORT_5G 2024-09-24 13:14:51 +08:00
Jiang Jiang Jian d076f0ad80 Merge branch 'feat/wifi_crypto_funcs_cleanup' into 'master'
Cleanup of wifi crypto funcs within wifi libs

See merge request espressif/esp-idf!30698
2024-09-23 21:08:50 +08:00
jgujarathi 52bcdb9400 refactor(esp_wifi): Cleanup of wifi crypto funcs within wifi libs
- Remove unnecessary funcs from wpa_crypto_funcs_t and consolidate some
  of their usages in wifi libs
2024-09-23 14:24:08 +05:30
Jouni Malinen 05874b938e SAE: Reject invalid Rejected Groups element in the parser
There is no need to depend on all uses (i.e., both hostapd and
wpa_supplicant) to verify that the length of the Rejected Groups field
in the Rejected Groups element is valid (i.e., a multiple of two octets)
since the common parser can reject the message when detecting this.

Signed-off-by: Jouni Malinen <j@w1.fi>
2024-09-23 12:05:02 +08:00
Jouni Malinen ba76df4f69 SAE: Check for invalid Rejected Groups element length explicitly
Instead of practically ignoring an odd octet at the end of the element,
check for such invalid case explicitly. This is needed to avoid a
potential group downgrade attack.

Signed-off-by: Jouni Malinen <j@w1.fi>
2024-09-23 12:05:02 +08:00
Jouni Malinen b6f91e403a SAE: Check that peer's rejected groups are not enabled in AP
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
2024-09-23 12:05:02 +08:00
Kapil Gupta 903c11ff1a Merge branch 'bugfix/dpp_5ghz_chan_support' into 'master'
fix(esp_wifi): Add support for 5ghz channel list for easy connect

Closes WIFI-6420

See merge request espressif/esp-idf!32146
2024-09-20 14:46:05 +08:00
Kapil Gupta e24005c8db fix(esp_wifi): Add support for 5ghz channel list for easy connect 2024-09-20 14:46:05 +08:00
Kapil Gupta 52002bf92d fix(esp_wifi): Allow connection with WPA mode in WPS 2024-09-20 14:16:01 +08:00
Kapil Gupta 27cf5267a1 fix(esp_wifi): Added prints in btm roam for error condition 2024-09-18 14:44:24 +08:00
xuxiao 8780375859 feat(wifi): add wifi support for esp32c61 2024-08-30 20:43:06 +08:00
Shyamal Khachane 4e3951a587 fix(esp_wifi): Recompute keys in OWE if AP does not include PMKID in assoc response 2024-07-18 18:15:02 +08:00
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
Alexey Lapshin f328e06ed4 fix(wpa_supplicant): fix warnings found by GNU static analyzer 2024-06-18 14:25:37 +08:00
muhaidong 812faf4f7d fix(wifi): fix configure gcmp failure issue 2024-06-07 14:04:23 +08:00
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
Kapil Gupta 95b522a1be fix(wifi): Fix encryption/decryption issue for mgmt packets
* Fix issues related to mgmt packets encryption in GCMP
* Fix issue of wrong decryption of mgmt packets when PMF is enabled
* Fix softAP bug in handling of SAE Reauthentication
2024-04-16 19:49:09 +05:30
Shreyas Sheth 73ec4a74fd fix(esp_wifi): Fix crash when assoc req comes before confirm is processed 2024-04-02 14:28:59 +05:30
jgujarathi b23e29d5ae fix(wpa_supplicant): Add current bss channel as hint to scanning
- Add current bss channel as hint to scanning during supplicant connect
  making the process faster.
2024-04-01 23:00:01 +08:00
jgujarathi 743772fb76 fix(btm): Improve BTM scanning effiency by using channel bitmap
- Improve the BTM scanning efficiency by using channel bitmap feature in
  scanning. This sets only the channels we need to scan instead of all.
2024-04-01 23:00:01 +08:00
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 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
Glenn Strauss b3e4aae7bb TLS: Fix unsigned int underflow in internal TLS 1.0/1.1 implementation
Taking sizeof(ptr) is incorrect to determine size of passed in hash and
results in hlen getting set to a very large value since MD5_MAC_LEN >
sizeof(ptr). Provide the actual size of the hash buffer from the caller
to fix this.

tls_key_x_server_params_hash() callers src/tls/tlsv1_client_read.c and
src/tls/tlsv1_server_write.c both pass in a large enough hash (hash[64]
or hash[100]) that this does not appear to have an impact, though it is
still wrong.

Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
2024-03-20 09:33:52 +05:30
Glenn Strauss b58dbf2808 Update tls_connection_set_verify() documentation to verify_peer=2
This new value was added to verify peer certificate if it is provided,
but not reject the TLS handshake if no peer certificate is provided.

Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
2024-03-20 09:33:52 +05:30
Jouni Malinen 8ff4837830 Fix tls_connection_set_success_data() in TLS library wrappers
Some of the TLS library wrappers defined only an empty function for
tls_connection_set_success_data(). That could result in memory leaks in
TLS server cases, so update these to do the minimal thing and free the
provided buffer as unused.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
2024-03-20 09:33:52 +05:30
Jouni Malinen 6658c3ed63 Remove useless DH file configuration from TLS library wrappers
These operations do not really have any effect since
tls_connection_set_params() is used only in the TLS client case and the
client receives the DH parameters from the server instead of local
configuration.

Signed-off-by: Jouni Malinen <j@w1.fi>
2024-03-20 09:33:52 +05:30
Jouni Malinen 89fc940ec0 EAP-TLS: Do not allow TLSv1.3 success without protected result indication
RFC 9190 requires protected result indication to be used with TLSv1.3,
so do not allow EAP-TLS to complete successfully if the server does not
send that indication.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
2024-03-20 09:33:52 +05:30
Jouni Malinen 98183fe062 EAP-TLS: Replace the Commitment Message term with RFC 9190 language
While the drafts for RFC 9190 used a separate Commitment Message term,
that term was removed from the published RFC. Update the debug prints to
match that final language.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
2024-03-20 09:33:52 +05:30
Jouni Malinen 9cb8c0545f EAP-TLS: Update specification references to RFC 5216 and 9190
The previously used references were pointing to an obsoleted RFC and
draft versions. Replace these with current versions.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
2024-03-20 09:33:52 +05:30
Alexander Clouter b17d6a1b3a EAP-TTLS peer: Handle Commitment Message for TLS 1.3
Recognize the explicitly defined Commitment Message per
draft-ietf-emu-eap-tls13-13 at the conclusion of the EAP-TTLS with TLS
1.3.

Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
2024-03-20 09:33:52 +05:30
Alexander Clouter 65248148f0 EAP-TLS peer: Handle Commitment Message for TLS 1.3
Recognize the explicitly defined Commitment Message per
draft-ietf-emu-eap-tls13-13 at the conclusion of the EAP-TLS with TLS
1.3.

Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
2024-03-20 09:33:52 +05:30
Alexander Clouter a5ee253d62 EAP: Extend Session-Id derivation with TLS 1.3 to PEAP and EAP-TTLS
This newer Session-Id/Method-Id derivation is used with PEAP and
EAP-TTLS when using TLS 1.3 per draft-ietf-emu-tls-eap-types-00, so do
not limit this to only EAP-TLS.

Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
2024-03-20 09:33:52 +05:30
Alexander Clouter 42e37285e5 EAP-TTLS: Key derivation per draft-ietf-emu-tls-eap-types-00
Use the TLS-Exporter with the label and context as defined in
draft-ietf-emu-tls-eap-types-00 when deriving keys for EAP-TTLS with TLS
1.3.

Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
2024-03-20 09:33:52 +05:30
Alexander Clouter 0d90484018 EAP-PEAP: Key derivation per draft-ietf-emu-tls-eap-types-00
Use the TLS-Exporter with the label and context as defined in
draft-ietf-emu-tls-eap-types-00 when deriving keys for PEAP with TLS
1.3.

Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
2024-03-20 09:33:52 +05:30
Alexander Clouter 252dd1b976 EAP-TTLS/PEAP peer: Fix failure when using session tickets under TLS 1.3
EAP peer does not expect data present when beginning the Phase 2 in
EAP-{TTLS,PEAP} but in TLS 1.3 session tickets are sent after the
handshake completes.

There are several strategies that can be used to handle this, but this
patch picks up from the discussion[1] and implements the proposed use of
SSL_MODE_AUTO_RETRY. SSL_MODE_AUTO_RETRY has already been enabled by
default in OpenSSL 1.1.1, but it needs to be enabled for older versions.

The main OpenSSL wrapper change in tls_connection_decrypt() takes care
of the new possible case with SSL_MODE_AUTO_RETRY for
SSL_ERROR_WANT_READ to indicate that a non-application_data was
processed. That is not really an error case with TLS 1.3, so allow it to
complete and return an empty decrypted application data buffer.
EAP-PEAP/TTLS processing can then use this to move ahead with starting
Phase 2.

[1] https://www.spinics.net/lists/hostap/msg05376.html

Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
2024-03-20 09:33:52 +05:30
Jouni Malinen a5b01a93ff EAP-TTLS peer: Support vendor EAP method in Phase 2
The implementation was previously hardcoded to use only the non-expanded
IETF EAP methods in Phase 2. Extend that to allow vendor EAP methods
with expanded header to be used.

Signed-off-by: Jouni Malinen <j@w1.fi>
2024-03-20 09:33:52 +05:30
Jouni Malinen a9170c6a20 EAP-TLS peer: Handle possible application data at the end
EAP-TLS with TLS 1.3 uses an empty application data record from the
server to indicate end of the exchange, so EAP-TLS peer will need to
check for this special case and finish the exchange with an empty
EAP-TLS (ACK) so that the server can send out EAP-Success.

Signed-off-by: Jouni Malinen <j@w1.fi>
2024-03-20 09:33:52 +05:30
Ervin Oro caf49e8c10 Add Type-Code context to EAP-TLS 1.3 exported Key_Material and Method-Id
Change to require the Type-Code in context for Key_Material and
Method-Id has now been published as draft-ietf-emu-eap-tls13-04.
https://tools.ietf.org/html/draft-ietf-emu-eap-tls13-04#section-2.3

Signed-off-by: Ervin Oro <ervin.oro@aalto.fi>
2024-03-20 09:33:52 +05:30
Ervin Oro 562bc59576 Add support for an optional context parameter to TLS exporter
Allow an additional context value to be passed to TLS exporter as
specified in RFC 5705 section 4.

This does not yet implement it for the internal TLS implementation.
However, as currently nothing uses context yet, this will not break
anything right now. WolfSSL maintainers also stated that they are not
going to add context support yet, but would look into it if/when this is
required by a published draft or a standard.

Signed-off-by: Ervin Oro <ervin.oro@aalto.fi>
2024-03-20 09:33:52 +05:30