@@ -101,8 +101,8 @@ extern int tolower(int c);
101101 defined(WOLFBOOT_SIGN_SECONDARY_ECC256 ) || \
102102 defined(WOLFBOOT_SIGN_SECONDARY_ECC384 ) || \
103103 defined(WOLFBOOT_SIGN_SECONDARY_ECC521 ) || \
104- defined(WOLFCRYPT_SECURE_MODE )
105-
104+ defined(WOLFCRYPT_SECURE_MODE ) || \
105+ defined( WOLFCRYPT_TEST ) || defined( WOLFCRYPT_BENCHMARK )
106106
107107# define HAVE_ECC
108108# define ECC_TIMING_RESISTANT
@@ -118,6 +118,7 @@ extern int tolower(int c);
118118
119119 /* Some ECC options are disabled to reduce size */
120120# if !defined(WOLFCRYPT_SECURE_MODE ) && \
121+ !defined(WOLFCRYPT_TEST ) && !defined(WOLFCRYPT_BENCHMARK ) && \
121122 !defined(WOLFBOOT_ENABLE_WOLFHSM_CLIENT ) && \
122123 !defined(WOLFBOOT_ENABLE_WOLFHSM_SERVER )
123124# if !defined(WOLFBOOT_TPM )
@@ -138,6 +139,7 @@ extern int tolower(int c);
138139# endif
139140# else
140141# define HAVE_ECC_SIGN
142+ # define HAVE_ECC_VERIFY
141143#ifndef PKCS11_SMALL
142144# define HAVE_ECC_CDH
143145#endif
@@ -147,6 +149,7 @@ extern int tolower(int c);
147149# define WOLFSSL_HAVE_SP_ECC
148150# define WOLFSSL_KEY_GEN
149151# define HAVE_ECC_KEY_EXPORT
152+ # define HAVE_ECC_KEY_IMPORT
150153# endif
151154
152155 /* SP MATH */
@@ -160,15 +163,18 @@ extern int tolower(int c);
160163
161164 /* Curve */
162165# if defined(WOLFBOOT_SIGN_ECC256 ) || defined(WOLFCRYPT_SECURE_MODE ) || \
163- defined(WOLFBOOT_SIGN_SECONDARY_ECC256 )
166+ defined(WOLFBOOT_SIGN_SECONDARY_ECC256 ) || \
167+ defined(WOLFCRYPT_TEST ) || defined(WOLFCRYPT_BENCHMARK )
164168# define HAVE_ECC256
165169# endif
166170# if defined(WOLFBOOT_SIGN_ECC384 ) || \
167171 defined(WOLFBOOT_SIGN_SECONDARY_ECC384 ) || \
168- defined(WOLFCRYPT_SECURE_MODE )
172+ defined(WOLFCRYPT_SECURE_MODE ) || \
173+ defined(WOLFCRYPT_TEST ) || defined(WOLFCRYPT_BENCHMARK )
169174# define HAVE_ECC384
170175# define WOLFSSL_SP_384
171176# endif
177+ /* ECC521 only enabled if specifically requested (not for tests - too large) */
172178# if defined(WOLFBOOT_SIGN_ECC521 ) || \
173179 defined(WOLFBOOT_SIGN_SECONDARY_ECC521 ) || \
174180 defined(WOLFCRYPT_SECURE_MODE )
@@ -219,6 +225,7 @@ extern int tolower(int c);
219225# define RSA_LOW_MEM
220226# define WC_ASN_HASH_SHA256
221227# if !defined(WOLFBOOT_TPM ) && !defined(WOLFCRYPT_SECURE_MODE ) && \
228+ !defined(WOLFCRYPT_TEST ) && !defined(WOLFCRYPT_BENCHMARK ) && \
222229 !defined(WOLFBOOT_ENABLE_WOLFHSM_CLIENT ) && \
223230 !defined(WOLFBOOT_ENABLE_WOLFHSM_SERVER )
224231# define WOLFSSL_RSA_VERIFY_INLINE
@@ -305,15 +312,17 @@ extern int tolower(int c);
305312#ifdef WOLFBOOT_HASH_SHA3_384
306313# define WOLFSSL_SHA3
307314# if defined(NO_RSA ) && !defined(WOLFBOOT_TPM ) && \
308- !defined(WOLFCRYPT_SECURE_MODE )
315+ !defined(WOLFCRYPT_SECURE_MODE ) && \
316+ !defined(WOLFCRYPT_TEST ) && !defined(WOLFCRYPT_BENCHMARK )
309317# define NO_SHA256
310318# endif
311319#endif
312320
313321#ifdef WOLFBOOT_HASH_SHA384
314322# define WOLFSSL_SHA384
315323# if defined(NO_RSA ) && !defined(WOLFBOOT_TPM ) && \
316- !defined(WOLFCRYPT_SECURE_MODE )
324+ !defined(WOLFCRYPT_SECURE_MODE ) && \
325+ !defined(WOLFCRYPT_TEST ) && !defined(WOLFCRYPT_BENCHMARK )
317326# define NO_SHA256
318327# endif
319328#ifndef WOLFSSL_SHA512
@@ -410,7 +419,8 @@ extern int tolower(int c);
410419
411420#if (defined(WOLFBOOT_TPM_SEAL ) && defined(WOLFBOOT_ATA_DISK_LOCK )) || \
412421 defined(WOLFBOOT_ENABLE_WOLFHSM_CLIENT ) || \
413- defined(WOLFBOOT_ENABLE_WOLFHSM_SERVER )
422+ defined(WOLFBOOT_ENABLE_WOLFHSM_SERVER ) || \
423+ defined(WOLFCRYPT_TEST ) || defined(WOLFCRYPT_BENCHMARK )
414424# define WOLFSSL_BASE64_ENCODE
415425#else
416426# define NO_CODING
@@ -464,7 +474,8 @@ extern int tolower(int c);
464474 #endif
465475#endif
466476
467- #if !defined(WOLFCRYPT_SECURE_MODE ) && !defined(WOLFBOOT_TPM_PARMENC )
477+ #if !defined(WOLFCRYPT_SECURE_MODE ) && !defined(WOLFBOOT_TPM_PARMENC ) && \
478+ !defined(WOLFCRYPT_TEST ) && !defined(WOLFCRYPT_BENCHMARK )
468479#if !(defined(WOLFBOOT_ENABLE_WOLFHSM_CLIENT ) && \
469480 defined(WOLFBOOT_SIGN_ML_DSA )) && \
470481 !defined(WOLFBOOT_ENABLE_WOLFHSM_SERVER )
@@ -473,8 +484,16 @@ extern int tolower(int c);
473484 #define WC_NO_HASHDRBG
474485 #define NO_AES_CBC
475486#else
476- #define HAVE_HASHDRBG
477- #define WOLFSSL_AES_CFB
487+ #if defined(WOLFCRYPT_TEST ) || defined(WOLFCRYPT_BENCHMARK )
488+ /* Use custom RNG for tests (saves ~7KB vs HASHDRBG) */
489+ #define WC_NO_HASHDRBG
490+ #define CUSTOM_RAND_GENERATE_SEED my_rng_seed_gen
491+ #define CUSTOM_RAND_GENERATE_BLOCK my_rng_seed_gen
492+ extern int my_rng_seed_gen (unsigned char * output , unsigned int sz );
493+ #else
494+ #define HAVE_HASHDRBG
495+ #define WOLFSSL_AES_CFB
496+ #endif
478497#endif
479498
480499
@@ -485,11 +504,15 @@ extern int tolower(int c);
485504
486505#if !defined(WOLFBOOT_TPM ) && !defined(WOLFCRYPT_SECURE_MODE )
487506# define NO_HMAC
488- #if !(defined(WOLFBOOT_ENABLE_WOLFHSM_CLIENT ) && \
489- defined(WOLFBOOT_SIGN_ML_DSA )) && \
490- !defined(WOLFBOOT_ENABLE_WOLFHSM_SERVER )
491- #define WC_NO_RNG
492507#endif
508+
509+ #if !defined(WOLFBOOT_TPM ) && !defined(WOLFCRYPT_SECURE_MODE ) && \
510+ !defined(WOLFCRYPT_TEST ) && !defined(WOLFCRYPT_BENCHMARK )
511+ # if !(defined(WOLFBOOT_ENABLE_WOLFHSM_CLIENT ) && \
512+ defined(WOLFBOOT_SIGN_ML_DSA )) && \
513+ !defined(WOLFBOOT_ENABLE_WOLFHSM_SERVER )
514+ # define WC_NO_RNG
515+ # endif
493516# define WC_NO_HASHDRBG
494517# define NO_DEV_RANDOM
495518# if !defined(WOLFBOOT_ENABLE_WOLFHSM_CLIENT ) && \
@@ -534,9 +557,49 @@ extern int tolower(int c);
534557#define NO_CHECK_PRIVATE_KEY
535558#define NO_KDF
536559
537- #define BENCH_EMBEDDED
538- #define NO_CRYPT_TEST
539- #define NO_CRYPT_BENCHMARK
560+ /* wolfCrypt Test/Benchmark Configuration */
561+ #ifdef WOLFCRYPT_TEST
562+ /* Skip extended tests to save memory */
563+ #define NO_CRYPT_TEST_EXTENDED
564+ /* Use smaller certificate buffers */
565+ #define USE_CERT_BUFFERS_256
566+ /* Override default NO_CRYPT_TEST */
567+ #undef NO_CRYPT_TEST
568+ #else
569+ #define NO_CRYPT_TEST
570+ #endif
571+
572+ #ifdef WOLFCRYPT_BENCHMARK
573+ /* Embedded benchmark mode */
574+ #ifndef BENCH_EMBEDDED
575+ #define BENCH_EMBEDDED
576+ #endif
577+ /* Override default NO_CRYPT_BENCHMARK */
578+ #undef NO_CRYPT_BENCHMARK
579+ #else
580+ #define NO_CRYPT_BENCHMARK
581+ #endif
582+
583+ /* Common optimizations when test/benchmark enabled */
584+ #if defined(WOLFCRYPT_TEST ) || defined(WOLFCRYPT_BENCHMARK )
585+ #define NO_WRITE_TEMP_FILES
586+
587+ /* Enable malloc for test/benchmark (they need dynamic allocation) */
588+ #undef NO_WOLFSSL_MEMORY
589+ #undef WOLFSSL_NO_MALLOC
590+
591+ /* Enable SP math digit operations */
592+ #define WOLFSSL_SP_MUL_D
593+
594+ /* User time functions provided */
595+ #define WOLFSSL_USER_CURRTIME
596+ #define XTIME my_time
597+ extern unsigned long my_time (unsigned long * timer );
598+ #endif
599+
600+ #if !defined(WOLFCRYPT_TEST ) && !defined(WOLFCRYPT_BENCHMARK )
601+ #define BENCH_EMBEDDED
602+ #endif
540603
541604#if defined(WOLFCRYPT_TZ_PSA )
542605#undef NO_CMAC
0 commit comments