[openssl] OpenSSL_1_1_1-stable update
Matt Caswell
matt at openssl.org
Wed Mar 27 14:42:05 UTC 2019
The branch OpenSSL_1_1_1-stable has been updated
via 66ed53c848c60cbaf7a11fa56f1959abf5ef09c0 (commit)
from e7a621d57b69014490574ffb3f9ba5bb9b0a61fc (commit)
- Log -----------------------------------------------------------------
commit 66ed53c848c60cbaf7a11fa56f1959abf5ef09c0
Author: Matt Caswell <matt at openssl.org>
Date: Tue Mar 26 13:32:39 2019 +0000
Don't allow SHAKE128/SHAKE256 with HMAC
See discussion in github issue #8563
Fixes #8563
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/8585)
-----------------------------------------------------------------------
Summary of changes:
crypto/hmac/hmac.c | 7 +++++++
doc/man3/HMAC.pod | 4 +++-
test/recipes/30-test_evp_data/evpmac.txt | 8 ++++++++
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/crypto/hmac/hmac.c b/crypto/hmac/hmac.c
index e4031b4..a29f553 100644
--- a/crypto/hmac/hmac.c
+++ b/crypto/hmac/hmac.c
@@ -35,6 +35,13 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
return 0;
}
+ /*
+ * The HMAC construction is not allowed to be used with the
+ * extendable-output functions (XOF) shake128 and shake256.
+ */
+ if ((EVP_MD_meth_get_flags(md) & EVP_MD_FLAG_XOF) != 0)
+ return 0;
+
if (key != NULL) {
reset = 1;
j = EVP_MD_block_size(md);
diff --git a/doc/man3/HMAC.pod b/doc/man3/HMAC.pod
index 65386a7..30c0e6b 100644
--- a/doc/man3/HMAC.pod
+++ b/doc/man3/HMAC.pod
@@ -63,7 +63,9 @@ If B<md> is NULL, the digest is placed in a static array. The size of
the output is placed in B<md_len>, unless it is B<NULL>. Note: passing a NULL
value for B<md> to use the static array is not thread safe.
-B<evp_md> can be EVP_sha1(), EVP_ripemd160() etc.
+B<evp_md> is a message digest such as EVP_sha1(), EVP_ripemd160() etc. HMAC does
+not support variable output length digests such as EVP_shake128() and
+EVP_shake256().
HMAC_CTX_new() creates a new HMAC_CTX in heap memory.
diff --git a/test/recipes/30-test_evp_data/evpmac.txt b/test/recipes/30-test_evp_data/evpmac.txt
index 2bcb3c3..6c55496 100644
--- a/test/recipes/30-test_evp_data/evpmac.txt
+++ b/test/recipes/30-test_evp_data/evpmac.txt
@@ -351,6 +351,14 @@ Input = "Sample message for keylen>blocklen"
Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081828384858687
Output = 5f464f5e5b7848e3885e49b2c385f0694985d0e38966242dc4a5fe3fea4b37d46b65ceced5dcf59438dd840bab22269f0ba7febdb9fcf74602a35666b2a32915
+Title = HMAC self generated tests
+
+MAC = HMAC
+Algorithm = SHAKE128
+Input = "Test that SHAKE128 fails"
+Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+Result = DIGESTSIGNINIT_ERROR
+
Title = CMAC tests (from FIPS module)
More information about the openssl-commits
mailing list