From 7ba8196a3d22065aa35581fd8a82fc86c6779c0e Mon Sep 17 00:00:00 2001 From: John Safranek Date: Tue, 20 Apr 2021 14:00:47 -0700 Subject: [PATCH] Add missed step in DH key pair generation. --- wolfcrypt/src/dh.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wolfcrypt/src/dh.c b/wolfcrypt/src/dh.c index ca53e949d..c2fc9e3be 100644 --- a/wolfcrypt/src/dh.c +++ b/wolfcrypt/src/dh.c @@ -1144,10 +1144,16 @@ static int GeneratePrivateDh186(DhKey* key, WC_RNG* rng, byte* priv, ForceZero(cBuf, cSz); XFREE(cBuf, key->heap, DYNAMIC_TYPE_TMP_BUFFER); - /* tmpQ: M = 2^N - 1 */ + /* tmpQ: M = min(2^N,q) - 1 */ if (err == MP_OKAY) err = mp_2expt(tmpQ, *privSz * 8); + if (err == MP_OKAY) { + if (mp_cmp(tmpQ, &key->q) == MP_GT) { + err = mp_copy(&key->q, tmpQ); + } + } + if (err == MP_OKAY) err = mp_sub_d(tmpQ, 1, tmpQ);