2021-05-05 23:48:04 +00:00
|
|
|
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
|
2021-09-05 20:08:35 +00:00
|
|
|
@@ -10938,21 +10938,21 @@ void wc_ecc_fp_free(void)
|
2021-05-05 23:48:04 +00:00
|
|
|
|
|
|
|
#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
|
2021-09-05 20:08:35 +00:00
|
|
|
@@ -616,10 +616,8 @@ WOLFSSL_API
|
2021-05-05 23:48:04 +00:00
|
|
|
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);
|