add ECC RNG patches
authorDavid Bauer <[email protected]>
Tue, 4 May 2021 22:45:27 +0000 (00:45 +0200)
committerDavid Bauer <[email protected]>
Tue, 4 May 2021 22:45:27 +0000 (00:45 +0200)
package/libs/wolfssl/patches/200-ecc-rng.patch [new file with mode: 0644]
package/network/services/hostapd/patches/0001-wolfssl-init-RNG-with-ECC-key.patch [new file with mode: 0644]

diff --git a/package/libs/wolfssl/patches/200-ecc-rng.patch b/package/libs/wolfssl/patches/200-ecc-rng.patch
new file mode 100644 (file)
index 0000000..b0c01a0
--- /dev/null
@@ -0,0 +1,39 @@
+--- 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);
diff --git a/package/network/services/hostapd/patches/0001-wolfssl-init-RNG-with-ECC-key.patch b/package/network/services/hostapd/patches/0001-wolfssl-init-RNG-with-ECC-key.patch
new file mode 100644 (file)
index 0000000..883e91e
--- /dev/null
@@ -0,0 +1,42 @@
+From 21ce83b4ae2b9563175fdb4fc4312096cc399cf8 Mon Sep 17 00:00:00 2001
+From: David Bauer <[email protected]>
+Date: Wed, 5 May 2021 00:44:34 +0200
+Subject: [PATCH] wolfssl: init RNG with ECC key
+
+Signed-off-by: David Bauer <[email protected]>
+---
+ src/crypto/crypto_wolfssl.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/crypto/crypto_wolfssl.c b/src/crypto/crypto_wolfssl.c
+index 2e4bf8962..ed2528159 100644
+--- a/src/crypto/crypto_wolfssl.c
++++ b/src/crypto/crypto_wolfssl.c
+@@ -1303,6 +1303,7 @@ int ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R,
+ struct crypto_ec {
+       ecc_key key;
++      WC_RNG rng;
+       mp_int a;
+       mp_int prime;
+       mp_int order;
+@@ -1357,6 +1358,8 @@ struct crypto_ec * crypto_ec_init(int group)
+               return NULL;
+       if (wc_ecc_init(&e->key) != 0 ||
++          wc_InitRng(&e->rng) != 0 ||
++          wc_ecc_set_rng(&e->key, ) != 0 ||
+           wc_ecc_set_curve(&e->key, 0, curve_id) != 0 ||
+           mp_init(&e->a) != MP_OKAY ||
+           mp_init(&e->prime) != MP_OKAY ||
+@@ -1388,6 +1391,7 @@ void crypto_ec_deinit(struct crypto_ec* e)
+       mp_clear(&e->order);
+       mp_clear(&e->prime);
+       mp_clear(&e->a);
++      wc_FreeRng(&e->rng);
+       wc_ecc_free(&e->key);
+       os_free(e);
+ }
+-- 
+2.31.1
+