From 8c77d45adab101f10b323de3d59fb47b8f8d3a93 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Tue, 4 Jun 2019 13:43:31 +0200 Subject: [PATCH] Move BLAKE2 digests completely to the default provider This leaves minimal implementations of EVP_blake2b512 and EVP_blake2s256, that are now only there to provide a name for implicit fetches. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/9075) --- crypto/blake2/build.info | 2 - crypto/blake2/m_blake2s.c | 50 ------------------- crypto/build.info | 2 +- crypto/evp/build.info | 2 +- .../m_blake2b.c => evp/legacy_blake2.c} | 46 +++++++++-------- 5 files changed, 27 insertions(+), 75 deletions(-) delete mode 100644 crypto/blake2/build.info delete mode 100644 crypto/blake2/m_blake2s.c rename crypto/{blake2/m_blake2b.c => evp/legacy_blake2.c} (60%) diff --git a/crypto/blake2/build.info b/crypto/blake2/build.info deleted file mode 100644 index 8b5ebcec9c..0000000000 --- a/crypto/blake2/build.info +++ /dev/null @@ -1,2 +0,0 @@ -LIBS=../../libcrypto -SOURCE[../../libcrypto]=m_blake2b.c m_blake2s.c diff --git a/crypto/blake2/m_blake2s.c b/crypto/blake2/m_blake2s.c deleted file mode 100644 index b04d63ec38..0000000000 --- a/crypto/blake2/m_blake2s.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. - * - * Licensed under the Apache License 2.0 (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution or at - * https://www.openssl.org/source/license.html - */ - -#ifndef OPENSSL_NO_BLAKE2 - -# include -# include -# include "crypto/evp.h" -# include "prov/blake2.h" - -static int init(EVP_MD_CTX *ctx) -{ - return blake2s256_init(EVP_MD_CTX_md_data(ctx)); -} - -static int update(EVP_MD_CTX *ctx, const void *data, size_t count) -{ - return blake2s_update(EVP_MD_CTX_md_data(ctx), data, count); -} - -static int final(EVP_MD_CTX *ctx, unsigned char *md) -{ - return blake2s_final(md, EVP_MD_CTX_md_data(ctx)); -} - -static const EVP_MD blake2s_md = { - NID_blake2s256, - 0, - BLAKE2S_DIGEST_LENGTH, - 0, - init, - update, - final, - NULL, - NULL, - BLAKE2S_BLOCKBYTES, - sizeof(BLAKE2S_CTX), -}; - -const EVP_MD *EVP_blake2s256(void) -{ - return &blake2s_md; -} -#endif /* OPENSSL_NO_BLAKE2 */ diff --git a/crypto/build.info b/crypto/build.info index 7d3eb29570..733aba8662 100644 --- a/crypto/build.info +++ b/crypto/build.info @@ -2,7 +2,7 @@ # there for further explanations. SUBDIRS=objects buffer bio stack lhash rand evp asn1 pem x509 conf \ txt_db pkcs7 pkcs12 ui store property \ - md2 md4 md5 sha mdc2 hmac ripemd whrlpool poly1305 blake2 \ + md2 md4 md5 sha mdc2 hmac ripemd whrlpool poly1305 \ siphash sm3 des aes rc2 rc4 rc5 idea aria bf cast camellia \ seed sm4 chacha modes bn ec rsa dsa dh sm2 dso engine \ err comp ocsp cms ts srp cmac ct async ess crmf cmp diff --git a/crypto/evp/build.info b/crypto/evp/build.info index f2c798b703..f16d08e0cb 100644 --- a/crypto/evp/build.info +++ b/crypto/evp/build.info @@ -17,7 +17,7 @@ SOURCE[../../libcrypto]=$COMMON\ e_aes_cbc_hmac_sha1.c e_aes_cbc_hmac_sha256.c e_rc4_hmac_md5.c \ e_chacha20_poly1305.c \ pkey_mac.c exchange.c \ - legacy_sha.c legacy_md5_sha1.c + legacy_sha.c legacy_md5_sha1.c legacy_blake2.c IF[{- !$disabled{md2} -}] SOURCE[../../libcrypto]=legacy_md2.c diff --git a/crypto/blake2/m_blake2b.c b/crypto/evp/legacy_blake2.c similarity index 60% rename from crypto/blake2/m_blake2b.c rename to crypto/evp/legacy_blake2.c index bb3f145abd..04b1e84865 100644 --- a/crypto/blake2/m_blake2b.c +++ b/crypto/evp/legacy_blake2.c @@ -7,44 +7,48 @@ * https://www.openssl.org/source/license.html */ +#include + #ifndef OPENSSL_NO_BLAKE2 -# include # include # include "crypto/evp.h" -# include "prov/blake2.h" - -static int init(EVP_MD_CTX *ctx) -{ - return blake2b512_init(EVP_MD_CTX_md_data(ctx)); -} - -static int update(EVP_MD_CTX *ctx, const void *data, size_t count) -{ - return blake2b_update(EVP_MD_CTX_md_data(ctx), data, count); -} - -static int final(EVP_MD_CTX *ctx, unsigned char *md) -{ - return blake2b_final(md, EVP_MD_CTX_md_data(ctx)); -} +# include "prov/blake2.h" /* diverse BLAKE2 macros */ static const EVP_MD blake2b_md = { NID_blake2b512, 0, BLAKE2B_DIGEST_LENGTH, 0, - init, - update, - final, + NULL, + NULL, + NULL, NULL, NULL, BLAKE2B_BLOCKBYTES, - sizeof(BLAKE2B_CTX), }; const EVP_MD *EVP_blake2b512(void) { return &blake2b_md; } + +static const EVP_MD blake2s_md = { + NID_blake2s256, + 0, + BLAKE2S_DIGEST_LENGTH, + 0, + NULL, + NULL, + NULL, + NULL, + NULL, + BLAKE2S_BLOCKBYTES, +}; + +const EVP_MD *EVP_blake2s256(void) +{ + return &blake2s_md; +} + #endif /* OPENSSL_NO_BLAKE2 */ -- 2.25.1