Merge pull request #8549 from douzzer/20250311-aesxts-stream-armasm-and-unit-test-wolfcrypt-test

20250311-aesxts-stream-armasm-and-unit-test-wolfcrypt-test
pull/8552/head
Kaleb Himes 2025-03-12 10:18:39 -06:00 committed by GitHub
commit 517f4bd561
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 57 additions and 1073 deletions

View File

@ -2538,7 +2538,6 @@ if(WOLFSSL_EXAMPLES)
tests/api/test_dtls.c tests/api/test_dtls.c
tests/api/test_ocsp.c tests/api/test_ocsp.c
tests/api/test_evp.c tests/api/test_evp.c
tests/hash.c
tests/srp.c tests/srp.c
tests/suites.c tests/suites.c
tests/w64wrapper.c tests/w64wrapper.c
@ -2547,7 +2546,8 @@ if(WOLFSSL_EXAMPLES)
tests/utils.c tests/utils.c
testsuite/utils.c testsuite/utils.c
examples/server/server.c examples/server/server.c
examples/client/client.c) examples/client/client.c
wolfcrypt/test/test.c)
target_include_directories(unit_test PRIVATE target_include_directories(unit_test PRIVATE
${CMAKE_CURRENT_BINARY_DIR}) ${CMAKE_CURRENT_BINARY_DIR})
target_compile_options(unit_test PUBLIC "-DNO_MAIN_DRIVER") target_compile_options(unit_test PUBLIC "-DNO_MAIN_DRIVER")

View File

