From cbc4cba2638f4acad300742910c80f936f55eeb3 Mon Sep 17 00:00:00 2001 From: JacobBarthelmeh Date: Wed, 7 May 2025 11:45:55 -0600 Subject: [PATCH] set rng when making a curve25519 key and cast type after shift --- wolfcrypt/src/curve25519.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/wolfcrypt/src/curve25519.c b/wolfcrypt/src/curve25519.c index ae2a6b427..f1fd4e239 100644 --- a/wolfcrypt/src/curve25519.c +++ b/wolfcrypt/src/curve25519.c @@ -212,11 +212,11 @@ static int curve25519_smul_blind(byte* rp, const byte* n, const byte* p, return ret; a[CURVE25519_KEYSIZE-1] &= 0x7f; /* k' = k ^ 2k ^ a */ - n_a[0] = n[0] ^ (n[0] << 1) ^ a[0]; + n_a[0] = n[0] ^ (byte)(n[0] << 1) ^ a[0]; for (i = 1; i < CURVE25519_KEYSIZE; i++) { byte b1, b2, b3; b1 = n[i] ^ a[i]; - b2 = (n[i] << 1) ^ a[i]; + b2 = (byte)(n[i] << 1) ^ a[i]; b3 = (n[i-1] >> 7) ^ a[i]; n_a[i] = b1 ^ b2 ^ b3; } @@ -422,6 +422,9 @@ int wc_curve25519_make_key(WC_RNG* rng, int keysize, curve25519_key* key) ret = wc_curve25519_make_pub_blind((int)sizeof(key->p.point), key->p.point, (int)sizeof(key->k), key->k, rng); + if (ret == 0) { + ret = wc_curve25519_set_rng(key, rng); + } #else ret = wc_curve25519_make_pub((int)sizeof(key->p.point), key->p.point, (int)sizeof(key->k), key->k);