set(srcs "port/os_xtensa.c" "port/eloop.c" "src/ap/ap_config.c" "src/ap/ieee802_1x.c" "src/ap/wpa_auth.c" "src/ap/wpa_auth_ie.c" "src/ap/sta_info.c" "src/common/sae.c" "src/common/dragonfly.c" "src/common/wpa_common.c" "src/utils/bitfield.c" "src/crypto/aes-siv.c" "src/crypto/sha256-kdf.c" "src/crypto/ccmp.c" "src/crypto/aes-gcm.c" "src/crypto/crypto_ops.c" "src/crypto/dh_group5.c" "src/crypto/dh_groups.c" "src/crypto/ms_funcs.c" "src/crypto/sha1-tlsprf.c" "src/crypto/sha256-tlsprf.c" "src/crypto/sha384-tlsprf.c" "src/crypto/sha256-prf.c" "src/crypto/sha1-prf.c" "src/crypto/sha384-prf.c" "src/crypto/md4-internal.c" "src/crypto/sha1-tprf.c" "src/eap_common/eap_wsc_common.c" "src/common/ieee802_11_common.c" "src/eap_peer/chap.c" "src/eap_peer/eap.c" "src/eap_peer/eap_common.c" "src/eap_peer/eap_mschapv2.c" "src/eap_peer/eap_peap.c" "src/eap_peer/eap_peap_common.c" "src/eap_peer/eap_tls.c" "src/eap_peer/eap_tls_common.c" "src/eap_peer/eap_ttls.c" "src/eap_peer/mschapv2.c" "src/eap_peer/eap_fast.c" "src/eap_peer/eap_fast_common.c" "src/eap_peer/eap_fast_pac.c" "src/rsn_supp/pmksa_cache.c" "src/rsn_supp/wpa.c" "src/rsn_supp/wpa_ie.c" "src/utils/base64.c" "src/utils/common.c" "src/utils/ext_password.c" "src/utils/uuid.c" "src/utils/wpabuf.c" "src/utils/wpa_debug.c" "src/utils/json.c" "src/wps/wps.c" "src/wps/wps_attr_build.c" "src/wps/wps_attr_parse.c" "src/wps/wps_attr_process.c" "src/wps/wps_common.c" "src/wps/wps_dev_attr.c" "src/wps/wps_enrollee.c") set(esp_srcs "esp_supplicant/src/esp_eap_client.c" "esp_supplicant/src/esp_wpa2_api_port.c" "esp_supplicant/src/esp_wpa_main.c" "esp_supplicant/src/esp_wpas_glue.c" "esp_supplicant/src/esp_common.c" "esp_supplicant/src/esp_wps.c" "esp_supplicant/src/esp_wpa3.c" "esp_supplicant/src/esp_owe.c") if(CONFIG_ESP_WIFI_SOFTAP_SUPPORT) set(esp_srcs ${esp_srcs} "esp_supplicant/src/esp_hostap.c") endif() if(CONFIG_WPA_MBEDTLS_TLS_CLIENT) set(tls_src "esp_supplicant/src/crypto/tls_mbedtls.c") else() set(tls_src "src/tls/asn1.c" "src/tls/bignum.c" "src/tls/pkcs1.c" "src/tls/pkcs5.c" "src/tls/pkcs8.c" "src/tls/bignum.c" "src/tls/rsa.c" "src/crypto/tls_internal.c" "src/tls/tlsv1_client.c" "src/tls/tlsv1_client_read.c" "src/tls/tlsv1_client_write.c" "src/tls/tlsv1_common.c" "src/tls/tlsv1_cred.c" "src/tls/tlsv1_record.c" "src/tls/tlsv1_client_ocsp.c" "src/tls/x509v3.c") endif() if(CONFIG_WPA_MBEDTLS_CRYPTO) set(crypto_src "esp_supplicant/src/crypto/fastpbkdf2.c" "esp_supplicant/src/crypto/crypto_mbedtls.c" "esp_supplicant/src/crypto/crypto_mbedtls-bignum.c" "esp_supplicant/src/crypto/crypto_mbedtls-rsa.c" "esp_supplicant/src/crypto/crypto_mbedtls-ec.c") # Add internal RC4 as RC4 has been removed from mbedtls set(crypto_src ${crypto_src} "src/crypto/rc4.c") if(NOT CONFIG_MBEDTLS_DES_C) set(crypto_src ${crypto_src} "src/crypto/des-internal.c") endif() # Enabling this only for WiFi is probably not a good idea since MbedTLS # uses generic crypto init/update functions for this. That causes # binary size increment since all the other enabled module # functions will also linked in. Even after not using direct MbedTLS APIs # for these, these API are still faster since these all will be using # AES APIs which is using hardware AES blocks. if(NOT CONFIG_MBEDTLS_CMAC_C) set(crypto_src ${crypto_src} "src/crypto/aes-omac1.c") endif() if(NOT CONFIG_MBEDTLS_NIST_KW_C) set(crypto_src ${crypto_src} "src/crypto/aes-wrap.c" "src/crypto/aes-unwrap.c") endif() if(NOT CONFIG_MBEDTLS_NIST_KW_C OR NOT CONFIG_MBEDTLS_CMAC_C OR NOT CONFIG_MBEDTLS_CCM_C) set(crypto_src ${crypto_src} "src/crypto/aes-ccm.c") endif() else() set(crypto_src "src/crypto/rc4.c" "src/crypto/aes-ctr.c" "src/crypto/aes-cbc.c" "src/crypto/aes-ccm.c" "src/crypto/aes-internal-dec.c" "src/crypto/aes-internal-enc.c" "src/crypto/aes-internal.c" "src/crypto/aes-omac1.c" "src/crypto/aes-unwrap.c" "src/crypto/aes-wrap.c" "src/crypto/crypto_internal-cipher.c" "src/crypto/crypto_internal-modexp.c" "src/crypto/crypto_internal-rsa.c" "src/crypto/crypto_internal.c" "src/crypto/des-internal.c" "src/crypto/md4-internal.c" "src/crypto/md5-internal.c" "src/crypto/md5.c" "src/crypto/sha1-internal.c" "src/crypto/sha1-pbkdf2.c" "src/crypto/sha1.c" "src/crypto/sha256-internal.c" "src/crypto/sha256.c" "src/crypto/sha384-internal.c" "src/crypto/sha512-internal.c" "src/crypto/sha256.c") endif() if(CONFIG_WPA_11KV_SUPPORT OR CONFIG_WPA_11R_SUPPORT) set(roaming_src "src/common/bss.c" "src/common/scan.c" "src/common/ieee802_11_common.c" "esp_supplicant/src/esp_scan.c") if(CONFIG_WPA_11KV_SUPPORT) set(roaming_src ${roaming_src} "src/common/rrm.c" "src/common/wnm_sta.c") endif() if(CONFIG_WPA_11R_SUPPORT) set(roaming_src ${roaming_src} "src/rsn_supp/wpa_ft.c") endif() else() set(roaming_src "") endif() if(CONFIG_WPA_MBO_SUPPORT) set(mbo_src "src/common/mbo.c") else() set(mbo_src "") endif() if(CONFIG_WPA_DPP_SUPPORT) set(dpp_src "src/common/dpp.c" "esp_supplicant/src/esp_dpp.c") else() set(dpp_src "") endif() if(CONFIG_WPA_WPS_SOFTAP_REGISTRAR) set(wps_registrar_src "src/ap/wps_hostapd.c" "src/eap_server/eap_server.c" "src/eap_server/eap_server_methods.c" "src/eap_server/eap_server_wsc.c" "src/ap/eap_user_db.c" "src/eapol_auth/eapol_auth_sm.c" "src/eap_server/eap_server_identity.c" "esp_supplicant/src/esp_hostpad_wps.c" "src/wps/wps_registrar.c") else() set(wps_registrar_src "") endif() idf_component_register(SRCS "${srcs}" "${esp_srcs}" "${tls_src}" "${roaming_src}" "${crypto_src}" "${mbo_src}" "${dpp_src}" "${wps_registrar_src}" INCLUDE_DIRS include port/include esp_supplicant/include PRIV_INCLUDE_DIRS src src/utils esp_supplicant/src src/crypto PRIV_REQUIRES mbedtls esp_timer esp_wifi) target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-strict-aliasing -Wno-write-strings -Werror) target_compile_definitions(${COMPONENT_LIB} PRIVATE __ets__ ESP_SUPPLICANT IEEE8021X_EAPOL EAP_PEER_METHOD EAP_MSCHAPv2 EAP_TTLS EAP_TLS EAP_PEAP USE_WPA2_TASK CONFIG_WPS USE_WPS_TASK ESPRESSIF_USE ESP32_WORKAROUND CONFIG_ECC CONFIG_IEEE80211W CONFIG_SHA256 CONFIG_NO_RADIUS CONFIG_FAST_PBKDF2 ) if(CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_WPA3_SAE) endif() if(CONFIG_WPA_WPS_STRICT) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_WPS_STRICT) endif() if(CONFIG_WPA_SUITE_B_192) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_SUITEB192) endif() if(CONFIG_WPA_SUITE_B) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_SUITEB) endif() if(CONFIG_ESP_WIFI_GCMP_SUPPORT) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_GCMP) endif() if(CONFIG_ESP_WIFI_GMAC_SUPPORT) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_GMAC) endif() if(CONFIG_WPA_MBO_SUPPORT) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_MBO) endif() if(CONFIG_WPA_DPP_SUPPORT) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_DPP) endif() if(CONFIG_WPA_11KV_SUPPORT) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_SUPPLICANT_TASK CONFIG_WNM CONFIG_RRM) endif() if(CONFIG_WPA_11R_SUPPORT) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_IEEE80211R) endif() if(NOT CONFIG_WPA_MBEDTLS_TLS_CLIENT) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_TLS_INTERNAL_CLIENT CONFIG_TLSV11 CONFIG_TLSV12 EAP_FAST) endif() if(CONFIG_WPA_MBEDTLS_CRYPTO) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_CRYPTO_MBEDTLS) else() target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_CRYPTO_INTERNAL) endif() if(CONFIG_WPA_WPS_SOFTAP_REGISTRAR) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_WPS_REGISTRAR) endif() if(CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA) target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_OWE_STA) endif() set_property(TARGET ${COMPONENT_LIB} APPEND PROPERTY LINK_INTERFACE_MULTIPLICITY 3) target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format")