From f56588e70f6aabf609f0682a999d63a71fa7dae0 Mon Sep 17 00:00:00 2001 From: "J. Ayo Akinyele" Date: Thu, 9 Aug 2018 01:35:27 -0400 Subject: [PATCH 1/4] remove unnecessary check on bcrypto_blake2b_init_param --- src/blake2b/blake2b.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/blake2b/blake2b.c b/src/blake2b/blake2b.c index 8128afce6..f5dd35e8d 100644 --- a/src/blake2b/blake2b.c +++ b/src/blake2b/blake2b.c @@ -201,8 +201,7 @@ bcrypto_blake2b_init_key( memset(P->salt, 0, sizeof(P->salt)); memset(P->personal, 0, sizeof(P->personal)); - if (bcrypto_blake2b_init_param(ctx, P) < 0) - return -1; + bcrypto_blake2b_init_param(ctx, P); { uint8_t block[BCRYPTO_BLAKE2B_BLOCKBYTES]; From ef27af4637898768f71abd19795c79be65458bee Mon Sep 17 00:00:00 2001 From: "J. Ayo Akinyele" Date: Thu, 9 Aug 2018 01:37:36 -0400 Subject: [PATCH 2/4] fix checks to RAND_status() and RAND_poll() to actually break loop when CSPRNG ready --- src/random/random.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/random/random.c b/src/random/random.c index e97fc7903..fcf24bea2 100644 --- a/src/random/random.c +++ b/src/random/random.c @@ -10,12 +10,10 @@ bcrypto_random(uint8_t *dst, size_t len) { for (;;) { int status = RAND_status(); - assert(status >= 0); - - if (status != 0) + if (status == 1) break; - if (RAND_poll() == 0) + if (RAND_poll() == 1) break; } From dc381e66866c90e215fd7fc6c7e52d1e1664f3ae Mon Sep 17 00:00:00 2001 From: "J. Ayo Akinyele" Date: Thu, 9 Aug 2018 01:39:23 -0400 Subject: [PATCH 3/4] rsa: RSA_check_key() return value not checked correctly in error case --- src/rsa/rsa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rsa/rsa.c b/src/rsa/rsa.c index 26656a6a1..6afbf7ae6 100644 --- a/src/rsa/rsa.c +++ b/src/rsa/rsa.c @@ -539,7 +539,7 @@ bcrypto_rsa_verify_priv(const bcrypto_rsa_key_t *priv) { if (!priv_r) goto fail; - if (!RSA_check_key(priv_r)) + if (RSA_check_key(priv_r) <= 0) goto fail; RSA_free(priv_r); From 6577dcba70c71172e89427f6d00f8d216bbff001 Mon Sep 17 00:00:00 2001 From: "J. Ayo Akinyele" Date: Thu, 9 Aug 2018 01:39:52 -0400 Subject: [PATCH 4/4] ecdsa: ECDSA_do_verify() return value not checked correctly in error case --- src/ecdsa/ecdsa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ecdsa/ecdsa.c b/src/ecdsa/ecdsa.c index 7726bb33f..e1e736162 100644 --- a/src/ecdsa/ecdsa.c +++ b/src/ecdsa/ecdsa.c @@ -554,7 +554,7 @@ bcrypto_ecdsa_verify( if (!sig_ec) goto fail; - if (!ECDSA_do_verify(msg, msg_len, sig_ec, pub_ec)) + if (ECDSA_do_verify(msg, msg_len, sig_ec, pub_ec) <= 0) goto fail; EC_KEY_free(pub_ec);