summaryrefslogtreecommitdiffstats
path: root/crypto/ec/curve448/eddsa.c
diff options
context:
space:
mode:
authorDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>2018-08-01 21:50:41 +0200
committerDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>2018-08-03 12:02:14 +0200
commit28c5b7d482dda8597bbf93890463d7eb0f9f2355 (patch)
tree5beea77ec0d3511754413fcf41ce55248d170d73 /crypto/ec/curve448/eddsa.c
parentd8a4f8ffd04e157d3591044cde8d7a56f605742c (diff)
Fix some undefined behaviour in the Curve448 code (2nd attempt)
Fixes #6800 Replaces #5418 This commit reverts commit 7876dbffcee9 and moves the check for a zero-length input down the callstack into sha3_update(). Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Andy Polyakov <appro@openssl.org> Reviewed-by: Paul Dale <paul.dale@oracle.com> (Merged from https://github.com/openssl/openssl/pull/6838)
Diffstat (limited to 'crypto/ec/curve448/eddsa.c')
-rw-r--r--crypto/ec/curve448/eddsa.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/crypto/ec/curve448/eddsa.c b/crypto/ec/curve448/eddsa.c
index 85565a8dfb..909413a535 100644
--- a/crypto/ec/curve448/eddsa.c
+++ b/crypto/ec/curve448/eddsa.c
@@ -63,8 +63,7 @@ static c448_error_t hash_init_with_dom(EVP_MD_CTX *hashctx, uint8_t prehashed,
if (!EVP_DigestInit_ex(hashctx, EVP_shake256(), NULL)
|| !EVP_DigestUpdate(hashctx, dom_s, strlen(dom_s))
|| !EVP_DigestUpdate(hashctx, dom, sizeof(dom))
- || (context_len > 0
- && !EVP_DigestUpdate(hashctx, context, context_len)))
+ || !EVP_DigestUpdate(hashctx, context, context_len))
return C448_FAILURE;
return C448_SUCCESS;
@@ -161,8 +160,7 @@ c448_error_t c448_ed448_sign(
|| !EVP_DigestUpdate(hashctx,
expanded + EDDSA_448_PRIVATE_BYTES,
EDDSA_448_PRIVATE_BYTES)
- || (message_len > 0
- && !EVP_DigestUpdate(hashctx, message, message_len))) {
+ || !EVP_DigestUpdate(hashctx, message, message_len)) {
OPENSSL_cleanse(expanded, sizeof(expanded));
goto err;
}
@@ -202,8 +200,7 @@ c448_error_t c448_ed448_sign(
if (!hash_init_with_dom(hashctx, prehashed, 0, context, context_len)
|| !EVP_DigestUpdate(hashctx, nonce_point, sizeof(nonce_point))
|| !EVP_DigestUpdate(hashctx, pubkey, EDDSA_448_PUBLIC_BYTES)
- || (message_len > 0
- && !EVP_DigestUpdate(hashctx, message, message_len))
+ || !EVP_DigestUpdate(hashctx, message, message_len)
|| !EVP_DigestFinalXOF(hashctx, challenge, sizeof(challenge)))
goto err;