mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2025-06-07 13:47:23 +02:00
unit: Use test precheck feature to check for kernel capabilities
This commit is contained in:
parent
3267d356d2
commit
5224b0b0e7
@ -138,20 +138,22 @@ static const struct cmac_data example_4 = {
|
||||
.tag_len = sizeof(tag_4),
|
||||
};
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return l_checksum_cmac_aes_supported();
|
||||
}
|
||||
|
||||
#define add_test(name, func, data) l_test_add_data_func_precheck(name, data, \
|
||||
func, test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_checksum_cmac_aes_supported()) {
|
||||
printf("AES-CMAC support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
add_test("/cmac-aes/Example 1", cmac_test, &example_1);
|
||||
add_test("/cmac-aes/Example 2", cmac_test, &example_2);
|
||||
add_test("/cmac-aes/Example 3", cmac_test, &example_3);
|
||||
add_test("/cmac-aes/Example 4", cmac_test, &example_4);
|
||||
|
||||
l_test_add("/cmac-aes/Example 1", cmac_test, &example_1);
|
||||
l_test_add("/cmac-aes/Example 2", cmac_test, &example_2);
|
||||
l_test_add("/cmac-aes/Example 3", cmac_test, &example_3);
|
||||
l_test_add("/cmac-aes/Example 4", cmac_test, &example_4);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -403,40 +403,32 @@ static void aes_siv_test(const void *data)
|
||||
assert(memcmp(decrypted, plaintext, sizeof(decrypted)) == 0);
|
||||
}
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return (l_cipher_is_supported(L_CIPHER_AES) &&
|
||||
l_checksum_is_supported(L_CHECKSUM_SHA1, true));
|
||||
}
|
||||
|
||||
#define add_test(name, func, data) l_test_add_data_func_precheck(name, data, \
|
||||
func, test_precheck, 0)
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_SHA1, true)) {
|
||||
printf("SHA1 support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!l_cipher_is_supported(L_CIPHER_AES)) {
|
||||
printf("AES support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
l_test_add("/Passphrase Generator/PSK Test Case 1",
|
||||
add_test("/Passphrase Generator/PSK Test Case 1",
|
||||
psk_test, &psk_test_case_1);
|
||||
l_test_add("/Passphrase Generator/PSK Test Case 2",
|
||||
add_test("/Passphrase Generator/PSK Test Case 2",
|
||||
psk_test, &psk_test_case_2);
|
||||
l_test_add("/Passphrase Generator/PSK Test Case 3",
|
||||
add_test("/Passphrase Generator/PSK Test Case 3",
|
||||
psk_test, &psk_test_case_3);
|
||||
|
||||
l_test_add("/PTK Derivation/PTK Test Case 1",
|
||||
ptk_test, &ptk_test_1);
|
||||
l_test_add("/PTK Derivation/PTK Test Case 2",
|
||||
ptk_test, &ptk_test_2);
|
||||
l_test_add("/PTK Derivation/PTK Test Case 3",
|
||||
ptk_test, &ptk_test_3);
|
||||
l_test_add("/PTK Derivation/PTK Test Case 4",
|
||||
ptk_test, &ptk_test_4);
|
||||
add_test("/PTK Derivation/PTK Test Case 1", ptk_test, &ptk_test_1);
|
||||
add_test("/PTK Derivation/PTK Test Case 2", ptk_test, &ptk_test_2);
|
||||
add_test("/PTK Derivation/PTK Test Case 3", ptk_test, &ptk_test_3);
|
||||
add_test("/PTK Derivation/PTK Test Case 4", ptk_test, &ptk_test_4);
|
||||
|
||||
l_test_add("/AES Key-wrap/Wrap & unwrap",
|
||||
aes_wrap_test, NULL);
|
||||
l_test_add("/AES-SIV", aes_siv_test, NULL);
|
||||
add_test("/AES Key-wrap/Wrap & unwrap", aes_wrap_test, NULL);
|
||||
add_test("/AES-SIV", aes_siv_test, NULL);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -577,22 +577,25 @@ static void test_pkex_key_derivation(const void *user_data)
|
||||
CHECK_FROM_STR(vector->v, tmp, 32);
|
||||
}
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return (l_getrandom_is_supported() &&
|
||||
l_checksum_is_supported(L_CHECKSUM_SHA256, true));
|
||||
}
|
||||
|
||||
#define add_test(name, func, data) l_test_add_data_func_precheck(name, data, \
|
||||
func, test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (l_checksum_is_supported(L_CHECKSUM_SHA256, true) &&
|
||||
l_getrandom_is_supported()) {
|
||||
l_test_add("DPP test responder-only key derivation",
|
||||
test_key_derivation,
|
||||
add_test("DPP test responder-only key derivation", test_key_derivation,
|
||||
&responder_only_p256);
|
||||
l_test_add("DPP test mutual key derivation",
|
||||
test_key_derivation,
|
||||
add_test("DPP test mutual key derivation", test_key_derivation,
|
||||
&mutual_p256);
|
||||
l_test_add("DPP test PKEX key derivation",
|
||||
test_pkex_key_derivation,
|
||||
add_test("DPP test PKEX key derivation", test_pkex_key_derivation,
|
||||
&pkex_vector);
|
||||
}
|
||||
|
||||
l_test_add("DPP URI parse", test_uri_parse, &all_values);
|
||||
l_test_add("DPP URI no type", test_uri_parse, &no_type);
|
||||
|
@ -131,27 +131,23 @@ static void test_get_asym_key(const void *data)
|
||||
assert(!memcmp(msk, m_session_key, sizeof(m_session_key)));
|
||||
}
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return l_checksum_is_supported(L_CHECKSUM_MD4, false);
|
||||
}
|
||||
|
||||
#define add_test(name, func) l_test_add_func_precheck(name, func, \
|
||||
test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_MD4, false)) {
|
||||
printf("MD4 support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
add_test("MSHAPv2 nt_password-hash", test_nt_password_hash);
|
||||
add_test("MSHAPv2 generate_nt_response", test_generate_nt_response);
|
||||
add_test("MSHAPv2 get_master_key", test_get_master_key);
|
||||
add_test("MSHAPv2 get_asym_state_key", test_get_asym_key);
|
||||
add_test("MSHAPv2 authenticator_response", test_authenticator_response);
|
||||
|
||||
l_test_add("MSHAPv2 nt_password-hash",
|
||||
test_nt_password_hash, NULL);
|
||||
l_test_add("MSHAPv2 generate_nt_response",
|
||||
test_generate_nt_response, NULL);
|
||||
l_test_add("MSHAPv2 get_master_key",
|
||||
test_get_master_key, NULL);
|
||||
l_test_add("MSHAPv2 get_asym_state_key",
|
||||
test_get_asym_key, NULL);
|
||||
l_test_add("MSHAPv2 authenticator_response",
|
||||
test_authenticator_response, NULL);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -3908,6 +3908,38 @@ static void eapol_ap_sta_handshake_ip_alloc_no_req_test(const void *data)
|
||||
#define _IS_ENABLED2(one_or_two_args) _IS_ENABLED3(one_or_two_args true, false)
|
||||
#define _IS_ENABLED3(ignore_this, val, ...) val
|
||||
|
||||
static bool hash_precheck(const void *data)
|
||||
{
|
||||
return (l_checksum_is_supported(L_CHECKSUM_MD5, true) &&
|
||||
l_checksum_is_supported(L_CHECKSUM_SHA1, true));
|
||||
}
|
||||
|
||||
static bool aes_precheck(const void *data)
|
||||
{
|
||||
return (l_cipher_is_supported(L_CIPHER_AES) &&
|
||||
l_checksum_is_supported(L_CHECKSUM_MD5, true) &&
|
||||
l_checksum_is_supported(L_CHECKSUM_SHA1, true));
|
||||
}
|
||||
|
||||
static bool pkcs8_precheck(const void *data)
|
||||
{
|
||||
return (IS_ENABLED(HAVE_PKCS8_SUPPORT) &&
|
||||
l_cipher_is_supported(L_CIPHER_AES) &&
|
||||
l_cipher_is_supported(L_CIPHER_AES_CBC) &&
|
||||
l_cipher_is_supported(L_CIPHER_DES3_EDE_CBC) &&
|
||||
l_checksum_is_supported(L_CHECKSUM_MD5, true) &&
|
||||
l_checksum_is_supported(L_CHECKSUM_SHA1, true) &&
|
||||
l_key_is_supported(L_KEY_FEATURE_CRYPTO) &&
|
||||
l_key_is_supported(L_KEY_FEATURE_RESTRICT));
|
||||
}
|
||||
|
||||
#define add_hash_test(name, func, data) l_test_add_data_func_precheck(name, \
|
||||
data, func, hash_precheck, 0)
|
||||
#define add_aes_test(name, func, data) l_test_add_data_func_precheck(name, \
|
||||
data, func, aes_precheck, 0)
|
||||
#define add_pkcs8_test(name, func, data) l_test_add_data_func_precheck(name, \
|
||||
data, func, pkcs8_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
@ -3977,80 +4009,55 @@ int main(int argc, char *argv[])
|
||||
l_test_add("/EAPoL Key/Key Frame 32",
|
||||
eapol_key_test, &eapol_key_test_32);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_MD5, true) ||
|
||||
!l_checksum_is_supported(L_CHECKSUM_SHA1, true))
|
||||
goto done;
|
||||
|
||||
l_test_add("/EAPoL Key/MIC Test 1",
|
||||
add_hash_test("/EAPoL Key/MIC Test 1",
|
||||
eapol_key_mic_test, &eapol_key_mic_test_1);
|
||||
l_test_add("/EAPoL Key/MIC Test 2",
|
||||
add_hash_test("/EAPoL Key/MIC Test 2",
|
||||
eapol_key_mic_test, &eapol_key_mic_test_2);
|
||||
|
||||
l_test_add("/EAPoL Key/Calculate MIC Test 1",
|
||||
add_hash_test("/EAPoL Key/Calculate MIC Test 1",
|
||||
eapol_calculate_mic_test, &eapol_calculate_mic_test_1);
|
||||
|
||||
if (!l_cipher_is_supported(L_CIPHER_AES))
|
||||
goto done;
|
||||
add_aes_test("EAPoL/WPA2 4-Way Handshake",
|
||||
eapol_4way_test, NULL);
|
||||
add_aes_test("EAPoL/WPA2 4-Way & GTK Handshake",
|
||||
eapol_wpa2_handshake_test, NULL);
|
||||
add_aes_test("EAPoL/WPA 4-Way & GTK Handshake",
|
||||
eapol_wpa_handshake_test, NULL);
|
||||
add_aes_test("EAPoL/WPA2 PTK State Machine",
|
||||
eapol_sm_test_ptk, NULL);
|
||||
add_aes_test("EAPoL IGTK & 4-Way Handshake",
|
||||
eapol_sm_test_igtk, NULL);
|
||||
add_aes_test("EAPoL/WPA2 PTK & GTK State Machine",
|
||||
eapol_sm_test_wpa2_ptk_gtk, NULL);
|
||||
add_aes_test("EAPoL/WPA PTK & GTK State Machine Test 1",
|
||||
eapol_sm_test_wpa_ptk_gtk, NULL);
|
||||
add_aes_test("EAPoL/WPA PTK & GTK State Machine Test 2",
|
||||
eapol_sm_test_wpa_ptk_gtk_2, NULL);
|
||||
add_aes_test("EAPoL/WPA2 Retransmit Test",
|
||||
eapol_sm_wpa2_retransmit_test, NULL);
|
||||
|
||||
l_test_add("EAPoL/WPA2 4-Way Handshake",
|
||||
&eapol_4way_test, NULL);
|
||||
add_pkcs8_test("EAPoL/8021x EAP-TLS & 4-Way Handshake",
|
||||
eapol_sm_test_eap_tls, NULL);
|
||||
add_pkcs8_test("EAPoL/8021x EAP-TTLS+EAP-MD5 & 4-Way Handshake",
|
||||
eapol_sm_test_eap_ttls_md5, NULL);
|
||||
add_pkcs8_test("EAPoL/8021x EAP NAK",
|
||||
eapol_sm_test_eap_nak, NULL);
|
||||
add_pkcs8_test("EAPoL/8021x EAP-TLS subject name match",
|
||||
eapol_sm_test_eap_tls_subject_good, NULL);
|
||||
add_pkcs8_test("EAPoL/8021x EAP-TLS subject name mismatch",
|
||||
eapol_sm_test_eap_tls_subject_bad, NULL);
|
||||
add_pkcs8_test("EAPoL/8021x EAP-TLS embedded certs",
|
||||
eapol_sm_test_eap_tls_embedded, NULL);
|
||||
|
||||
l_test_add("EAPoL/WPA2 4-Way & GTK Handshake",
|
||||
&eapol_wpa2_handshake_test, NULL);
|
||||
add_aes_test("EAPoL/FT-Using-PSK 4-Way Handshake",
|
||||
eapol_ft_handshake_test, NULL);
|
||||
add_aes_test("EAPoL/Supplicant+Authenticator 4-Way Handshake",
|
||||
eapol_ap_sta_handshake_test, NULL);
|
||||
add_aes_test("EAPoL/Supplicant+Authenticator 4-Way Handshake Bad PSK",
|
||||
eapol_ap_sta_handshake_bad_psk_test, NULL);
|
||||
add_aes_test("EAPoL/Supplicant+Authenticator IP Allocation OK",
|
||||
eapol_ap_sta_handshake_ip_alloc_ok_test, NULL);
|
||||
add_aes_test("EAPoL/Supplicant+Authenticator IP Allocation no request",
|
||||
eapol_ap_sta_handshake_ip_alloc_no_req_test, NULL);
|
||||
|
||||
l_test_add("EAPoL/WPA 4-Way & GTK Handshake",
|
||||
&eapol_wpa_handshake_test, NULL);
|
||||
|
||||
l_test_add("EAPoL/WPA2 PTK State Machine", &eapol_sm_test_ptk, NULL);
|
||||
|
||||
l_test_add("EAPoL IGTK & 4-Way Handshake",
|
||||
&eapol_sm_test_igtk, NULL);
|
||||
|
||||
l_test_add("EAPoL/WPA2 PTK & GTK State Machine",
|
||||
&eapol_sm_test_wpa2_ptk_gtk, NULL);
|
||||
|
||||
l_test_add("EAPoL/WPA PTK & GTK State Machine Test 1",
|
||||
&eapol_sm_test_wpa_ptk_gtk, NULL);
|
||||
|
||||
l_test_add("EAPoL/WPA PTK & GTK State Machine Test 2",
|
||||
&eapol_sm_test_wpa_ptk_gtk_2, NULL);
|
||||
|
||||
l_test_add("EAPoL/WPA2 Retransmit Test",
|
||||
&eapol_sm_wpa2_retransmit_test, NULL);
|
||||
|
||||
if (IS_ENABLED(HAVE_PKCS8_SUPPORT) &&
|
||||
l_cipher_is_supported(L_CIPHER_DES3_EDE_CBC) &&
|
||||
l_cipher_is_supported(L_CIPHER_AES_CBC) &&
|
||||
l_key_is_supported(L_KEY_FEATURE_RESTRICT |
|
||||
L_KEY_FEATURE_CRYPTO)) {
|
||||
l_test_add("EAPoL/8021x EAP-TLS & 4-Way Handshake",
|
||||
&eapol_sm_test_eap_tls, NULL);
|
||||
|
||||
l_test_add("EAPoL/8021x EAP-TTLS+EAP-MD5 & 4-Way Handshake",
|
||||
&eapol_sm_test_eap_ttls_md5, NULL);
|
||||
l_test_add("EAPoL/8021x EAP NAK",
|
||||
&eapol_sm_test_eap_nak, NULL);
|
||||
|
||||
l_test_add("EAPoL/8021x EAP-TLS subject name match",
|
||||
&eapol_sm_test_eap_tls_subject_good, NULL);
|
||||
l_test_add("EAPoL/8021x EAP-TLS subject name mismatch",
|
||||
&eapol_sm_test_eap_tls_subject_bad, NULL);
|
||||
l_test_add("EAPoL/8021x EAP-TLS embedded certs",
|
||||
&eapol_sm_test_eap_tls_embedded, NULL);
|
||||
}
|
||||
|
||||
l_test_add("EAPoL/FT-Using-PSK 4-Way Handshake",
|
||||
&eapol_ft_handshake_test, NULL);
|
||||
|
||||
l_test_add("EAPoL/Supplicant+Authenticator 4-Way Handshake",
|
||||
&eapol_ap_sta_handshake_test, NULL);
|
||||
l_test_add("EAPoL/Supplicant+Authenticator 4-Way Handshake Bad PSK",
|
||||
&eapol_ap_sta_handshake_bad_psk_test, NULL);
|
||||
l_test_add("EAPoL/Supplicant+Authenticator IP Allocation OK",
|
||||
&eapol_ap_sta_handshake_ip_alloc_ok_test, NULL);
|
||||
l_test_add("EAPoL/Supplicant+Authenticator IP Allocation no request",
|
||||
&eapol_ap_sta_handshake_ip_alloc_no_req_test, NULL);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -81,18 +81,20 @@ static const struct hmac_data test_case_2 = {
|
||||
.hmac = "80070713463e7749b90c2dc24911e275",
|
||||
};
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return l_checksum_is_supported(L_CHECKSUM_MD5, true);
|
||||
}
|
||||
|
||||
#define add_test(name, func, data) l_test_add_data_func_precheck(name, data, \
|
||||
func, test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_MD5, true)) {
|
||||
printf("MD5 support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
add_test("/hmac-md5/Test case 1", hmac_test, &test_case_1);
|
||||
add_test("/hmac-md5/Test case 2", hmac_test, &test_case_2);
|
||||
|
||||
l_test_add("/hmac-md5/Test case 1", hmac_test, &test_case_1);
|
||||
l_test_add("/hmac-md5/Test case 2", hmac_test, &test_case_2);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -81,18 +81,20 @@ static const struct hmac_data test_case_2 = {
|
||||
.hmac = "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9",
|
||||
};
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return l_checksum_is_supported(L_CHECKSUM_SHA1, true);
|
||||
}
|
||||
|
||||
#define add_test(name, func, data) l_test_add_data_func_precheck(name, data, \
|
||||
func, test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_SHA1, true)) {
|
||||
printf("SHA1 support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
add_test("/hmac-sha1/Test case 1", hmac_test, &test_case_1);
|
||||
add_test("/hmac-sha1/Test case 2", hmac_test, &test_case_2);
|
||||
|
||||
l_test_add("/hmac-sha1/Test case 1", hmac_test, &test_case_1);
|
||||
l_test_add("/hmac-sha1/Test case 2", hmac_test, &test_case_2);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -83,18 +83,20 @@ static const struct hmac_data test_case_2 = {
|
||||
"ef4d59a14946175997479dbc2d1a3cd8",
|
||||
};
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return l_checksum_is_supported(L_CHECKSUM_SHA256, true);
|
||||
}
|
||||
|
||||
#define add_test(name, func, data) l_test_add_data_func_precheck(name, data, \
|
||||
func, test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_SHA256, true)) {
|
||||
printf("SHA256 support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
add_test("/hmac-sha256/Test case 1", hmac_test, &test_case_1);
|
||||
add_test("/hmac-sha256/Test case 2", hmac_test, &test_case_2);
|
||||
|
||||
l_test_add("/hmac-sha256/Test case 1", hmac_test, &test_case_1);
|
||||
l_test_add("/hmac-sha256/Test case 2", hmac_test, &test_case_2);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -81,17 +81,19 @@ static const struct kdf_data test_case_1 = {
|
||||
"84f7d2291143d4d4",
|
||||
};
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return l_checksum_is_supported(L_CHECKSUM_SHA256, true);
|
||||
}
|
||||
|
||||
#define add_test(name, func, data) l_test_add_data_func_precheck(name, data, \
|
||||
func, test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_SHA256, true)) {
|
||||
printf("SHA256 support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
add_test("/kdf-sha256/Test case 1", kdf_test, &test_case_1);
|
||||
|
||||
l_test_add("/kdf-sha256/Test case 1", kdf_test, &test_case_1);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -113,19 +113,21 @@ static const struct prf_data test_case_3 = {
|
||||
"f7b4abd43d87f0a68f1cbd9e2b6f7607",
|
||||
};
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return l_checksum_is_supported(L_CHECKSUM_SHA1, true);
|
||||
}
|
||||
|
||||
#define add_test(name, func, data) l_test_add_data_func_precheck(name, data, \
|
||||
func, test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_SHA1, true)) {
|
||||
printf("SHA1 support missing, skipping...\n");
|
||||
goto done;
|
||||
}
|
||||
add_test("/prf-sha1/Test case 1", prf_test, &test_case_1);
|
||||
add_test("/prf-sha1/Test case 2", prf_test, &test_case_2);
|
||||
add_test("/prf-sha1/Test case 3", prf_test, &test_case_3);
|
||||
|
||||
l_test_add("/prf-sha1/Test case 1", prf_test, &test_case_1);
|
||||
l_test_add("/prf-sha1/Test case 2", prf_test, &test_case_2);
|
||||
l_test_add("/prf-sha1/Test case 3", prf_test, &test_case_3);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
@ -871,32 +871,29 @@ static void test_pt_pwe(const void *data)
|
||||
l_ecc_point_free(pt);
|
||||
}
|
||||
|
||||
static bool test_precheck(const void *data)
|
||||
{
|
||||
return (l_getrandom_is_supported() &&
|
||||
l_checksum_is_supported(L_CHECKSUM_SHA256, true));
|
||||
}
|
||||
|
||||
#define add_test(name, func) l_test_add_func_precheck(name, func, \
|
||||
test_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
|
||||
if (!l_getrandom_is_supported()) {
|
||||
l_info("l_getrandom not supported, skipping...");
|
||||
goto done;
|
||||
}
|
||||
add_test("SAE anti-clogging", test_clogging);
|
||||
add_test("SAE early confirm", test_early_confirm);
|
||||
add_test("SAE reflection", test_reflection);
|
||||
add_test("SAE malformed commit", test_malformed_commit);
|
||||
add_test("SAE malformed confirm", test_malformed_confirm);
|
||||
add_test("SAE bad group", test_bad_group);
|
||||
add_test("SAE bad confirm", test_bad_confirm);
|
||||
add_test("SAE confirm after accept", test_confirm_after_accept);
|
||||
add_test("SAE end-to-end", test_end_to_end);
|
||||
add_test("SAE pt-pwe", test_pt_pwe);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_SHA256, true)) {
|
||||
l_info("SHA256/HMAC_SHA256 not supported, skipping...");
|
||||
goto done;
|
||||
}
|
||||
|
||||
l_test_add("SAE anti-clogging", test_clogging, NULL);
|
||||
l_test_add("SAE early confirm", test_early_confirm, NULL);
|
||||
l_test_add("SAE reflection", test_reflection, NULL);
|
||||
l_test_add("SAE malformed commit", test_malformed_commit, NULL);
|
||||
l_test_add("SAE malformed confirm", test_malformed_confirm, NULL);
|
||||
l_test_add("SAE bad group", test_bad_group, NULL);
|
||||
l_test_add("SAE bad confirm", test_bad_confirm, NULL);
|
||||
l_test_add("SAE confirm after accept", test_confirm_after_accept, NULL);
|
||||
l_test_add("SAE end-to-end", test_end_to_end, NULL);
|
||||
|
||||
l_test_add("SAE pt-pwe", test_pt_pwe, NULL);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
116
unit/test-wsc.c
116
unit/test-wsc.c
@ -2574,6 +2574,39 @@ struct wsc_credential wsc_r_test_open_cred = {
|
||||
.encryption_type = WSC_ENCRYPTION_TYPE_NONE,
|
||||
};
|
||||
|
||||
static bool getrandom_precheck(const void *data)
|
||||
{
|
||||
return l_getrandom_is_supported();
|
||||
}
|
||||
|
||||
static bool aes_cbc_precheck(const void *data)
|
||||
{
|
||||
return l_cipher_is_supported(L_CIPHER_AES_CBC);
|
||||
}
|
||||
|
||||
static bool key_crypto_precheck(const void *data)
|
||||
{
|
||||
return (l_key_is_supported(L_KEY_FEATURE_CRYPTO) &&
|
||||
l_checksum_is_supported(L_CHECKSUM_SHA256, true));
|
||||
}
|
||||
|
||||
static bool key_dh_precheck(const void *data)
|
||||
{
|
||||
return (l_key_is_supported(L_KEY_FEATURE_DH) &&
|
||||
l_key_is_supported(L_KEY_FEATURE_CRYPTO) &&
|
||||
l_checksum_is_supported(L_CHECKSUM_SHA256, true));
|
||||
}
|
||||
|
||||
#define add_aes_cbc_test(name, func, data) l_test_add_data_func_precheck(name, \
|
||||
data, func, \
|
||||
aes_cbc_precheck, 0)
|
||||
#define add_crypto_test(name, func, data) l_test_add_data_func_precheck(name, \
|
||||
data, func, \
|
||||
key_crypto_precheck, 0)
|
||||
#define add_dh_test(name, func, data) l_test_add_data_func_precheck(name, \
|
||||
data, func, \
|
||||
key_dh_precheck, 0)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
l_test_init(&argc, &argv);
|
||||
@ -2595,8 +2628,8 @@ int main(int argc, char *argv[])
|
||||
l_test_add("/wsc/pin/valid pin", wsc_test_pin_valid, NULL);
|
||||
l_test_add("/wsc/pin/valid checksum", wsc_test_pin_checksum, NULL);
|
||||
|
||||
if (l_getrandom_is_supported())
|
||||
l_test_add("/wsc/pin/generate", wsc_test_pin_generate, NULL);
|
||||
l_test_add_func_precheck("/wsc/pin/generate", wsc_test_pin_generate,
|
||||
getrandom_precheck, 0);
|
||||
|
||||
l_test_add("/wsc/gen_uuid/1", wsc_test_uuid_from_addr,
|
||||
&uuid_from_addr_data_1);
|
||||
@ -2607,96 +2640,77 @@ int main(int argc, char *argv[])
|
||||
l_test_add("/wsc/build/m1 1", wsc_test_build_m1, &m1_data_1);
|
||||
l_test_add("/wsc/build/m1 2", wsc_test_build_m1, &m1_data_2);
|
||||
|
||||
if (!l_checksum_is_supported(L_CHECKSUM_SHA256, true)) {
|
||||
printf("SHA256 support missing, skipping other tests...\n");
|
||||
goto done;
|
||||
}
|
||||
add_dh_test("/wsc/parse/m2 1", wsc_test_parse_m2, &m2_data_1);
|
||||
add_dh_test("/wsc/parse/m2 2", wsc_test_parse_m2, &m2_data_2);
|
||||
|
||||
if (!l_key_is_supported(L_KEY_FEATURE_CRYPTO)) {
|
||||
printf("Key crypto not supported, skipping other tests...\n");
|
||||
goto done;
|
||||
}
|
||||
add_crypto_test("/wsc/build/m2 1", wsc_test_build_m2, &m2_data_1);
|
||||
|
||||
if (l_key_is_supported(L_KEY_FEATURE_DH)) {
|
||||
l_test_add("/wsc/parse/m2 1", wsc_test_parse_m2, &m2_data_1);
|
||||
l_test_add("/wsc/parse/m2 2", wsc_test_parse_m2, &m2_data_2);
|
||||
}
|
||||
add_crypto_test("/wsc/parse/m3 1", wsc_test_parse_m3, &m3_data_1);
|
||||
add_crypto_test("/wsc/build/m3 1", wsc_test_build_m3, &m3_data_1);
|
||||
|
||||
l_test_add("/wsc/build/m2 1", wsc_test_build_m2, &m2_data_1);
|
||||
add_crypto_test("/wsc/parse/m4 1", wsc_test_parse_m4, &m4_data_1);
|
||||
add_crypto_test("/wsc/build/m4 1", wsc_test_build_m4, &m4_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m3 1", wsc_test_parse_m3, &m3_data_1);
|
||||
l_test_add("/wsc/build/m3 1", wsc_test_build_m3, &m3_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m4 1", wsc_test_parse_m4, &m4_data_1);
|
||||
l_test_add("/wsc/build/m4 1", wsc_test_build_m4, &m4_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m4 encrypted settings 1",
|
||||
add_crypto_test("/wsc/parse/m4 encrypted settings 1",
|
||||
wsc_test_parse_m4_encrypted_settings,
|
||||
&m4_encrypted_settings_data_1);
|
||||
l_test_add("/wsc/build/m4 encrypted settings 1",
|
||||
add_crypto_test("/wsc/build/m4 encrypted settings 1",
|
||||
wsc_test_build_m4_encrypted_settings,
|
||||
&m4_encrypted_settings_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m5 1", wsc_test_parse_m5, &m5_data_1);
|
||||
l_test_add("/wsc/build/m5 1", wsc_test_build_m5, &m5_data_1);
|
||||
add_crypto_test("/wsc/parse/m5 1", wsc_test_parse_m5, &m5_data_1);
|
||||
add_crypto_test("/wsc/build/m5 1", wsc_test_build_m5, &m5_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m6 1", wsc_test_parse_m6, &m6_data_1);
|
||||
l_test_add("/wsc/build/m6 1", wsc_test_build_m6, &m6_data_1);
|
||||
add_crypto_test("/wsc/parse/m6 1", wsc_test_parse_m6, &m6_data_1);
|
||||
add_crypto_test("/wsc/build/m6 1", wsc_test_build_m6, &m6_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m6 encrypted settings 1",
|
||||
add_crypto_test("/wsc/parse/m6 encrypted settings 1",
|
||||
wsc_test_parse_m6_encrypted_settings,
|
||||
&m6_encrypted_settings_data_1);
|
||||
l_test_add("/wsc/build/m6 encrypted settings 1",
|
||||
add_crypto_test("/wsc/build/m6 encrypted settings 1",
|
||||
wsc_test_build_m6_encrypted_settings,
|
||||
&m6_encrypted_settings_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m7 1", wsc_test_parse_m7, &m7_data_1);
|
||||
l_test_add("/wsc/build/m7 1", wsc_test_build_m7, &m7_data_1);
|
||||
add_crypto_test("/wsc/parse/m7 1", wsc_test_parse_m7, &m7_data_1);
|
||||
add_crypto_test("/wsc/build/m7 1", wsc_test_build_m7, &m7_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m8 1", wsc_test_parse_m8, &m8_data_1);
|
||||
l_test_add("/wsc/build/m8 1", wsc_test_build_m8, &m8_data_1);
|
||||
add_crypto_test("/wsc/parse/m8 1", wsc_test_parse_m8, &m8_data_1);
|
||||
add_crypto_test("/wsc/build/m8 1", wsc_test_build_m8, &m8_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/m8 encrypted settings 1",
|
||||
add_crypto_test("/wsc/parse/m8 encrypted settings 1",
|
||||
wsc_test_parse_m8_encrypted_settings,
|
||||
&m8_encrypted_settings_data_1);
|
||||
l_test_add("/wsc/build/m8 encrypted settings 1",
|
||||
add_crypto_test("/wsc/build/m8 encrypted settings 1",
|
||||
wsc_test_build_m8_encrypted_settings,
|
||||
&m8_encrypted_settings_data_1);
|
||||
|
||||
l_test_add("/wsc/parse/wsc_done 1", wsc_test_parse_wsc_done,
|
||||
add_crypto_test("/wsc/parse/wsc_done 1", wsc_test_parse_wsc_done,
|
||||
&wsc_done_data_1);
|
||||
l_test_add("/wsc/build/wsc_done 1", wsc_test_build_wsc_done,
|
||||
add_crypto_test("/wsc/build/wsc_done 1", wsc_test_build_wsc_done,
|
||||
&wsc_done_data_1);
|
||||
|
||||
if (!l_key_is_supported(L_KEY_FEATURE_DH))
|
||||
goto done;
|
||||
|
||||
l_test_add("/wsc/diffie-hellman/generate pubkey 1",
|
||||
add_dh_test("/wsc/diffie-hellman/generate pubkey 1",
|
||||
wsc_test_dh_generate_pubkey,
|
||||
&dh_generate_pubkey_test_data_1);
|
||||
l_test_add("/wsc/diffie-hellman/generate pubkey 2",
|
||||
add_dh_test("/wsc/diffie-hellman/generate pubkey 2",
|
||||
wsc_test_dh_generate_pubkey,
|
||||
&dh_generate_pubkey_test_data_2);
|
||||
|
||||
if (!l_cipher_is_supported(L_CIPHER_AES_CBC))
|
||||
goto done;
|
||||
|
||||
l_test_add("/wsc/handshake/PBC Handshake Test",
|
||||
add_aes_cbc_test("/wsc/handshake/PBC Handshake Test",
|
||||
wsc_test_pbc_handshake, NULL);
|
||||
|
||||
l_test_add("/wsc/retransmission/no fragmentation",
|
||||
add_aes_cbc_test("/wsc/retransmission/no fragmentation",
|
||||
wsc_test_retransmission_no_fragmentation, NULL);
|
||||
|
||||
l_test_add("/wsc-r/handshake/PBC Handshake WPA2 passphrase test",
|
||||
add_aes_cbc_test("/wsc-r/handshake/PBC Handshake WPA2 passphrase test",
|
||||
wsc_r_test_pbc_handshake,
|
||||
&wsc_r_test_wpa2_cred_passphrase);
|
||||
l_test_add("/wsc-r/handshake/PBC Handshake WPA2 PSK test",
|
||||
add_aes_cbc_test("/wsc-r/handshake/PBC Handshake WPA2 PSK test",
|
||||
wsc_r_test_pbc_handshake,
|
||||
&wsc_r_test_wpa2_cred_psk);
|
||||
l_test_add("/wsc-r/handshake/PBC Handshake Open test",
|
||||
add_aes_cbc_test("/wsc-r/handshake/PBC Handshake Open test",
|
||||
wsc_r_test_pbc_handshake,
|
||||
&wsc_r_test_open_cred);
|
||||
|
||||
done:
|
||||
return l_test_run();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user