From 6527c2a7249d20ee72dfd8736c041df15baa859e Mon Sep 17 00:00:00 2001 From: John Safranek Date: Wed, 1 Aug 2018 16:32:22 -0700 Subject: [PATCH] DH SP Fix When doing the sp_2048_mod_exp_*() is processed, one of the index variables is masked with 0x1f when it was updated. Added the masking to the initial set of the index. --- wolfcrypt/src/sp_c32.c | 4 ++-- wolfcrypt/src/sp_c64.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/wolfcrypt/src/sp_c32.c b/wolfcrypt/src/sp_c32.c index f6322d0fe..0052deace 100644 --- a/wolfcrypt/src/sp_c32.c +++ b/wolfcrypt/src/sp_c32.c @@ -2083,7 +2083,7 @@ static int sp_2048_mod_exp_45(sp_digit* r, sp_digit* a, sp_digit* e, int bits, n |= e[i--] << (9 - c); c += 23; } - y = n >> 27; + y = (n >> 27) & 0x1f; n <<= 5; c -= 5; XMEMCPY(rt, t[y], sizeof(rt)); @@ -3016,7 +3016,7 @@ static int sp_2048_mod_exp_90(sp_digit* r, sp_digit* a, sp_digit* e, int bits, n |= e[i--] << (9 - c); c += 23; } - y = n >> 27; + y = (n >> 27) & 0x1f; n <<= 5; c -= 5; XMEMCPY(rt, t[y], sizeof(rt)); diff --git a/wolfcrypt/src/sp_c64.c b/wolfcrypt/src/sp_c64.c index 3f54833d5..5bdeb7f7f 100644 --- a/wolfcrypt/src/sp_c64.c +++ b/wolfcrypt/src/sp_c64.c @@ -1593,7 +1593,7 @@ static int sp_2048_mod_exp_18(sp_digit* r, sp_digit* a, sp_digit* e, int bits, n |= e[i--] << (7 - c); c += 57; } - y = n >> 59; + y = (n >> 59) & 0x1f; n <<= 5; c -= 5; XMEMCPY(rt, t[y], sizeof(rt)); @@ -2442,7 +2442,7 @@ static int sp_2048_mod_exp_36(sp_digit* r, sp_digit* a, sp_digit* e, int bits, n |= e[i--] << (7 - c); c += 57; } - y = n >> 59; + y = (n >> 59) & 0x1f; n <<= 5; c -= 5; XMEMCPY(rt, t[y], sizeof(rt));