From 8df5d61179572c81648c005ef2b2f6eb89117904 Mon Sep 17 00:00:00 2001 From: Brett Nicholas <7547222+bigbrett@users.noreply.github.com> Date: Mon, 12 Aug 2024 15:16:33 -0600 Subject: [PATCH 1/2] add optional cryptocb test disable macro to wolfCrypt tests --- configure.ac | 18 ++++++++++++++++++ wolfcrypt/test/test.c | 6 ++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 3f5f44a3c1..1382eaf763 100644 --- a/configure.ac +++ b/configure.ac @@ -8475,6 +8475,19 @@ AC_ARG_ENABLE([cryptocb], [ ENABLED_CRYPTOCB=no ] ) +# Enable testing of cryptoCb using software crypto. On platforms where wolfCrypt tests +# are used to test a custom cryptoCb, it may be desired to disable this so wolfCrypt tests +# don't also test software implementations of every algorithm +AC_ARG_ENABLE([cryptocb-sw-test], + [AS_HELP_STRING([--disable-cryptocb-sw-test],[Disable wolfCrypt crypto callback tests using software crypto (default: enabled). Only valid with --enable-cryptocb])], + [ if test "x$ENABLED_CRYPTOCB" = "xno"; then + AC_MSG_ERROR([--disable-cryptocb-sw-test requires --enable-cryptocb]) + else + ENABLED_CRYPTOCB_SW_TEST=$enableval + fi ], + [ ENABLED_CRYPTOCB_SW_TEST=yes ] + ) + if test "x$ENABLED_PKCS11" = "xyes" || test "x$ENABLED_WOLFTPM" = "xyes" || test "$ENABLED_CAAM" != "no" then ENABLED_CRYPTOCB=yes @@ -8484,6 +8497,11 @@ then AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB" fi +if test "$ENABLED_CRYPTOCB_SW_TEST" = "no" +then + AM_CFLAGS="$AM_CFLAGS -DWC_TEST_NO_CRYPTOCB_SW_TEST" +fi + # Asynchronous Crypto diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index b0a56c224b..283b4b218b 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -735,7 +735,7 @@ void printOutput(const char *strName, unsigned char *data, unsigned int dataSz); WOLFSSL_TEST_SUBROUTINE int ariagcm_test(MC_ALGID); #endif -#ifdef WOLF_CRYPTO_CB +#if defined(WOLF_CRYPTO_CB) && !defined(WC_TEST_NO_CRYPTOCB_SW_TEST) WOLFSSL_TEST_SUBROUTINE wc_test_ret_t cryptocb_test(void); #endif #ifdef WOLFSSL_CERT_PIV @@ -2321,7 +2321,7 @@ options: [-s max_relative_stack_bytes] [-m max_relative_heap_memory_bytes]\n\ TEST_PASS("blob test passed!\n"); #endif -#if defined(WOLF_CRYPTO_CB) && \ +#if defined(WOLF_CRYPTO_CB) && !defined(WC_TEST_NO_CRYPTOCB_SW_TEST) && \ !(defined(HAVE_INTEL_QAT_SYNC) || defined(HAVE_CAVIUM_OCTEON_SYNC) || \ defined(WOLFSSL_QNX_CAAM) || defined(HAVE_RENESAS_SYNC)) if ( (ret = cryptocb_test()) != 0) @@ -55567,6 +55567,7 @@ static int myCryptoCbFind(int currentId, int algoType) #endif /* WOLF_CRYPTO_CB_FIND */ +#if !defined(WC_TEST_NO_CRYPTOCB_SW_TEST) WOLFSSL_TEST_SUBROUTINE wc_test_ret_t cryptocb_test(void) { wc_test_ret_t ret = 0; @@ -55695,6 +55696,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t cryptocb_test(void) return ret; } +#endif /* ! WC_TEST_NO_CRYPTOCB_SW_TEST */ #endif /* WOLF_CRYPTO_CB */ #ifdef WOLFSSL_CERT_PIV From 10a3634e86d46598cde5e620652848813ee6b6e8 Mon Sep 17 00:00:00 2001 From: Brett Nicholas <7547222+bigbrett@users.noreply.github.com> Date: Mon, 12 Aug 2024 16:01:15 -0600 Subject: [PATCH 2/2] cmake support --- CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 315943d42f..58b7ccea1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1877,6 +1877,10 @@ add_option("WOLFSSL_CRYPTOCB" "Enable crypto callbacks (default: disabled)" "no" "yes;no") +add_option("WOLFSSL_CRYPTOCB_NO_SW_TEST" + "Disable crypto callback SW testing (default: disabled)" + "no" "yes;no") + add_option("WOLFSSL_PKCALLBACKS" "Enable public key callbacks (default: disabled)" "no" "yes;no") @@ -2080,6 +2084,10 @@ if(WOLFSSL_CRYPTOCB) list(APPEND WOLFSSL_DEFINITIONS "-DWOLF_CRYPTO_CB") endif() +if(WOLFSSL_CRYPTOCB_NO_SW_TEST) + list(APPEND WOLFSSL_DEFINITIONS "-DWC_TEST_NO_CRYPTOCB_SW_TEST") +endif() + # Public Key Callbacks if(WOLFSSL_PKCALLBACKS) list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_PK_CALLBACKS")