From 1d9d9e29552d76fe2694854c6da24ca8438d40da Mon Sep 17 00:00:00 2001 From: Hideki Miyazaki Date: Mon, 24 Jun 2019 15:27:29 +0900 Subject: [PATCH 1/2] fix ed25519 sing msg test failure better random number handling --- wolfcrypt/src/random.c | 14 ++++++++++---- wolfcrypt/src/sha512.c | 3 +++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/wolfcrypt/src/random.c b/wolfcrypt/src/random.c index 4903ac9ea..0db43f0ec 100644 --- a/wolfcrypt/src/random.c +++ b/wolfcrypt/src/random.c @@ -2175,10 +2175,16 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) { - int i; - - for (i = 0; i< sz; i++) { - output[i] = esp_random( ); + word32 rand; + while (sz > 0) { + word32 len = sizeof(rand); + if (sz < len) + len = sz; + /* Get one random 32-bit word from hw RNG */ + rand = esp_random( ); + XMEMCPY(output, &rand, sz); + output += len; + sz -= len; } return 0; diff --git a/wolfcrypt/src/sha512.c b/wolfcrypt/src/sha512.c index 8d094eae8..f327df978 100644 --- a/wolfcrypt/src/sha512.c +++ b/wolfcrypt/src/sha512.c @@ -752,6 +752,9 @@ static WC_INLINE int Sha512Final(wc_Sha512* sha512) defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH) ret = Transform_Sha512(sha512); #else + if(sha512->ctx.mode == ESP32_SHA_INIT) { + esp_sha_try_hw_lock(&sha512->ctx); + } ret = esp_sha512_process(sha512); if(ret == 0 && sha512->ctx.mode == ESP32_SHA_SW){ ret = Transform_Sha512(sha512); From da6ed416be5d157c078600fb0407f6080059956b Mon Sep 17 00:00:00 2001 From: Hideki Miyazaki Date: Tue, 25 Jun 2019 08:39:46 +0900 Subject: [PATCH 2/2] use len for copy-length instead of sz --- wolfcrypt/src/random.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wolfcrypt/src/random.c b/wolfcrypt/src/random.c index 0db43f0ec..41b4ef359 100644 --- a/wolfcrypt/src/random.c +++ b/wolfcrypt/src/random.c @@ -2182,7 +2182,7 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) len = sz; /* Get one random 32-bit word from hw RNG */ rand = esp_random( ); - XMEMCPY(output, &rand, sz); + XMEMCPY(output, &rand, len); output += len; sz -= len; } @@ -2228,7 +2228,7 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) if (sz < len) len = sz; rand = sys_rand32_get(); - XMEMCPY(output, &rand, sz); + XMEMCPY(output, &rand, len); output += len; sz -= len; }