diff --git a/.github/workflows/hostap-files/Makefile b/.github/workflows/hostap-files/Makefile new file mode 100644 index 000000000..db3876158 --- /dev/null +++ b/.github/workflows/hostap-files/Makefile @@ -0,0 +1,11 @@ +obj-m := mac80211_hwsim.o +KDIR := /lib/modules/$(shell uname -r)/build +PWD := $(shell pwd) +default: + $(MAKE) -C $(KDIR) M=$(PWD) modules +install: + $(MAKE) -C $(KDIR) M=$(PWD) modules_install + depmod -A +clean: + $(MAKE) -C $(KDIR) M=$(PWD) clean + diff --git a/.github/workflows/hostap-files/README b/.github/workflows/hostap-files/README new file mode 100644 index 000000000..60b3e6a02 --- /dev/null +++ b/.github/workflows/hostap-files/README @@ -0,0 +1,2 @@ +Makefile and directory used in .github/workflows/hostap.yml to +compile the mac80211_hwsim kernel module. diff --git a/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/hostapd.config b/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/hostapd.config new file mode 100644 index 000000000..27a6c0f6c --- /dev/null +++ b/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/hostapd.config @@ -0,0 +1,120 @@ +#CC=ccache gcc + +CONFIG_DRIVER_NONE=y +CONFIG_DRIVER_NL80211=y +CONFIG_RSN_PREAUTH=y + +#CONFIG_TLS=internal +#CONFIG_INTERNAL_LIBTOMMATH=y +#CONFIG_INTERNAL_LIBTOMMATH_FAST=y +#CONFIG_TLS=openssl +CONFIG_TLS=wolfssl + +CONFIG_EAP=y +CONFIG_ERP=y +CONFIG_EAP_MD5=y +CONFIG_EAP_TLS=y +CONFIG_EAP_MSCHAPV2=y +CONFIG_EAP_PEAP=y +CONFIG_EAP_GTC=y +CONFIG_EAP_TTLS=y +CONFIG_EAP_SIM=y +CONFIG_EAP_AKA=y +CONFIG_EAP_AKA_PRIME=y +CONFIG_EAP_GPSK=y +CONFIG_EAP_GPSK_SHA256=y +CONFIG_EAP_SAKE=y +CONFIG_EAP_PAX=y +CONFIG_EAP_PSK=y +CONFIG_EAP_VENDOR_TEST=y +CONFIG_EAP_FAST=y +CONFIG_EAP_TEAP=y +CONFIG_EAP_IKEV2=y +CONFIG_EAP_TNC=y +CFLAGS += -DTNC_CONFIG_FILE=\"tnc/tnc_config\" +LIBS += -rdynamic +CONFIG_EAP_UNAUTH_TLS=y +ifeq ($(CONFIG_TLS), openssl) +CONFIG_EAP_PWD=y +endif +ifeq ($(CONFIG_TLS), wolfssl) +CONFIG_EAP_PWD=y +endif +CONFIG_EAP_EKE=y +CONFIG_PKCS12=y +CONFIG_RADIUS_SERVER=y +CONFIG_IPV6=y +CONFIG_TLSV11=y +CONFIG_TLSV12=y + +CONFIG_FULL_DYNAMIC_VLAN=y +CONFIG_VLAN_NETLINK=y +CONFIG_LIBNL32=y +CONFIG_LIBNL3_ROUTE=y +CONFIG_IEEE80211R=y +CONFIG_IEEE80211AC=y +CONFIG_IEEE80211AX=y + +CONFIG_OCV=y + +CONFIG_WPS=y +CONFIG_WPS_UPNP=y +CONFIG_WPS_NFC=y +#CONFIG_WPS_STRICT=y +CONFIG_WPA_TRACE=y +CONFIG_WPA_TRACE_BFD=y + +CONFIG_P2P_MANAGER=y +CONFIG_DEBUG_FILE=y +CONFIG_DEBUG_LINUX_TRACING=y +CONFIG_WPA_CLI_EDIT=y +CONFIG_ACS=y +CONFIG_NO_RANDOM_POOL=y +CONFIG_WNM=y +CONFIG_INTERWORKING=y +CONFIG_HS20=y +CONFIG_SQLITE=y +CONFIG_SAE=y +CONFIG_SAE_PK=y +CFLAGS += -DALL_DH_GROUPS + +CONFIG_FST=y +CONFIG_FST_TEST=y + +CONFIG_TESTING_OPTIONS=y +CFLAGS += -DCONFIG_RADIUS_TEST +CONFIG_MODULE_TESTS=y + +CONFIG_SUITEB=y + +# AddressSanitizer (ASan) can be enabled by uncommenting the following lines. +# This can be used as a more efficient memory error detector than valgrind +# (though, with still some CPU and memory cost, so VM cases will need more +# memory allocated for the guest). +#CFLAGS += -fsanitize=address -O1 -fno-omit-frame-pointer -g +#LIBS += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_h += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_n += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_c += -fsanitize=address -fno-omit-frame-pointer -g + +# Undefined Behavior Sanitizer (UBSan) can be enabled by uncommenting the +# following lines. +#CFLAGS += -Wno-format-nonliteral +#CFLAGS += -fsanitize=undefined +##CFLAGS += -fno-sanitize-recover +#LIBS += -fsanitize=undefined +##LIBS += -fno-sanitize-recover +#LIBS_h += -fsanitize=undefined +#LIBS_n += -fsanitize=undefined +#LIBS_c += -fsanitize=undefined +CONFIG_MBO=y + +CONFIG_TAXONOMY=y +CONFIG_FILS=y +CONFIG_FILS_SK_PFS=y +CONFIG_OWE=y +CONFIG_DPP=y +CONFIG_DPP2=y +CONFIG_WEP=y +CONFIG_PASN=y +CONFIG_AIRTIME_POLICY=y diff --git a/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/tests b/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/tests new file mode 100644 index 000000000..87fc3320f --- /dev/null +++ b/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/tests @@ -0,0 +1,707 @@ +sae_pk +sae_pk_group_negotiation +sae_pk_sec_3 +sae_pk_sec_5 +sae_pk_group_20 +sae_pk_group_21 +sae_pk_group_20_sae_group_19 +sae_pk_group_20_sae_group_21 +sae_pk_group_19_sae_group_20 +sae_pk_password_without_pk +sae_pk_only +sae_pk_modes +sae_pk_not_on_ap +sae_pk_mixed +sae_pk_mixed_immediate_confirm +sae_pk_missing_ie +sae_pk_unexpected_status +sae_pk_invalid_signature +sae_pk_invalid_fingerprint +sae_pk_and_psk +sae_pk_and_psk_invalid_password +sae_pk_invalid_pw +sae +sae_password_ecc +sae_pmksa_caching +sae_pmksa_caching_pmkid +sae_pmksa_caching_disabled +sae_groups +sae_group_nego +sae_group_nego_no_match +sae_anti_clogging +sae_forced_anti_clogging +sae_mixed +sae_and_psk +sae_and_psk2 +sae_wpa3_roam +sae_mixed_mfp +sae_mfp +sae_missing_password +sae_key_lifetime_in_memory +sae_oom_wpas +sae_proto_ecc +sae_proto_ffc +sae_proto_commit_delayed +sae_proto_commit_replay +sae_proto_confirm_replay +sae_proto_hostapd +sae_proto_hostapd_ecc +sae_proto_hostapd_ffc +sae_proto_hostapd_status_126 +sae_proto_hostapd_status_127 +sae_reflection_attack_ecc +sae_reflection_attack_ecc_internal +sae_commit_override +sae_commit_override2 +sae_commit_invalid_scalar_element_ap +sae_commit_invalid_element_ap +sae_commit_invalid_scalar_element_sta +sae_commit_invalid_element_sta +sae_anti_clogging_proto +sae_no_random +sae_invalid_anti_clogging_token_req +sae_password +sae_password_short +sae_password_long +sae_connect_cmd +sae_password_id +sae_password_id_ecc +sae_password_id_ffc +sae_password_id_only +sae_password_id_pwe_looping +sae_password_id_pwe_check_ap +sae_password_id_pwe_check_sta +sae_forced_anti_clogging_pw_id +sae_reauth +sae_sync +sae_confirm_immediate +sae_confirm_immediate2 +sae_pwe_group_19 +sae_pwe_group_20 +sae_pwe_group_21 +sae_pwe_group_28 +sae_pwe_group_29 +sae_pwe_group_30 +sae_pwe_group_1 +sae_pwe_group_2 +sae_pwe_group_22 +sae_pwe_h2e_only_ap +sae_pwe_h2e_only_ap_sta_forcing_loop +sae_pwe_loop_only_ap +sae_h2e_rejected_groups +sae_h2e_rejected_groups_unexpected +sae_h2e_password_id +sae_pwe_in_psk_ap +sae_auth_restart +sae_rsne_mismatch +sae_h2e_rsnxe_mismatch +sae_h2e_rsnxe_mismatch_retries +sae_h2e_rsnxe_mismatch_assoc +sae_h2e_rsnxe_mismatch_ap +sae_h2e_rsnxe_mismatch_ap2 +sae_h2e_rsnxe_mismatch_ap3 +sae_forced_anti_clogging_h2e +sae_forced_anti_clogging_h2e_loop +sae_okc +sae_okc_sta_only +sae_okc_pmk_lifetime +sae_pmk_lifetime +sae_and_psk_multiple_passwords +sae_pmf_roam +sae_ocv_pmk +sae_ocv_pmk_failure +sae_reject +eap_tls_pkcs8_pkcs5_v2_des3 +eap_tls_pkcs8_pkcs5_v15 +eap_tls_session_resumption +eap_tls_session_resumption_expiration +eap_tls_session_resumption_radius +eap_tls_sha512 +eap_tls_sha384 +eap_tls_ext_cert_check +eap_tls_errors +ap_wpa2_delayed_m3_retransmission +ap_wpa2_delayed_m1_m3_retransmission +ap_wpa2_delayed_m1_m3_retransmission2 +ap_wpa2_delayed_group_m1_retransmission +ap_wpa2_delayed_group_m1_retransmission_igtk +ap_wpa2_delayed_m1_m3_zero_tk +ap_wpa2_plaintext_m1_m3 +ap_wpa2_plaintext_m1_m3_pmf +ap_wpa2_plaintext_m3 +ap_wpa2_plaintext_group_m1 +ap_wpa2_plaintext_group_m1_pmf +ap_wpa2_test_command_failures +ap_wpa2_gtk_initial_rsc_tkip +ap_wpa2_gtk_initial_rsc_ccmp +ap_wpa2_gtk_initial_rsc_ccmp_256 +ap_wpa2_gtk_initial_rsc_gcmp +ap_wpa2_gtk_initial_rsc_gcmp_256 +ap_wpa2_igtk_initial_rsc_aes_128_cmac +ap_wpa2_igtk_initial_rsc_bip_gmac_128 +ap_wpa2_igtk_initial_rsc_bip_gmac_256 +ap_wpa2_igtk_initial_rsc_bip_cmac_256 +ap_wpa2_psk +ap_wpa2_psk_file +ap_wpa2_psk_file_keyid +ap_wpa2_psk_mem +ap_wpa2_ptk_rekey +ap_wpa2_ptk_rekey_blocked_ap +ap_wpa2_ptk_rekey_blocked_sta +ap_wpa2_ptk_rekey_anonce +ap_wpa2_ptk_rekey_ap +ap_wpa2_sha256_ptk_rekey +ap_wpa2_sha256_ptk_rekey_ap +ap_wpa2_psk_file_errors +ap_wpa2_psk_wildcard_ssid +ap_wpa2_gtk_rekey +ap_wpa2_gtk_rekey_request +ap_wpa2_gtk_rekey_failure +ap_wpa2_gtk_rekey_fail_1_sta +ap_wpa2_gmk_rekey +ap_wpa2_strict_rekey +ap_wpa2_psk_ext +ap_wpa2_psk_unexpected +ap_wpa2_psk_ext_retry_msg_3 +ap_wpa2_psk_ext_retry_msg_3b +ap_wpa2_psk_ext_retry_msg_3c +ap_wpa2_psk_ext_retry_msg_3d +ap_wpa2_psk_ext_retry_msg_3e +ap_wpa2_psk_ext_delayed_ptk_rekey +ap_wpa2_psk_ext_eapol +ap_wpa2_psk_ext_eapol_retry1 +ap_wpa2_psk_ext_eapol_retry1b +ap_wpa2_psk_ext_eapol_retry1c +ap_wpa2_psk_ext_eapol_retry1d +ap_wpa2_psk_ext_eapol_type_diff +ap_wpa2_psk_ext_eapol_key_info +ap_wpa2_psk_supp_proto +ap_wpa2_psk_supp_proto_no_ie +ap_wpa2_psk_supp_proto_ie_mismatch +ap_wpa2_psk_supp_proto_ok +ap_wpa2_psk_supp_proto_no_gtk +ap_wpa2_psk_supp_proto_anonce_change +ap_wpa2_psk_supp_proto_unexpected_group_msg +ap_wpa2_psk_supp_proto_msg_1_invalid_kde +ap_wpa2_psk_supp_proto_wrong_pairwise_key_len +ap_wpa2_psk_supp_proto_wrong_group_key_len +ap_wpa2_psk_supp_proto_gtk_tx_bit_workaround +ap_wpa2_psk_supp_proto_gtk_keyidx_0_and_3 +ap_wpa2_psk_supp_proto_no_gtk_in_group_msg +ap_wpa2_psk_supp_proto_too_long_gtk_in_group_msg +ap_wpa2_psk_supp_proto_too_long_gtk_kde +ap_wpa2_psk_supp_proto_gtk_not_encrypted +ap_wpa2_psk_supp_proto_no_igtk +ap_wpa2_psk_supp_proto_igtk_ok +ap_wpa2_psk_supp_proto_igtk_keyid_swap +ap_wpa2_psk_supp_proto_igtk_keyid_too_large +ap_wpa2_psk_supp_proto_igtk_keyid_unexpected +ap_wpa2_psk_wep +ap_wpa2_psk_ifdown +ap_wpa2_psk_drop_first_msg_4 +ap_wpa2_psk_disable_enable +ap_wpa2_psk_incorrect_passphrase +ap_wpa2_psk_no_random +ap_wpa2_psk_assoc_rsn +ap_wpa2_psk_ft_workaround +ap_wpa2_psk_assoc_rsn_pmkid +ap_wpa2_eapol_retry_limit +ap_wpa2_disable_eapol_retry +ap_wpa2_disable_eapol_retry_group +ap_wpa2_psk_mic_0 +ap_wpa2_psk_local_error +ap_wpa2_psk_inject_assoc +ap_wpa2_psk_no_control_port +ap_wpa2_psk_ap_control_port +ap_wpa2_psk_ap_control_port_disabled +ap_wpa2_psk_rsne_mismatch_ap +ap_wpa2_psk_rsne_mismatch_ap2 +ap_wpa2_psk_rsne_mismatch_ap3 +ap_wpa2_psk_rsnxe_mismatch_ap +ap_wpa2_psk_ext_key_id_ptk_rekey_ap0 +ap_wpa2_psk_ext_key_id_ptk_rekey_ap1 +ap_wpa2_psk_ext_key_id_ptk_rekey_ap2 +ap_wpa2_psk_ext_key_id_ptk_rekey_sta0 +ap_wpa2_psk_ext_key_id_ptk_rekey_sta1 +ap_wpa2_psk_ext_key_id_ptk_rekey_sta2 +ap_wpa2_eap_sim +ap_wpa2_eap_sim_imsi_identity +ap_wpa2_eap_sim_imsi_privacy_key +ap_wpa2_eap_sim_imsi_privacy_attr +ap_wpa2_eap_sim_sql +ap_wpa2_eap_sim_config +ap_wpa2_eap_sim_id_0 +ap_wpa2_eap_sim_id_1 +ap_wpa2_eap_sim_id_2 +ap_wpa2_eap_sim_id_3 +ap_wpa2_eap_sim_ext +ap_wpa2_eap_sim_ext_replace_sim +ap_wpa2_eap_sim_ext_replace_sim2 +ap_wpa2_eap_sim_ext_replace_sim3 +ap_wpa2_eap_sim_ext_auth_fail +ap_wpa2_eap_sim_change_bssid +ap_wpa2_eap_sim_no_change_set +ap_wpa2_eap_sim_ext_anonymous +ap_wpa2_eap_sim_ext_anonymous_no_pseudonym +ap_wpa2_eap_sim_oom +ap_wpa2_eap_aka +ap_wpa2_eap_aka_imsi_identity +ap_wpa2_eap_aka_imsi_privacy_key +ap_wpa2_eap_aka_imsi_privacy_attr +ap_wpa2_eap_aka_imsi_privacy_key_expired +ap_wpa2_eap_aka_sql +ap_wpa2_eap_aka_config +ap_wpa2_eap_aka_ext +ap_wpa2_eap_aka_ext_auth_fail +ap_wpa2_eap_aka_prime +ap_wpa2_eap_aka_prime_imsi_identity +ap_wpa2_eap_aka_prime_imsi_privacy_key +ap_wpa2_eap_aka_prime_sql +ap_wpa2_eap_aka_prime_ext_auth_fail +ap_wpa2_eap_aka_prime_ext +ap_wpa2_eap_ttls_pap +ap_wpa2_eap_ttls_pap_subject_match +ap_wpa2_eap_ttls_pap_check_cert_subject +ap_wpa2_eap_ttls_pap_incorrect_password +ap_wpa2_eap_ttls_chap +ap_wpa2_eap_ttls_chap_altsubject_match +ap_wpa2_eap_ttls_chap_incorrect_password +ap_wpa2_eap_ttls_mschap +ap_wpa2_eap_ttls_mschap_incorrect_password +ap_wpa2_eap_ttls_mschapv2 +ap_wpa2_eap_ttls_invalid_phase2 +ap_wpa2_eap_ttls_mschapv2_suffix_match +ap_wpa2_eap_ttls_mschapv2_domain_match +ap_wpa2_eap_ttls_mschapv2_incorrect_password +ap_wpa2_eap_ttls_mschapv2_utf8 +ap_wpa2_eap_ttls_eap_gtc +ap_wpa2_eap_ttls_eap_gtc_incorrect_password +ap_wpa2_eap_ttls_eap_gtc_no_password +ap_wpa2_eap_ttls_eap_gtc_server_oom +ap_wpa2_eap_ttls_eap_gtc_oom +ap_wpa2_eap_ttls_eap_md5 +ap_wpa2_eap_ttls_eap_md5_incorrect_password +ap_wpa2_eap_ttls_eap_md5_no_password +ap_wpa2_eap_ttls_eap_md5_server_oom +ap_wpa2_eap_ttls_eap_mschapv2 +ap_wpa2_eap_ttls_eap_mschapv2_no_password +ap_wpa2_eap_ttls_eap_mschapv2_server_oom +ap_wpa2_eap_ttls_eap_sim +ap_wpa2_eap_ttls_eap_sim_ext +ap_wpa2_eap_ttls_eap_vendor +ap_wpa2_eap_peap_eap_sim +ap_wpa2_eap_peap_eap_sim_ext +ap_wpa2_eap_fast_eap_sim_ext +ap_wpa2_eap_ttls_eap_aka +ap_wpa2_eap_peap_eap_aka +ap_wpa2_eap_peap_eap_mschapv2 +ap_wpa2_eap_peap_eap_mschapv2_domain +ap_wpa2_eap_peap_eap_mschapv2_incorrect_password +ap_wpa2_eap_peap_crypto_binding +ap_wpa2_eap_peap_crypto_binding_server_oom +ap_wpa2_eap_peap_params +ap_wpa2_eap_peap_eap_gtc +ap_wpa2_eap_peap_eap_tls +ap_wpa2_eap_peap_eap_vendor +ap_wpa2_eap_tls +ap_wpa2_eap_tls_blob +ap_wpa2_eap_tls_blob_pem +ap_wpa2_eap_tls_blob_missing +ap_wpa2_eap_tls_with_tls_len +ap_wpa2_eap_tls_pkcs12 +ap_wpa2_eap_tls_pkcs12_blob +ap_wpa2_eap_tls_pkcs12_blob_pem +ap_wpa2_eap_tls_diff_ca_trust +ap_wpa2_eap_tls_diff_ca_trust2 +ap_wpa2_eap_tls_diff_ca_trust3 +ap_wpa2_eap_tls_neg_suffix_match +ap_wpa2_eap_tls_neg_domain_match +ap_wpa2_eap_tls_neg_subject_match +ap_wpa2_eap_tls_neg_altsubject_match +ap_wpa2_eap_unauth_tls +ap_wpa2_eap_ttls_server_cert_hash +ap_wpa2_eap_ttls_server_cert_hash_invalid +ap_wpa2_eap_pwd +ap_wpa2_eap_pwd_nthash +ap_wpa2_eap_pwd_salt_sha1 +ap_wpa2_eap_pwd_salt_sha256 +ap_wpa2_eap_pwd_salt_sha512 +ap_wpa2_eap_pwd_groups +ap_wpa2_eap_pwd_invalid_group +ap_wpa2_eap_pwd_disabled_group +ap_wpa2_eap_pwd_as_frag +ap_wpa2_eap_gpsk +ap_wpa2_eap_sake +ap_wpa2_eap_eke +ap_wpa2_eap_eke_many +ap_wpa2_eap_eke_serverid_nai +ap_wpa2_eap_eke_server_oom +ap_wpa2_eap_ikev2 +ap_wpa2_eap_ikev2_as_frag +ap_wpa2_eap_ikev2_oom +ap_wpa2_eap_pax +ap_wpa2_eap_psk +ap_wpa2_eap_psk_oom +ap_wpa2_eap_interactive +ap_wpa2_eap_ext_enable_network_while_connected +ap_wpa2_eap_vendor_test +ap_wpa2_eap_vendor_test_oom +ap_wpa2_eap_fast_gtc_identity_change +ap_wpa2_eap_fast_eap_vendor +ap_wpa2_eap_tls_ocsp +ap_wpa2_eap_tls_ocsp_multi +ap_wpa2_eap_tls_ocsp_key_id +ap_wpa2_eap_tls_ocsp_ca_signed_good +ap_wpa2_eap_tls_ocsp_ca_signed_revoked +ap_wpa2_eap_tls_ocsp_ca_signed_unknown +ap_wpa2_eap_tls_ocsp_server_signed +ap_wpa2_eap_tls_ocsp_invalid_data +ap_wpa2_eap_tls_ocsp_invalid +ap_wpa2_eap_tls_ocsp_unknown_sign +ap_wpa2_eap_tls_intermediate_ca +ap_wpa2_eap_tls_ocsp_multi_revoked +ap_wpa2_eap_tls_domain_suffix_match_cn_full +ap_wpa2_eap_tls_domain_match_cn +ap_wpa2_eap_tls_domain_suffix_match_cn +ap_wpa2_eap_tls_domain_suffix_mismatch_cn +ap_wpa2_eap_tls_domain_mismatch_cn +ap_wpa2_eap_ttls_long_duration +ap_wpa2_eap_ttls_server_cert_eku_client +ap_wpa2_eap_ttls_server_cert_eku_client_server +ap_wpa2_eap_ttls_server_pkcs12 +ap_wpa2_eap_ttls_server_pkcs12_extra +ap_wpa2_eap_ttls_dh_params_server +ap_wpa2_eap_ttls_dh_params_dsa_server +ap_wpa2_eap_ttls_dh_params_not_found +ap_wpa2_eap_ttls_dh_params_invalid +ap_wpa2_eap_reauth +ap_wpa2_eap_reauth_ptk_rekey_blocked_sta +ap_wpa2_eap_request_identity_message +ap_wpa2_eap_sim_aka_result_ind +ap_wpa2_eap_sim_zero_db_timeout +ap_wpa2_eap_too_many_roundtrips +ap_wpa2_eap_too_many_roundtrips_server +ap_wpa2_eap_too_many_roundtrips_server2 +ap_wpa2_eap_expanded_nak +ap_wpa2_eap_sql +ap_wpa2_eap_non_ascii_identity +ap_wpa2_eap_non_ascii_identity2 +ap_wpa2_eap_unexpected_wep_eapol_key +ap_wpa2_eap_session_ticket +ap_wpa2_eap_no_workaround +ap_wpa2_eap_tls_check_crl +ap_wpa2_eap_tls_check_crl_not_strict +ap_wpa2_eap_tls_crl_reload +ap_wpa2_eap_tls_check_cert_subject +ap_wpa2_eap_tls_check_cert_subject_neg +ap_wpa2_eap_tls_oom +ap_wpa2_eap_tls_macacl +ap_wpa2_eap_oom +ap_wpa2_eap_tls_13 +ap_wpa2_eap_tls_13_ocsp +ap_wpa2_eap_tls_13_missing_prot_success +ap_wpa2_eap_tls_13_fragmentation +ap_wpa2_eap_ttls_13 +ap_wpa2_eap_peap_13 +ap_wpa2_eap_tls_13_ec +ap_wpa2_eap_sim_db +ap_wpa2_eap_sim_db_sqlite +ap_wpa2_eap_assoc_rsn +ap_wpa2_eap_status +ap_wpa2_eap_gpsk_ptk_rekey_ap +ap_wpa2_eap_wildcard_ssid +ap_wpa2_eap_psk_mac_addr_change +ap_wpa2_eap_server_get_id +ap_wpa2_radius_server_get_id +ap_wpa2_eap_tls_tod +ap_wpa2_eap_tls_tod_tofu +ap_wpa2_eap_sake_no_control_port +ap_wpa2_tdls +ap_wpa2_tdls_concurrent_init +ap_wpa2_tdls_concurrent_init2 +ap_wpa2_tdls_decline_resp +ap_wpa2_tdls_long_lifetime +ap_wpa2_tdls_long_frame +ap_wpa2_tdls_reneg +ap_wpa2_tdls_wrong_lifetime_resp +ap_wpa2_tdls_diff_rsnie +ap_wpa2_tdls_wrong_tpk_m2_mic +ap_wpa2_tdls_wrong_tpk_m3_mic +ap_wpa2_tdls_double_tpk_m2 +ap_wpa2_tdls_responder_teardown +dpp_network_intro_version +dpp_network_intro_version_change +dpp_network_intro_version_missing_req +dpp_tcp_pkex +dpp_tcp_pkex_auto_connect_2 +dpp_tcp_pkex_auto_connect_2_status +dpp_tcp_pkex_auto_connect_2_status_fail +dpp_tcp_pkex_while_associated +dpp_tcp_pkex_while_associated_conn_status +dpp_controller_relay_pkex +dpp_push_button +dpp_push_button_session_overlap_sta +dpp_push_button_session_overlap_ap +dpp_push_button_session_overlap_configurator +dpp_push_button_2sta +dpp_push_button_r_hash_mismatch_sta +dpp_push_button_i_hash_mismatch_ap +dpp_push_button_r_hash_mismatch_ap +dpp_push_button_ext_conf +dpp_push_button_wpas_conf +dpp_private_peer_introduction +dpp_qr_code_parsing +dpp_uri_version +dpp_uri_supported_curves +dpp_uri_host +dpp_qr_code_parsing_fail +dpp_qr_code_curves +dpp_qr_code_curves_brainpool +dpp_qr_code_unsupported_curve +dpp_qr_code_keygen_fail +dpp_qr_code_curve_select +dpp_qr_code_auth_broadcast +dpp_configurator_enrollee +dpp_configurator_enrollee_prime256v1 +dpp_configurator_enrollee_secp384r1 +dpp_configurator_enrollee_secp521r1 +dpp_configurator_enrollee_brainpoolP256r1 +dpp_configurator_enrollee_brainpoolP384r1 +dpp_configurator_enrollee_brainpoolP512r1 +dpp_configurator_enroll_conf +dpp_qr_code_curve_prime256v1 +dpp_qr_code_curve_secp384r1 +dpp_qr_code_curve_secp521r1 +dpp_qr_code_curve_brainpoolP256r1 +dpp_qr_code_curve_brainpoolP384r1 +dpp_qr_code_curve_brainpoolP512r1 +dpp_qr_code_set_key +dpp_qr_code_auth_mutual +dpp_qr_code_auth_mutual2 +dpp_qr_code_auth_mutual_p_256 +dpp_qr_code_auth_mutual_p_384 +dpp_qr_code_auth_mutual_p_521 +dpp_qr_code_auth_mutual_bp_256 +dpp_qr_code_auth_mutual_bp_384 +dpp_qr_code_auth_mutual_bp_512 +dpp_auth_resp_retries +dpp_qr_code_auth_mutual_not_used +dpp_qr_code_auth_mutual_curve_mismatch +dpp_qr_code_auth_hostapd_mutual2 +dpp_qr_code_listen_continue +dpp_qr_code_auth_initiator_enrollee +dpp_qr_code_auth_initiator_either_2 +dpp_qr_code_auth_initiator_either_3 +dpp_config_legacy +dpp_config_legacy_psk_hex +dpp_config_fragmentation +dpp_config_legacy_gen +dpp_config_legacy_gen_psk +dpp_config_dpp_gen_prime256v1 +dpp_config_dpp_gen_secp384r1 +dpp_config_dpp_gen_secp521r1 +dpp_config_dpp_gen_expiry +dpp_config_dpp_gen_expired_key +dpp_config_dpp_gen_3rd_party +dpp_config_dpp_override_prime256v1 +dpp_config_dpp_override_secp384r1 +dpp_config_override_objects +dpp_config_signed_connector_error_no_dot_1 +dpp_config_signed_connector_error_no_dot_2 +dpp_config_signed_connector_error_unexpected_signature_len +dpp_config_no_csign +dpp_config_no_signed_connector +dpp_config_unexpected_signed_connector_char +dpp_config_root_not_an_object +dpp_config_no_wi_fi_tech +dpp_config_unsupported_wi_fi_tech +dpp_config_no_discovery +dpp_config_no_discovery_ssid +dpp_config_too_long_discovery_ssid +dpp_config_no_cred +dpp_config_no_cred_akm +dpp_config_unsupported_cred_akm +dpp_config_error_legacy_no_pass +dpp_config_error_legacy_too_long_pass +dpp_config_error_legacy_psk_with_sae +dpp_config_error_legacy_no_pass_for_sae +dpp_config_error_legacy_invalid_psk +dpp_config_error_legacy_too_short_psk +dpp_config_connector_error_ext_sign +dpp_config_connector_error_too_short_timestamp +dpp_config_connector_error_invalid_timestamp +dpp_config_connector_error_invalid_timestamp_date +dpp_config_connector_error_invalid_time_zone +dpp_config_connector_error_invalid_time_zone_2 +dpp_config_connector_error_expired_1 +dpp_config_connector_error_expired_2 +dpp_config_connector_error_expired_3 +dpp_config_connector_error_expired_4 +dpp_config_connector_error_expired_5 +dpp_config_connector_error_expired_6 +dpp_config_connector_error_no_groups +dpp_config_connector_error_empty_groups +dpp_config_connector_error_missing_group_id +dpp_config_connector_error_missing_net_role +dpp_config_connector_error_missing_net_access_key +dpp_config_connector_error_net_access_key_mismatch +dpp_akm_sha256 +dpp_akm_sha384 +dpp_akm_sha512 +dpp_network_introduction +dpp_network_introduction_expired +dpp_and_sae_akm +dpp_ap_config +dpp_ap_config_p256_p256 +dpp_ap_config_p256_p384 +dpp_ap_config_p384_p256 +dpp_ap_config_p384_p384 +dpp_ap_config_p521_p256 +dpp_ap_config_p521_p384 +dpp_ap_config_bp256_bp256 +dpp_ap_config_bp384_bp384 +dpp_ap_config_bp512_bp512 +dpp_ap_config_p256_bp256 +dpp_ap_config_bp256_p256 +dpp_ap_config_p521_bp512 +dpp_ap_config_reconfig_configurator +dpp_auto_connect_1 +dpp_auto_connect_2 +dpp_auto_connect_2_connect_cmd +dpp_auto_connect_2_sta_ver1 +dpp_auto_connect_2_ap_ver1 +dpp_auto_connect_2_ver1 +dpp_auto_connect_2_conf_ver1 +dpp_auto_connect_legacy +dpp_auto_connect_legacy_ssid_charset +dpp_auto_connect_legacy_sae_1 +dpp_auto_connect_legacy_sae_2 +dpp_auto_connect_legacy_psk_sae_1 +dpp_auto_connect_legacy_psk_sae_2 +dpp_auto_connect_legacy_psk_sae_3 +dpp_auto_connect_legacy_pmf_required +dpp_qr_code_auth_responder_configurator +dpp_qr_code_auth_responder_configurator_group_id +dpp_qr_code_auth_enrollee_init_netrole +dpp_qr_code_hostapd_init +dpp_qr_code_hostapd_init_offchannel +dpp_qr_code_hostapd_init_offchannel_neg_freq +dpp_qr_code_hostapd_ignore_mismatch +dpp_test_vector_p_256 +dpp_test_vector_p_256_b +dpp_test_vector_p_521 +dpp_pkex +dpp_pkex_v2 +dpp_pkex_p256 +dpp_pkex_p384 +dpp_pkex_p521 +dpp_pkex_bp256 +dpp_pkex_bp384 +dpp_pkex_bp512 +dpp_pkex_config +dpp_pkex_no_identifier +dpp_pkex_identifier_mismatch +dpp_pkex_identifier_mismatch2 +dpp_pkex_identifier_mismatch3 +dpp_pkex_5ghz +dpp_pkex_test_vector +dpp_pkex_code_mismatch +dpp_pkex_code_mismatch_limit +dpp_pkex_curve_mismatch +dpp_pkex_curve_mismatch_failure +dpp_pkex_curve_mismatch_failure2 +dpp_pkex_exchange_resp_processing_failure +dpp_pkex_commit_reveal_req_processing_failure +dpp_pkex_config2 +dpp_pkex_no_responder +dpp_pkex_after_retry +dpp_pkex_hostapd_responder +dpp_pkex_v2_hostapd_responder +dpp_pkex_hostapd_initiator +dpp_pkex_v2_hostapd_initiator +dpp_pkex_hostapd_initiator_fallback +dpp_pkex_hostapd_initiator_no_response +dpp_pkex_hostapd_errors +dpp_pkex_nak_curve_change +dpp_pkex_nak_curve_change2 +dpp_hostapd_configurator +dpp_hostapd_configurator_enrollee_v1 +dpp_hostapd_configurator_responder +dpp_hostapd_configurator_fragmentation +dpp_hostapd_enrollee_fragmentation +dpp_hostapd_enrollee_gas_timeout +dpp_hostapd_enrollee_gas_timeout_comeback +dpp_hostapd_enrollee_gas_errors +dpp_hostapd_enrollee_gas_proto +dpp_hostapd_enrollee_gas_tx_status_errors +dpp_hostapd_configurator_override_objects +dpp_own_config +dpp_own_config_group_id +dpp_proto_after_wrapped_data_auth_req +dpp_auth_req_stop_after_ack +dpp_auth_req_retries +dpp_auth_req_retries_multi_chan +dpp_proto_after_wrapped_data_auth_resp +dpp_proto_after_wrapped_data_auth_conf +dpp_proto_after_wrapped_data_conf_req +dpp_proto_after_wrapped_data_conf_resp +dpp_proto_stop_at_pkex_exchange_resp +dpp_proto_stop_at_pkex_cr_req +dpp_proto_stop_at_pkex_cr_resp +dpp_proto_network_introduction +dpp_hostapd_auth_conf_timeout +dpp_hostapd_auth_resp_retries +dpp_tcp +dpp_tcp_port +dpp_tcp_mutual +dpp_tcp_mutual_hostapd_conf +dpp_tcp_conf_init +dpp_tcp_conf_init_hostapd_enrollee +dpp_tcp_controller_management_hostapd +dpp_tcp_controller_management_hostapd2 +dpp_tcp_controller_start_failure +dpp_tcp_init_failure +dpp_controller_rx_failure +dpp_controller_rx_errors +dpp_conn_status_success +dpp_conn_status_wrong_passphrase +dpp_conn_status_no_ap +dpp_conn_status_connector_mismatch +dpp_conn_status_assoc_reject +dpp_conn_status_success_hostapd_configurator +dpp_mud_url +dpp_mud_url_hostapd +dpp_config_save +dpp_config_save2 +dpp_config_save3 +dpp_nfc_uri +dpp_nfc_uri_hostapd +dpp_nfc_uri_hostapd_tag_read +dpp_nfc_negotiated_handover +dpp_nfc_negotiated_handover_diff_curve +dpp_nfc_negotiated_handover_hostapd_sel +dpp_nfc_negotiated_handover_hostapd_req +dpp_nfc_errors_hostapd +dpp_with_p2p_device +dpp_pfs_ap_0 +dpp_pfs_ap_1 +dpp_pfs_ap_2 +dpp_pfs_connect_cmd +dpp_pfs_connect_cmd_ap_2 +dpp_pfs_connect_cmd_ap_2_sae +dpp_pfs_ap_0_sta_ver1 +dpp_pfs_errors +dpp_qr_code_auth_rand_mac_addr +dpp_enterprise +dpp_enterprise_tcp +dpp_enterprise_tcp2 +dpp_qr_code_config_event_initiator +dpp_qr_code_config_event_initiator_set_comeback +dpp_qr_code_config_event_initiator_slow +dpp_qr_code_config_event_initiator_failure +dpp_qr_code_config_event_initiator_no_response +dpp_qr_code_config_event_initiator_both +dpp_tcp_qr_code_config_event_initiator +dpp_qr_code_config_event_responder +dpp_discard_public_action + diff --git a/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/wpa_supplicant.config b/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/wpa_supplicant.config new file mode 100644 index 000000000..777b2d7d1 --- /dev/null +++ b/.github/workflows/hostap-files/configs/b607d2723e927a3446d89aed813f1aa6068186bb/wpa_supplicant.config @@ -0,0 +1,163 @@ +#CC=ccache gcc + +#CONFIG_TLS=openssl +CONFIG_TLS=wolfssl +#CONFIG_TLS=internal +#CONFIG_INTERNAL_LIBTOMMATH=y +#CONFIG_INTERNAL_LIBTOMMATH_FAST=y + +CONFIG_IEEE8021X_EAPOL=y + +CONFIG_ERP=y +CONFIG_EAP_MD5=y +CONFIG_MSCHAPV2=y +CONFIG_EAP_TLS=y +CONFIG_EAP_PEAP=y +CONFIG_EAP_TTLS=y +CONFIG_EAP_GTC=y +CONFIG_EAP_OTP=y +CONFIG_EAP_PSK=y +CONFIG_EAP_PAX=y +CONFIG_EAP_LEAP=y +CONFIG_EAP_SIM=y +CONFIG_EAP_AKA=y +CONFIG_EAP_AKA_PRIME=y +CONFIG_EAP_VENDOR_TEST=y +CONFIG_EAP_TLV=y +CONFIG_EAP_SAKE=y +CONFIG_EAP_GPSK=y +CONFIG_EAP_GPSK_SHA256=y +CONFIG_EAP_EKE=y +CONFIG_EAP_TNC=y +CFLAGS += -DTNC_CONFIG_FILE=\"tnc/tnc_config\" +LIBS += -rdynamic +CONFIG_EAP_FAST=y +CONFIG_EAP_TEAP=y +CONFIG_EAP_IKEV2=y + +ifeq ($(CONFIG_TLS), openssl) +CONFIG_EAP_PWD=y +endif +ifeq ($(CONFIG_TLS), wolfssl) +CONFIG_EAP_PWD=y +endif + +CONFIG_USIM_SIMULATOR=y +CONFIG_SIM_SIMULATOR=y + +#CONFIG_PCSC=y +CONFIG_IPV6=y +CONFIG_DRIVER_NONE=y +CONFIG_PKCS12=y +CONFIG_CTRL_IFACE=unix + +CONFIG_WPA_CLI_EDIT=y + +CONFIG_OCSP=y + +#CONFIG_ELOOP_POLL=y + +CONFIG_CTRL_IFACE_DBUS_NEW=y +CONFIG_CTRL_IFACE_DBUS_INTRO=y + +CONFIG_IEEE80211R=y +CONFIG_IEEE80211AC=y +CONFIG_IEEE80211AX=y + +CONFIG_OCV=y + +CONFIG_DEBUG_FILE=y + +CONFIG_WPS=y +#CONFIG_WPS_STRICT=y +CONFIG_WPS_UPNP=y +CONFIG_WPS_NFC=y +CONFIG_WPS_ER=y +#CONFIG_WPS_REG_DISABLE_OPEN=y + +CONFIG_DRIVER_WEXT=y + +CONFIG_DRIVER_NL80211=y +CFLAGS += -I/usr/include/libnl3 +CONFIG_LIBNL32=y + +CONFIG_IBSS_RSN=y + +CONFIG_AP=y +CONFIG_MESH=y +CONFIG_P2P=y +CONFIG_WIFI_DISPLAY=y + +CONFIG_ACS=y + +CONFIG_BGSCAN_SIMPLE=y +CONFIG_BGSCAN_LEARN=y + +CONFIG_WPA_TRACE=y +CONFIG_WPA_TRACE_BFD=y + +CONFIG_TDLS=y +CONFIG_TDLS_TESTING=y +CONFIG_NO_RANDOM_POOL=y + +CONFIG_TLSV11=y +CONFIG_TLSV12=y + +CONFIG_HT_OVERRIDES=y +CONFIG_VHT_OVERRIDES=y +CONFIG_HE_OVERRIDES=y + +CONFIG_DEBUG_LINUX_TRACING=y + +CONFIG_INTERWORKING=y +CONFIG_HS20=y + +CONFIG_AUTOSCAN_EXPONENTIAL=y +CONFIG_AUTOSCAN_PERIODIC=y + +CONFIG_EXT_PASSWORD_TEST=y +CONFIG_EXT_PASSWORD_FILE=y + +CONFIG_EAP_UNAUTH_TLS=y + +CONFIG_SAE=y +CONFIG_SAE_PK=y +CFLAGS += -DALL_DH_GROUPS + +CONFIG_WNM=y + +CONFIG_FST=y +CONFIG_FST_TEST=y + +CONFIG_TESTING_OPTIONS=y +CONFIG_MODULE_TESTS=y + +CONFIG_SUITEB=y + +# AddressSanitizer (ASan) can be enabled by uncommenting the following lines. +# This can be used as a more efficient memory error detector than valgrind +# (though, with still some CPU and memory cost, so VM cases will need more +# memory allocated for the guest). +#CFLAGS += -fsanitize=address -O1 -fno-omit-frame-pointer -g +#LIBS += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_c += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_p += -fsanitize=address -fno-omit-frame-pointer -g + +# Undefined Behavior Sanitizer (UBSan) can be enabled by uncommenting the +# following lines. +#CFLAGS += -Wno-format-nonliteral +#CFLAGS += -fsanitize=undefined +##CFLAGS += -fno-sanitize-recover +#LIBS += -fsanitize=undefined +##LIBS += -fno-sanitize-recover +#LIBS_c += -fsanitize=undefined +#LIBS_p += -fsanitize=undefined +CONFIG_MBO=y +CONFIG_FILS=y +CONFIG_FILS_SK_PFS=y +CONFIG_PMKSA_CACHE_EXTERNAL=y +CONFIG_OWE=y +CONFIG_DPP=y +CONFIG_DPP2=y +CONFIG_WEP=y +CONFIG_PASN=y diff --git a/.github/workflows/hostap-files/configs/hostap_2_10/hostapd.config b/.github/workflows/hostap-files/configs/hostap_2_10/hostapd.config new file mode 100644 index 000000000..540380179 --- /dev/null +++ b/.github/workflows/hostap-files/configs/hostap_2_10/hostapd.config @@ -0,0 +1,119 @@ +#CC=ccache gcc + +CONFIG_DRIVER_NONE=y +CONFIG_DRIVER_NL80211=y +CONFIG_RSN_PREAUTH=y + +#CONFIG_TLS=internal +#CONFIG_INTERNAL_LIBTOMMATH=y +#CONFIG_INTERNAL_LIBTOMMATH_FAST=y +CONFIG_TLS=wolfssl + +CONFIG_EAP=y +CONFIG_ERP=y +CONFIG_EAP_MD5=y +CONFIG_EAP_TLS=y +CONFIG_EAP_MSCHAPV2=y +CONFIG_EAP_PEAP=y +CONFIG_EAP_GTC=y +CONFIG_EAP_TTLS=y +CONFIG_EAP_SIM=y +CONFIG_EAP_AKA=y +CONFIG_EAP_AKA_PRIME=y +CONFIG_EAP_GPSK=y +CONFIG_EAP_GPSK_SHA256=y +CONFIG_EAP_SAKE=y +CONFIG_EAP_PAX=y +CONFIG_EAP_PSK=y +CONFIG_EAP_VENDOR_TEST=y +CONFIG_EAP_FAST=y +#CONFIG_EAP_TEAP=y +CONFIG_EAP_IKEV2=y +CONFIG_EAP_TNC=y +CFLAGS += -DTNC_CONFIG_FILE=\"tnc/tnc_config\" +LIBS += -rdynamic +CONFIG_EAP_UNAUTH_TLS=y +ifeq ($(CONFIG_TLS), wolfssl) +CONFIG_EAP_PWD=y +endif +ifeq ($(CONFIG_TLS), openssl) +CONFIG_EAP_PWD=y +endif +CONFIG_EAP_EKE=y +CONFIG_PKCS12=y +CONFIG_RADIUS_SERVER=y +CONFIG_IPV6=y +CONFIG_TLSV11=y +CONFIG_TLSV12=y + +CONFIG_FULL_DYNAMIC_VLAN=y +CONFIG_VLAN_NETLINK=y +CONFIG_LIBNL32=y +CONFIG_LIBNL3_ROUTE=y +CONFIG_IEEE80211R=y +CONFIG_IEEE80211AC=y +CONFIG_IEEE80211AX=y + +CONFIG_OCV=y + +CONFIG_WPS=y +CONFIG_WPS_UPNP=y +CONFIG_WPS_NFC=y +#CONFIG_WPS_STRICT=y +CONFIG_WPA_TRACE=y +CONFIG_WPA_TRACE_BFD=y + +CONFIG_P2P_MANAGER=y +CONFIG_DEBUG_FILE=y +CONFIG_DEBUG_LINUX_TRACING=y +CONFIG_WPA_CLI_EDIT=y +CONFIG_ACS=y +CONFIG_NO_RANDOM_POOL=y +CONFIG_WNM=y +CONFIG_INTERWORKING=y +CONFIG_HS20=y +CONFIG_SQLITE=y +CONFIG_SAE=y +#CONFIG_SAE_PK=y +CFLAGS += -DALL_DH_GROUPS + +CONFIG_FST=y +CONFIG_FST_TEST=y + +CONFIG_TESTING_OPTIONS=y +CFLAGS += -DCONFIG_RADIUS_TEST +CONFIG_MODULE_TESTS=y + +CONFIG_SUITEB=y + +# AddressSanitizer (ASan) can be enabled by uncommenting the following lines. +# This can be used as a more efficient memory error detector than valgrind +# (though, with still some CPU and memory cost, so VM cases will need more +# memory allocated for the guest). +#CFLAGS += -fsanitize=address -O1 -fno-omit-frame-pointer -g +#LIBS += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_h += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_n += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_c += -fsanitize=address -fno-omit-frame-pointer -g + +# Undefined Behavior Sanitizer (UBSan) can be enabled by uncommenting the +# following lines. +#CFLAGS += -Wno-format-nonliteral +#CFLAGS += -fsanitize=undefined +##CFLAGS += -fno-sanitize-recover +#LIBS += -fsanitize=undefined +##LIBS += -fno-sanitize-recover +#LIBS_h += -fsanitize=undefined +#LIBS_n += -fsanitize=undefined +#LIBS_c += -fsanitize=undefined +CONFIG_MBO=y + +CONFIG_TAXONOMY=y +CONFIG_FILS=y +CONFIG_FILS_SK_PFS=y +CONFIG_OWE=y +#CONFIG_DPP=y +#CONFIG_DPP2=y +CONFIG_WEP=y +CONFIG_PASN=y +CONFIG_AIRTIME_POLICY=y diff --git a/.github/workflows/hostap-files/configs/hostap_2_10/tests b/.github/workflows/hostap-files/configs/hostap_2_10/tests new file mode 100644 index 000000000..732a05441 --- /dev/null +++ b/.github/workflows/hostap-files/configs/hostap_2_10/tests @@ -0,0 +1,284 @@ +sae +sae_password_ecc +sae_pmksa_caching +sae_pmksa_caching_pmkid +sae_pmksa_caching_disabled +sae_groups +sae_group_nego +sae_group_nego_no_match +sae_anti_clogging +sae_forced_anti_clogging +sae_mixed +sae_and_psk +sae_and_psk2 +sae_wpa3_roam +sae_mixed_mfp +sae_mfp +sae_missing_password +sae_key_lifetime_in_memory +sae_oom_wpas +sae_proto_ecc +sae_proto_ffc +sae_proto_commit_delayed +sae_proto_commit_replay +sae_proto_confirm_replay +sae_proto_hostapd +sae_proto_hostapd_ecc +sae_proto_hostapd_ffc +sae_proto_hostapd_status_126 +sae_proto_hostapd_status_127 +sae_reflection_attack_ecc +sae_reflection_attack_ecc_internal +sae_commit_override +sae_commit_override2 +sae_commit_invalid_scalar_element_ap +sae_commit_invalid_element_ap +sae_commit_invalid_scalar_element_sta +sae_commit_invalid_element_sta +sae_anti_clogging_proto +sae_no_random +sae_bignum_failure_unsafe_group +sae_invalid_anti_clogging_token_req +sae_password +sae_password_short +sae_password_long +sae_connect_cmd +sae_password_id +sae_password_id_ecc +sae_password_id_ffc +sae_password_id_only +sae_password_id_pwe_looping +sae_password_id_pwe_check_ap +sae_password_id_pwe_check_sta +sae_forced_anti_clogging_pw_id +sae_reauth +sae_sync +sae_confirm_immediate +sae_confirm_immediate2 +sae_pwe_group_19 +sae_pwe_group_20 +sae_pwe_group_21 +sae_pwe_group_1 +sae_pwe_group_2 +sae_pwe_group_22 +sae_pwe_h2e_only_ap +sae_pwe_h2e_only_ap_sta_forcing_loop +sae_pwe_loop_only_ap +sae_h2e_rejected_groups +sae_h2e_rejected_groups_unexpected +sae_h2e_password_id +sae_pwe_in_psk_ap +sae_auth_restart +sae_rsne_mismatch +sae_h2e_rsnxe_mismatch +sae_h2e_rsnxe_mismatch_retries +sae_h2e_rsnxe_mismatch_assoc +sae_h2e_rsnxe_mismatch_ap +sae_h2e_rsnxe_mismatch_ap2 +sae_h2e_rsnxe_mismatch_ap3 +sae_forced_anti_clogging_h2e +sae_forced_anti_clogging_h2e_loop +sae_okc +sae_okc_sta_only +sae_okc_pmk_lifetime +sae_pmk_lifetime +sae_and_psk_multiple_passwords +sae_pmf_roam +sae_ocv_pmk +sae_ocv_pmk_failure +sae_reject +eap_tls_pkcs8_pkcs5_v2_des3 +eap_tls_pkcs8_pkcs5_v15 +eap_tls_sha512 +eap_tls_sha384 +eap_tls_errors +eap_proto_peap_errors_server +eap_proto_peap_errors +ap_wpa2_delayed_m3_retransmission +ap_wpa2_delayed_m1_m3_retransmission +ap_wpa2_delayed_m1_m3_retransmission2 +ap_wpa2_delayed_group_m1_retransmission +ap_wpa2_delayed_group_m1_retransmission_igtk +ap_wpa2_delayed_m1_m3_zero_tk +ap_wpa2_plaintext_m1_m3 +ap_wpa2_plaintext_m1_m3_pmf +ap_wpa2_plaintext_m3 +ap_wpa2_plaintext_group_m1 +ap_wpa2_plaintext_group_m1_pmf +ap_wpa2_test_command_failures +ap_wpa2_gtk_initial_rsc_tkip +ap_wpa2_gtk_initial_rsc_ccmp +ap_wpa2_gtk_initial_rsc_ccmp_256 +ap_wpa2_gtk_initial_rsc_gcmp +ap_wpa2_gtk_initial_rsc_gcmp_256 +ap_wpa2_igtk_initial_rsc_aes_128_cmac +ap_wpa2_igtk_initial_rsc_bip_gmac_128 +ap_wpa2_igtk_initial_rsc_bip_gmac_256 +ap_wpa2_igtk_initial_rsc_bip_cmac_256 +ap_wpa2_psk +ap_wpa2_psk_file +ap_wpa2_psk_file_keyid +ap_wpa2_psk_mem +ap_wpa2_ptk_rekey +ap_wpa2_ptk_rekey_blocked_ap +ap_wpa2_ptk_rekey_blocked_sta +ap_wpa2_ptk_rekey_anonce +ap_wpa2_ptk_rekey_ap +ap_wpa2_sha256_ptk_rekey +ap_wpa2_sha256_ptk_rekey_ap +ap_wpa2_psk_file_errors +ap_wpa2_psk_wildcard_ssid +ap_wpa2_gtk_rekey +ap_wpa2_gtk_rekey_request +ap_wpa2_gtk_rekey_failure +ap_wpa2_gmk_rekey +ap_wpa2_strict_rekey +ap_wpa2_psk_ext +ap_wpa2_psk_unexpected +ap_wpa2_psk_ext_retry_msg_3 +ap_wpa2_psk_ext_retry_msg_3b +ap_wpa2_psk_ext_retry_msg_3c +ap_wpa2_psk_ext_retry_msg_3d +ap_wpa2_psk_ext_retry_msg_3e +ap_wpa2_psk_ext_delayed_ptk_rekey +ap_wpa2_psk_ext_eapol +ap_wpa2_psk_ext_eapol_retry1 +ap_wpa2_psk_ext_eapol_retry1b +ap_wpa2_psk_ext_eapol_retry1c +ap_wpa2_psk_ext_eapol_retry1d +ap_wpa2_psk_ext_eapol_type_diff +ap_wpa2_psk_ext_eapol_key_info +ap_wpa2_psk_wep +ap_wpa2_psk_ifdown +ap_wpa2_psk_drop_first_msg_4 +ap_wpa2_psk_disable_enable +ap_wpa2_psk_incorrect_passphrase +ap_wpa2_psk_no_random +ap_wpa2_psk_assoc_rsn +ap_wpa2_psk_ft_workaround +ap_wpa2_psk_assoc_rsn_pmkid +ap_wpa2_eapol_retry_limit +ap_wpa2_disable_eapol_retry +ap_wpa2_disable_eapol_retry_group +ap_wpa2_psk_mic_0 +ap_wpa2_psk_local_error +ap_wpa2_psk_inject_assoc +ap_wpa2_psk_no_control_port +ap_wpa2_psk_ap_control_port +ap_wpa2_psk_ap_control_port_disabled +ap_wpa2_psk_rsne_mismatch_ap +ap_wpa2_psk_rsne_mismatch_ap2 +ap_wpa2_psk_rsne_mismatch_ap3 +ap_wpa2_psk_rsnxe_mismatch_ap +ap_wpa2_psk_ext_key_id_ptk_rekey_ap0 +ap_wpa2_psk_ext_key_id_ptk_rekey_ap1 +ap_wpa2_psk_ext_key_id_ptk_rekey_ap2 +ap_wpa2_psk_ext_key_id_ptk_rekey_sta0 +ap_wpa2_psk_ext_key_id_ptk_rekey_sta1 +ap_wpa2_psk_ext_key_id_ptk_rekey_sta2 +ap_wpa2_eap_sim +ap_wpa2_eap_sim_sql +ap_wpa2_eap_sim_config +ap_wpa2_eap_sim_id_0 +ap_wpa2_eap_sim_id_1 +ap_wpa2_eap_sim_id_2 +ap_wpa2_eap_sim_id_3 +ap_wpa2_eap_sim_ext +ap_wpa2_eap_sim_ext_replace_sim +ap_wpa2_eap_sim_ext_replace_sim2 +ap_wpa2_eap_sim_ext_replace_sim3 +ap_wpa2_eap_sim_ext_auth_fail +ap_wpa2_eap_sim_change_bssid +ap_wpa2_eap_sim_no_change_set +ap_wpa2_eap_sim_ext_anonymous +ap_wpa2_eap_sim_ext_anonymous_no_pseudonym +ap_wpa2_eap_sim_oom +ap_wpa2_eap_aka +ap_wpa2_eap_aka_sql +ap_wpa2_eap_aka_config +ap_wpa2_eap_aka_ext +ap_wpa2_eap_aka_ext_auth_fail +ap_wpa2_eap_aka_prime +ap_wpa2_eap_aka_prime_sql +ap_wpa2_eap_aka_prime_ext_auth_fail +ap_wpa2_eap_aka_prime_ext +ap_wpa2_eap_ttls_invalid_phase2 +ap_wpa2_eap_ttls_eap_vendor +ap_wpa2_eap_fast_eap_sim +ap_wpa2_eap_fast_eap_aka +ap_wpa2_eap_peap_params +ap_wpa2_eap_peap_eap_gtc +ap_wpa2_eap_peap_eap_vendor +ap_wpa2_eap_ttls_server_cert_hash +ap_wpa2_eap_ttls_server_cert_hash_invalid +ap_wpa2_eap_pwd +ap_wpa2_eap_pwd_nthash +ap_wpa2_eap_pwd_salt_sha1 +ap_wpa2_eap_pwd_salt_sha256 +ap_wpa2_eap_pwd_salt_sha512 +ap_wpa2_eap_pwd_groups +ap_wpa2_eap_pwd_invalid_group +ap_wpa2_eap_pwd_disabled_group +ap_wpa2_eap_pwd_as_frag +ap_wpa2_eap_gpsk +ap_wpa2_eap_sake +ap_wpa2_eap_ikev2 +ap_wpa2_eap_ikev2_as_frag +ap_wpa2_eap_ikev2_oom +ap_wpa2_eap_pax +ap_wpa2_eap_psk +ap_wpa2_eap_psk_oom +ap_wpa2_eap_interactive +ap_wpa2_eap_ext_enable_network_while_connected +ap_wpa2_eap_vendor_test +ap_wpa2_eap_vendor_test_oom +ap_wpa2_eap_ttls_ocsp_revoked +ap_wpa2_eap_ttls_ocsp_unknown +ap_wpa2_eap_ttls_optional_ocsp_unknown +ap_wpa2_eap_ttls_long_duration +ap_wpa2_eap_ttls_server_cert_eku_client +ap_wpa2_eap_ttls_server_cert_eku_client_server +ap_wpa2_eap_ttls_dh_params +ap_wpa2_eap_ttls_dh_params_dsa +ap_wpa2_eap_ttls_dh_params_not_found +ap_wpa2_eap_ttls_dh_params_invalid +ap_wpa2_eap_ttls_dh_params_blob +ap_wpa2_eap_ttls_dh_params_server +ap_wpa2_eap_ttls_dh_params_dsa_server +ap_wpa2_eap_reauth +ap_wpa2_eap_reauth_ptk_rekey_blocked_sta +ap_wpa2_eap_request_identity_message +ap_wpa2_eap_sim_aka_result_ind +ap_wpa2_eap_sim_zero_db_timeout +ap_wpa2_eap_too_many_roundtrips +ap_wpa2_eap_too_many_roundtrips_server +ap_wpa2_eap_too_many_roundtrips_server2 +ap_wpa2_eap_expanded_nak +ap_wpa2_eap_sql +ap_wpa2_eap_non_ascii_identity +ap_wpa2_eap_non_ascii_identity2 +ap_wpa2_eap_unexpected_wep_eapol_key +ap_wpa2_eap_oom +ap_wpa2_eap_sim_db +ap_wpa2_eap_sim_db_sqlite +ap_wpa2_eap_assoc_rsn +ap_wpa2_eap_status +ap_wpa2_eap_gpsk_ptk_rekey_ap +ap_wpa2_eap_wildcard_ssid +ap_wpa2_eap_psk_mac_addr_change +ap_wpa2_eap_server_get_id +ap_wpa2_radius_server_get_id +ap_wpa2_eap_sake_no_control_port +ap_wpa2_tdls +ap_wpa2_tdls_concurrent_init +ap_wpa2_tdls_concurrent_init2 +ap_wpa2_tdls_decline_resp +ap_wpa2_tdls_long_lifetime +ap_wpa2_tdls_long_frame +ap_wpa2_tdls_reneg +ap_wpa2_tdls_wrong_lifetime_resp +ap_wpa2_tdls_diff_rsnie +ap_wpa2_tdls_wrong_tpk_m2_mic +ap_wpa2_tdls_wrong_tpk_m3_mic +ap_wpa2_tdls_double_tpk_m2 +ap_wpa2_tdls_responder_teardown diff --git a/.github/workflows/hostap-files/configs/hostap_2_10/wpa_supplicant.config b/.github/workflows/hostap-files/configs/hostap_2_10/wpa_supplicant.config new file mode 100644 index 000000000..c123a9847 --- /dev/null +++ b/.github/workflows/hostap-files/configs/hostap_2_10/wpa_supplicant.config @@ -0,0 +1,163 @@ +#CC=ccache gcc + +#CONFIG_TLS=openssl +CONFIG_TLS=wolfssl +#CONFIG_TLS=internal +#CONFIG_INTERNAL_LIBTOMMATH=y +#CONFIG_INTERNAL_LIBTOMMATH_FAST=y + +CONFIG_IEEE8021X_EAPOL=y + +CONFIG_ERP=y +CONFIG_EAP_MD5=y +CONFIG_MSCHAPV2=y +CONFIG_EAP_TLS=y +CONFIG_EAP_PEAP=y +CONFIG_EAP_TTLS=y +CONFIG_EAP_GTC=y +CONFIG_EAP_OTP=y +CONFIG_EAP_PSK=y +CONFIG_EAP_PAX=y +CONFIG_EAP_LEAP=y +CONFIG_EAP_SIM=y +CONFIG_EAP_AKA=y +CONFIG_EAP_AKA_PRIME=y +CONFIG_EAP_VENDOR_TEST=y +CONFIG_EAP_TLV=y +CONFIG_EAP_SAKE=y +CONFIG_EAP_GPSK=y +CONFIG_EAP_GPSK_SHA256=y +CONFIG_EAP_EKE=y +CONFIG_EAP_TNC=y +CFLAGS += -DTNC_CONFIG_FILE=\"tnc/tnc_config\" +LIBS += -rdynamic +CONFIG_EAP_FAST=y +#CONFIG_EAP_TEAP=y +CONFIG_EAP_IKEV2=y + +ifeq ($(CONFIG_TLS), wolfssl) +CONFIG_EAP_PWD=y +endif +ifeq ($(CONFIG_TLS), openssl) +CONFIG_EAP_PWD=y +endif + +CONFIG_USIM_SIMULATOR=y +CONFIG_SIM_SIMULATOR=y + +#CONFIG_PCSC=y +CONFIG_IPV6=y +CONFIG_DRIVER_NONE=y +CONFIG_PKCS12=y +CONFIG_CTRL_IFACE=unix + +CONFIG_WPA_CLI_EDIT=y + +CONFIG_OCSP=y + +#CONFIG_ELOOP_POLL=y + +CONFIG_CTRL_IFACE_DBUS_NEW=y +CONFIG_CTRL_IFACE_DBUS_INTRO=y + +CONFIG_IEEE80211R=y +CONFIG_IEEE80211AC=y +CONFIG_IEEE80211AX=y + +CONFIG_OCV=y + +CONFIG_DEBUG_FILE=y + +CONFIG_WPS=y +#CONFIG_WPS_STRICT=y +CONFIG_WPS_UPNP=y +CONFIG_WPS_NFC=y +CONFIG_WPS_ER=y +#CONFIG_WPS_REG_DISABLE_OPEN=y + +CONFIG_DRIVER_WEXT=y + +CONFIG_DRIVER_NL80211=y +CFLAGS += -I/usr/include/libnl3 +CONFIG_LIBNL32=y + +CONFIG_IBSS_RSN=y + +CONFIG_AP=y +CONFIG_MESH=y +CONFIG_P2P=y +CONFIG_WIFI_DISPLAY=y + +CONFIG_ACS=y + +CONFIG_BGSCAN_SIMPLE=y +CONFIG_BGSCAN_LEARN=y + +CONFIG_WPA_TRACE=y +CONFIG_WPA_TRACE_BFD=y + +CONFIG_TDLS=y +CONFIG_TDLS_TESTING=y +CONFIG_NO_RANDOM_POOL=y + +CONFIG_TLSV11=y +CONFIG_TLSV12=y + +CONFIG_HT_OVERRIDES=y +CONFIG_VHT_OVERRIDES=y +CONFIG_HE_OVERRIDES=y + +CONFIG_DEBUG_LINUX_TRACING=y + +CONFIG_INTERWORKING=y +CONFIG_HS20=y + +CONFIG_AUTOSCAN_EXPONENTIAL=y +CONFIG_AUTOSCAN_PERIODIC=y + +CONFIG_EXT_PASSWORD_TEST=y +CONFIG_EXT_PASSWORD_FILE=y + +CONFIG_EAP_UNAUTH_TLS=y + +CONFIG_SAE=y +#CONFIG_SAE_PK=y +CFLAGS += -DALL_DH_GROUPS + +CONFIG_WNM=y + +CONFIG_FST=y +CONFIG_FST_TEST=y + +CONFIG_TESTING_OPTIONS=y +CONFIG_MODULE_TESTS=y + +CONFIG_SUITEB=y + +# AddressSanitizer (ASan) can be enabled by uncommenting the following lines. +# This can be used as a more efficient memory error detector than valgrind +# (though, with still some CPU and memory cost, so VM cases will need more +# memory allocated for the guest). +#CFLAGS += -fsanitize=address -O1 -fno-omit-frame-pointer -g +#LIBS += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_c += -fsanitize=address -fno-omit-frame-pointer -g +#LIBS_p += -fsanitize=address -fno-omit-frame-pointer -g + +# Undefined Behavior Sanitizer (UBSan) can be enabled by uncommenting the +# following lines. +#CFLAGS += -Wno-format-nonliteral +#CFLAGS += -fsanitize=undefined +##CFLAGS += -fno-sanitize-recover +#LIBS += -fsanitize=undefined +##LIBS += -fno-sanitize-recover +#LIBS_c += -fsanitize=undefined +#LIBS_p += -fsanitize=undefined +CONFIG_MBO=y +CONFIG_FILS=y +CONFIG_FILS_SK_PFS=y +CONFIG_PMKSA_CACHE_EXTERNAL=y +CONFIG_OWE=y +#CONFIG_DPP=y +#CONFIG_DPP2=y +CONFIG_WEP=y +CONFIG_PASN=y diff --git a/.github/workflows/hostap-files/dbus-wpa_supplicant.conf b/.github/workflows/hostap-files/dbus-wpa_supplicant.conf new file mode 100644 index 000000000..4523237e1 --- /dev/null +++ b/.github/workflows/hostap-files/dbus-wpa_supplicant.conf @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/workflows/hostap.yml b/.github/workflows/hostap.yml new file mode 100644 index 000000000..358943ab5 --- /dev/null +++ b/.github/workflows/hostap.yml @@ -0,0 +1,215 @@ +name: hostap and wpa-supplicant Tests + +on: + workflow_call: + +jobs: + # Build wpa_supplicant with wolfSSL and hostapd with OpenSSL and interop. + hostap_test: + strategy: + # TODO remove this in final PR + fail-fast: false + matrix: + # should hostapd be compiled with wolfssl + hostapd: [true, false] + # should wpa_supplicant be compiled with wolfssl + wpa_supplicant: [true, false] + # Fix the versions of hostap and osp to not break testing when a new + # patch is added in to osp. hostap_cherry_pick is used to apply the + # commit that updates the certificates used for testing. Tests are read + # from the corresponding configs/hostap_ref/tests file. + config: [ + { + hostap_ref: hostap_2_10, + hostap_cherry_pick: 698c05da2bd3233b005d45873caa852bc29b32c5, + remove_teap: true, + # TLS 1.3 does not work for this version + wolf_extra_config: --disable-tls13, + }, + # Test the dpp patch + { + hostap_ref: b607d2723e927a3446d89aed813f1aa6068186bb, + osp_ref: ad5b52a49b3cc2a5bfb47ccc1d6a5137132e9446, + wolf_extra_config: --enable-brainpool --enable-wpas-dpp + }, + ] + # parallelize the tests to be able to run all tests within 10 minutes + # Update the in the ./run-tests.py step when changing. + server: [1, 2, 3, 4, 5] + exclude: + # don't test openssl on both sides + - hostapd: false + wpa_supplicant: false + # no hostapd support for dpp yet + - hostapd: true + config: { + hostap_ref: b607d2723e927a3446d89aed813f1aa6068186bb, + osp_ref: ad5b52a49b3cc2a5bfb47ccc1d6a5137132e9446, + wolf_extra_config: --enable-brainpool --enable-wpas-dpp + } + name: hwsim test + # For openssl 1.1 + runs-on: ubuntu-20.04 + steps: + # No way to view the full strategy in the browser (really weird) + - name: Print strategy + run: | + cat <> $GITHUB_ENV + echo "hostap_debug_flags=-d" >> $GITHUB_ENV + + - name: Build wolfSSL + uses: wolfSSL/actions-build-autotools-project@v1 + with: + path: wolfssl + configure: >- + --enable-wpas CFLAGS=-DWOLFSSL_STATIC_RSA + ${{ env.wolf_debug_flags }} ${{ matrix.config.wolf_extra_config }} + install: true + + - name: Setup d-bus + working-directory: wolfssl/.github/workflows/hostap-files + run: | + sudo cp dbus-wpa_supplicant.conf /usr/share/dbus-1/system.d/wpa_supplicant.conf + sudo service dbus reload + + # This is super hack-ish :P + # If you are trying to reproduce this on a more generic system, you can + # just run `sudo apt install linux-modules-extra-$(uname -r)` and + # this should have the module in the package. No need to compile it. + - name: Compile and install mac80211_hwsim + working-directory: wolfssl/.github/workflows/hostap-files + run: | + # The tag will be the first two numbers of from uname -r + LINUX_TAG=$(uname -r | grep -oP '^\d+\.\d+') + # Download the correct version of the driver + wget https://raw.githubusercontent.com/torvalds/linux/v$LINUX_TAG/drivers/net/wireless/mac80211_hwsim.c + wget https://raw.githubusercontent.com/torvalds/linux/v$LINUX_TAG/drivers/net/wireless/mac80211_hwsim.h + make + sudo make install + sudo modprobe mac80211_hwsim + lsmod | grep mac80211_hwsim + sudo rmmod mac80211_hwsim + + - name: Checkout hostap + uses: actions/checkout@v3 + with: + repository: julek-wolfssl/hostap-mirror + path: hostap + ref: ${{ matrix.config.hostap_ref }} + # necessary for cherry pick step + fetch-depth: 0 + + - if: ${{ matrix.config.hostap_cherry_pick }} + name: Cherry pick certificate update + working-directory: hostap + run: git cherry-pick -n ${{ matrix.config.hostap_cherry_pick }} + + - if: ${{ matrix.config.osp_ref }} + name: Checkout OSP + uses: actions/checkout@v3 + with: + repository: wolfssl/osp + path: osp + ref: ${{ matrix.config.osp_ref }} + + - if: ${{ matrix.config.osp_ref }} + name: Apply patch files + working-directory: hostap + run: | + for f in $GITHUB_WORKSPACE/osp/hostap-patches/pending/* + do + patch -p1 < $f + done + + - if: ${{ matrix.hostapd }} + name: Setup hostapd config file + run: | + cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/hostapd.config \ + hostap/hostapd/.config + cat <> hostap/hostapd/.config + CFLAGS += -I$GITHUB_WORKSPACE/build-dir/include -Wl,-rpath=$GITHUB_WORKSPACE/build-dir/lib + LIBS += -L$GITHUB_WORKSPACE/build-dir/lib -Wl,-rpath=$GITHUB_WORKSPACE/build-dir/lib + EOF + + - if: ${{ matrix.wpa_supplicant }} + name: Setup wpa_supplicant config file + run: | + cp wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/wpa_supplicant.config \ + hostap/wpa_supplicant/.config + cat <> hostap/wpa_supplicant/.config + CFLAGS += -I$GITHUB_WORKSPACE/build-dir/include -Wl,-rpath=$GITHUB_WORKSPACE/build-dir/lib + LIBS += -L$GITHUB_WORKSPACE/build-dir/lib -Wl,-rpath=$GITHUB_WORKSPACE/build-dir/lib + EOF + + - name: Build hostap + working-directory: hostap/tests/hwsim/ + run: ./build.sh + + - if: ${{ matrix.hostapd }} + name: Confirm hostapd linking with wolfSSL + run: ldd hostap/hostapd/hostapd | grep wolfssl + + - if: ${{ matrix.wpa_supplicant }} + name: Confirm wpa_supplicant linking with wolfSSL + run: ldd hostap/wpa_supplicant/wpa_supplicant | grep wolfssl + + - if: ${{ matrix.config.remove_teap }} + name: Remove EAP-TEAP from test configuration + working-directory: hostap/tests/hwsim/auth_serv + run: | + sed -e 's/"erp-teap@example.com"\tTEAP//' -i eap_user.conf + sed -e 's/"erp-teap@example.com"\tMSCHAPV2\t"password"\t\[2\]//' -i eap_user.conf + sed -e 's/"TEAP"\t\tTEAP//' -i eap_user.conf + sed -e 's/TEAP,//' -i eap_user.conf + + - name: Run tests + id: testing + working-directory: hostap/tests/hwsim/ + run: | + # Run tests in increments of 100 to cut down on the uploaded log size. + while mapfile -t -n 100 ary && ((${#ary[@]})); do + TESTS=$(printf '%s\n' "${ary[@]}" | tr '\n' ' ') + sudo ./start.sh + sudo ./run-tests.py ${{ env.hostap_debug_flags }} --split ${{ matrix.server }}/5 $TESTS + sudo ./stop.sh + done < $GITHUB_WORKSPACE/wolfssl/.github/workflows/hostap-files/configs/${{ matrix.config.hostap_ref }}/tests + + - name: Change failure log permissions + if: ${{ failure() && steps.testing.outcome == 'failure' }} + working-directory: hostap/tests/hwsim/ + run: | + sudo chown -R $USER:$USER logs + zip -9 -r logs.zip logs/current + + - name: Upload failure logs + if: ${{ failure() && steps.testing.outcome == 'failure' }} + uses: actions/upload-artifact@v3 + with: + name: hostap-logs + path: hostap/tests/hwsim/logs.zip + retention-days: 5 + diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 92afa0655..7eb9b9d05 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -22,6 +22,8 @@ jobs: uses: ./.github/workflows/stunnel.yml openvpn: uses: ./.github/workflows/openvpn.yml + hostap: + uses: ./.github/workflows/hostap.yml # TODO: Currently this test fails. Enable it once it becomes passing. # haproxy: # uses: ./.github/workflows/haproxy.yml