@ -1312,7 +1312,7 @@ then
then then
test "$enable_aesgcm_stream" = "" && test "$enable_aesgcm" = "yes" && enable_aesgcm_stream=yes test "$enable_aesgcm_stream" = "" && test "$enable_aesgcm" = "yes" && enable_aesgcm_stream=yes
test "$enable_aesxts" = "" && enable_aesxts=yes test "$enable_aesxts" = "" && enable_aesxts=yes
test "$enable_aesxts_stream" = "" && test "$enable_aesxts" = "yes" && (test "$enable_armasm" = "" || test "$enable_armasm" = "no") && enable_aesxts_stream=yes test "$enable_aesxts_stream" = "" && test "$enable_aesxts" = "yes" && enable_aesxts_stream=yes
test "$enable_aessiv" = "" && enable_aessiv=yes test "$enable_aessiv" = "" && enable_aessiv=yes
test "$enable_shake128" = "" && enable_shake128=yes test "$enable_shake128" = "" && enable_shake128=yes
test "$enable_shake256" = "" && enable_shake256=yes test "$enable_shake256" = "" && enable_shake256=yes
@ -3221,7 +3221,6 @@ then
# Include options.h # Include options.h
AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN" AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN"
ENABLED_ARMASM_CRYPTO=no ENABLED_ARMASM_CRYPTO=no
ENABLED_AESGCM_STREAM=no # not yet implemented
ENABLED_ARMASM_NEON=yes ENABLED_ARMASM_NEON=yes
ENABLED_ARM_32=yes ENABLED_ARM_32=yes
AC_MSG_NOTICE([32bit ARMv7-a found, setting mfpu to neon]) AC_MSG_NOTICE([32bit ARMv7-a found, setting mfpu to neon])
@ -3241,7 +3240,6 @@ then
# Include options.h # Include options.h
AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN" AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN"
ENABLED_ARMASM_CRYPTO=no ENABLED_ARMASM_CRYPTO=no
ENABLED_AESGCM_STREAM=no # not yet implemented
ENABLED_ARMASM_NEON=no ENABLED_ARMASM_NEON=no
ENABLED_ARM_THUMB=yes ENABLED_ARM_THUMB=yes
ENABLED_ARM_32=yes ENABLED_ARM_32=yes
@ -3259,7 +3257,6 @@ then
AM_CPPFLAGS="$AM_CPPFLAGS -march=armv6 -fomit-frame-pointer -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_ARM_ARCH=6" AM_CPPFLAGS="$AM_CPPFLAGS -march=armv6 -fomit-frame-pointer -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_ARM_ARCH=6"
AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN" AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN"
ENABLED_ARMASM_CRYPTO=no ENABLED_ARMASM_CRYPTO=no
ENABLED_AESGCM_STREAM=no # not yet implemented
ENABLED_ARMASM_NEON=no ENABLED_ARMASM_NEON=no
ENABLED_ARM_32=yes ENABLED_ARM_32=yes
AC_MSG_NOTICE([32bit ARMv6 found]) AC_MSG_NOTICE([32bit ARMv6 found])
@ -3268,7 +3265,6 @@ then
AM_CPPFLAGS="$AM_CPPFLAGS -march=armv4 -fomit-frame-pointer -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_ARM_ARCH=4" AM_CPPFLAGS="$AM_CPPFLAGS -march=armv4 -fomit-frame-pointer -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_ARM_ARCH=4"
AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN" AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN"
ENABLED_ARMASM_CRYPTO=no ENABLED_ARMASM_CRYPTO=no
ENABLED_AESGCM_STREAM=no # not yet implemented
ENABLED_ARMASM_NEON=no ENABLED_ARMASM_NEON=no
ENABLED_ARM_32=yes ENABLED_ARM_32=yes
AC_MSG_NOTICE([32bit ARMv4 found]) AC_MSG_NOTICE([32bit ARMv4 found])
@ -3323,7 +3319,6 @@ AC_ARG_ENABLE([riscv-asm],
if test "$ENABLED_RISCV_ASM" != "no" && test "$ENABLED_ASM" = "yes" if test "$ENABLED_RISCV_ASM" != "no" && test "$ENABLED_ASM" = "yes"
then then
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_RISCV_ASM" AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_RISCV_ASM"
ENABLED_AESGCM_STREAM=no # not yet implemented
AC_MSG_NOTICE([64bit RISC-V assembly for AES]) AC_MSG_NOTICE([64bit RISC-V assembly for AES])
fi fi
@ -5584,11 +5579,8 @@ AS_CASE([$FIPS_VERSION],
(test "$FIPS_VERSION" != "dev" || test "$enable_aesgcm" != "no")], (test "$FIPS_VERSION" != "dev" || test "$enable_aesgcm" != "no")],
[ENABLED_AESGCM="yes"; AM_CFLAGS="$AM_CFLAGS -DHAVE_AESGCM"; AM_CCASFLAGS="$AM_CCASFLAGS -DHAVE_AESGCM"]) [ENABLED_AESGCM="yes"; AM_CFLAGS="$AM_CFLAGS -DHAVE_AESGCM"; AM_CCASFLAGS="$AM_CCASFLAGS -DHAVE_AESGCM"])
# AES-GCM streaming is part of the v6 FIPS suite, but isn't implemented
# for armasm on arm-v7 or earlier (see armasm setup above).
AS_IF([test "$ENABLED_AESGCM_STREAM" != "yes" && AS_IF([test "$ENABLED_AESGCM_STREAM" != "yes" &&
(test "$FIPS_VERSION" != "dev" || test "$enable_aesgcm_stream" != "no") && (test "$FIPS_VERSION" != "dev" || test "$enable_aesgcm_stream" != "no")],
! (test "$ENABLED_ARMASM" = "yes" && test "$ENABLED_ARMASM_CRYPTO" = "no")],
[ENABLED_AESGCM_STREAM="yes"]) [ENABLED_AESGCM_STREAM="yes"])
AS_IF([test "x$ENABLED_AESOFB" = "xno" && AS_IF([test "x$ENABLED_AESOFB" = "xno" &&
@ -5606,8 +5598,7 @@ AS_CASE([$FIPS_VERSION],
[AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_AES_XTS"]) [AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_AES_XTS"])
AS_IF([test "x$ENABLED_AESXTS_STREAM" = "xno" && AS_IF([test "x$ENABLED_AESXTS_STREAM" = "xno" &&
(test "$FIPS_VERSION" != "dev" || test "$enable_aesxts_stream" != "no") && (test "$FIPS_VERSION" != "dev" || test "$enable_aesxts_stream" != "no")],
! (test "$ENABLED_ARMASM" = "yes" && test "$ENABLED_ARMASM_CRYPTO" = "no")],
[ENABLED_AESXTS_STREAM="yes"]) [ENABLED_AESXTS_STREAM="yes"])
AS_IF([(test "$ENABLED_AESCCM" = "yes" && test "$HAVE_AESCCM_PORT" != "yes") || AS_IF([(test "$ENABLED_AESCCM" = "yes" && test "$HAVE_AESCCM_PORT" != "yes") ||
@ -7961,6 +7952,11 @@ AC_ARG_ENABLE([crypttests],
) )
AC_SUBST([ENABLED_CRYPT_TESTS]) AC_SUBST([ENABLED_CRYPT_TESTS])
if test "$ENABLED_CRYPT_TESTS" = "no"
then
AM_CFLAGS="$AM_CFLAGS -DNO_CRYPT_TEST"
fi
# Build wolfCrypt test and benchmark as libraries. This will compile test.c and # Build wolfCrypt test and benchmark as libraries. This will compile test.c and
# benchmark.c and make their functions available via libraries, libwolfcrypttest # benchmark.c and make their functions available via libraries, libwolfcrypttest
# and libwolfcryptbench, respectively. Note that this feature is not enabled by # and libwolfcryptbench, respectively. Note that this feature is not enabled by
@ -9050,7 +9046,7 @@ if test "$ENABLED_LINUXKM_LKCAPI_REGISTER" != "none"
then then
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER" AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER"
if test "$ENABLED_AESGCM" != "no" && test "$ENABLED_AESGCM_STREAM" = "no" && test "$ENABLED_ARMASM" = "no" && test "$ENABLED_RISCV_ASM" = "no" && test "$ENABLED_FIPS" = "no"; then if test "$ENABLED_AESGCM" != "no" && test "$ENABLED_AESGCM_STREAM" = "no" && test "$ENABLED_FIPS" = "no"; then
ENABLED_AESGCM_STREAM=yes ENABLED_AESGCM_STREAM=yes
fi fi

File diff suppressed because it is too large Load Diff

View File

@ -11,12 +11,16 @@ tests_unit_test_SOURCES = \
tests/utils.c \ tests/utils.c \
testsuite/utils.c \ testsuite/utils.c \
tests/suites.c \ tests/suites.c \
tests/hash.c \
tests/w64wrapper.c \ tests/w64wrapper.c \
tests/srp.c \ tests/srp.c \
tests/quic.c \ tests/quic.c \
examples/client/client.c \ examples/client/client.c \
examples/server/server.c examples/server/server.c
if BUILD_WOLFCRYPT_TESTS
tests_unit_test_SOURCES += wolfcrypt/test/test.c
endif
tests_unit_test_CFLAGS = -DNO_MAIN_DRIVER $(AM_CFLAGS) $(WOLFSENTRY_INCLUDE) tests_unit_test_CFLAGS = -DNO_MAIN_DRIVER $(AM_CFLAGS) $(WOLFSENTRY_INCLUDE)
tests_unit_test_LDADD = src/libwolfssl@LIBSUFFIX@.la $(LIB_STATIC_ADD) $(WOLFSENTRY_LIB) tests_unit_test_LDADD = src/libwolfssl@LIBSUFFIX@.la $(LIB_STATIC_ADD) $(WOLFSENTRY_LIB)
tests_unit_test_DEPENDENCIES = src/libwolfssl@LIBSUFFIX@.la tests_unit_test_DEPENDENCIES = src/libwolfssl@LIBSUFFIX@.la

View File

@ -29,6 +29,10 @@
#include <stdio.h> #include <stdio.h>
#include <wolfssl/wolfcrypt/fips_test.h> #include <wolfssl/wolfcrypt/fips_test.h>
#ifndef NO_CRYPT_TEST
#include <wolfssl/test.h>
#include "wolfcrypt/test/test.h"
#endif
int allTesting = 1; int allTesting = 1;
int apiTesting = 1; int apiTesting = 1;
@ -218,6 +222,34 @@ int unit_test(int argc, char** argv)
argv++; argv++;
} }
#ifndef NO_CRYPT_TEST
/* wc_ test */
if (allTesting) {
func_args wc_args;
printf("\nwolfCrypt unit test:\n");
if ((ret = wolfCrypt_Init()) != 0) {
fprintf(stderr, "wolfCrypt_Init failed: %d\n", (int)ret);
goto exit;
}
XMEMSET(&wc_args, 0, sizeof(wc_args));
wolfcrypt_test(&wc_args);
if (wc_args.return_code != 0) {
ret = 1;
goto exit;
}
if ((ret = wolfCrypt_Cleanup()) != 0) {
fprintf(stderr, "wolfCrypt_Cleanup failed: %d\n", (int)ret);
goto exit;
}
printf("wolfCrypt unit test completed successfully.\n\n");
}
#endif
#ifdef WOLFSSL_ALLOW_SKIP_UNIT_TESTS #ifdef WOLFSSL_ALLOW_SKIP_UNIT_TESTS
if (argc == 1) if (argc == 1)
#endif #endif
@ -232,11 +264,6 @@ int unit_test(int argc, char** argv)
goto exit; goto exit;
} }
if ((ret = HashTest()) != 0) {
fprintf(stderr, "hash test failed with %d\n", ret);
goto exit;
}
#ifdef WOLFSSL_W64_WRAPPER #ifdef WOLFSSL_W64_WRAPPER
if ((ret = w64wrapper_test()) != 0) { if ((ret = w64wrapper_test()) != 0) {
fprintf(stderr, "w64wrapper test failed with %d\n", ret); fprintf(stderr, "w64wrapper test failed with %d\n", ret);
@ -246,7 +273,7 @@ int unit_test(int argc, char** argv)
#ifdef WOLFSSL_QUIC #ifdef WOLFSSL_QUIC
if ((ret = QuicTest()) != 0) { if ((ret = QuicTest()) != 0) {
printf("quic test failed with %d\n", ret); fprintf(stderr, "quic test failed with %d\n", ret);
goto exit; goto exit;
} }
#endif #endif

View File

@ -419,7 +419,6 @@ int ApiTest_RunName(char* name);
int ApiTest(void); int ApiTest(void);
int SuiteTest(int argc, char** argv); int SuiteTest(int argc, char** argv);
int HashTest(void);
void SrpTest(void); void SrpTest(void);
int w64wrapper_test(void); int w64wrapper_test(void);
int QuicTest(void); int QuicTest(void);

View File

@ -2396,16 +2396,20 @@ options: [-s max_relative_stack_bytes] [-m max_relative_heap_memory_bytes]\n\
else else
TEST_PASS("PKCS7signed test passed!\n"); TEST_PASS("PKCS7signed test passed!\n");
PRIVATE_KEY_UNLOCK();
if ( (ret = pkcs7enveloped_test()) != 0) if ( (ret = pkcs7enveloped_test()) != 0)
TEST_FAIL("PKCS7enveloped test failed!\n", ret); TEST_FAIL("PKCS7enveloped test failed!\n", ret);
else else
TEST_PASS("PKCS7enveloped test passed!\n"); TEST_PASS("PKCS7enveloped test passed!\n");
PRIVATE_KEY_LOCK();
#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM) #if defined(HAVE_AESGCM) || defined(HAVE_AESCCM)
PRIVATE_KEY_UNLOCK();
if ( (ret = pkcs7authenveloped_test()) != 0) if ( (ret = pkcs7authenveloped_test()) != 0)
TEST_FAIL("PKCS7authenveloped test failed!\n", ret); TEST_FAIL("PKCS7authenveloped test failed!\n", ret);
else else
TEST_PASS("PKCS7authenveloped test passed!\n"); TEST_PASS("PKCS7authenveloped test passed!\n");
PRIVATE_KEY_LOCK();
#endif #endif
#endif #endif
@ -60077,6 +60081,8 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t cryptocb_test(void)
/* set devId to something other than INVALID_DEVID */ /* set devId to something other than INVALID_DEVID */
devId = 1; devId = 1;
ret = wc_CryptoCb_RegisterDevice(devId, myCryptoDevCb, &myCtx); ret = wc_CryptoCb_RegisterDevice(devId, myCryptoDevCb, &myCtx);
if (ret != 0)
ret = WC_TEST_RET_ENC_EC(ret);
#ifdef WOLF_CRYPTO_CB_FIND #ifdef WOLF_CRYPTO_CB_FIND
wc_CryptoCb_SetDeviceFindCb(myCryptoCbFind); wc_CryptoCb_SetDeviceFindCb(myCryptoCbFind);
#endif /* WOLF_CRYPTO_CB_FIND */ #endif /* WOLF_CRYPTO_CB_FIND */
@ -60187,6 +60193,8 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t cryptocb_test(void)
ret = cmac_test(); ret = cmac_test();
#endif #endif
wc_CryptoCb_UnRegisterDevice(devId);
/* restore devId */ /* restore devId */
devId = origDevId; devId = origDevId;