Since commit 6467de5a8840 ("Randomize z ordinates in scalar mult when timing resistant") wolfssl requires a RNG for an EC key when the hardened built option is selected. wc_ecc_set_rng is only available when built hardened, so there is no safe way to install the RNG to the key regardless whether or not wolfssl is compiled hardened. Always export wc_ecc_set_rng so tools such as hostapd can install RNG regardless of the built settings for wolfssl. --- a/wolfcrypt/src/ecc.c +++ b/wolfcrypt/src/ecc.c @@ -10293,21 +10293,21 @@ void wc_ecc_fp_free(void) #endif /* FP_ECC */ -#ifdef ECC_TIMING_RESISTANT int wc_ecc_set_rng(ecc_key* key, WC_RNG* rng) { int err = 0; +#ifdef ECC_TIMING_RESISTANT if (key == NULL) { err = BAD_FUNC_ARG; } else { key->rng = rng; } +#endif return err; } -#endif #ifdef HAVE_ECC_ENCRYPT --- a/wolfssl/wolfcrypt/ecc.h +++ b/wolfssl/wolfcrypt/ecc.h @@ -584,10 +584,8 @@ WOLFSSL_API void wc_ecc_fp_free(void); WOLFSSL_LOCAL void wc_ecc_fp_init(void); -#ifdef ECC_TIMING_RESISTANT WOLFSSL_API int wc_ecc_set_rng(ecc_key* key, WC_RNG* rng); -#endif WOLFSSL_API int wc_ecc_set_curve(ecc_key* key, int keysize, int curve_id);