From: Richard Levitte Date: Tue, 4 Jun 2019 11:58:43 +0000 (+0200) Subject: Move MD5-SHA1 digest completely to the default provider X-Git-Tag: openssl-3.0.0-alpha1~1209 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f50958b8c80ae267c02b2d534da8bde091010707;p=oweals%2Fopenssl.git Move MD5-SHA1 digest completely to the default provider This leaves minimal implementations of EVP_md5_sha1, which is now only there to provide a name for implicit fetches. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/9076) --- diff --git a/crypto/evp/build.info b/crypto/evp/build.info index 365fe9c305..9c71930c05 100644 --- a/crypto/evp/build.info +++ b/crypto/evp/build.info @@ -7,7 +7,7 @@ SOURCE[../../libcrypto]=$COMMON\ e_rc4.c e_aes.c names.c e_seed.c e_aria.c e_sm4.c \ e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c \ m_null.c m_md2.c m_md4.c m_md5.c m_wp.c \ - m_md5_sha1.c m_mdc2.c m_ripemd.c \ + m_mdc2.c m_ripemd.c \ p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c \ bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \ c_allc.c c_alld.c bio_ok.c \ @@ -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_sha.c legacy_md5_sha1.c SOURCE[../../providers/fips]=$COMMON INCLUDE[e_aes.o]=.. ../modes diff --git a/crypto/evp/c_alld.c b/crypto/evp/c_alld.c index f7d62bd2ec..2f68eeb7cf 100644 --- a/crypto/evp/c_alld.c +++ b/crypto/evp/c_alld.c @@ -22,7 +22,6 @@ void openssl_add_all_digests_int(void) #ifndef OPENSSL_NO_MD5 EVP_add_digest(EVP_md5()); EVP_add_digest_alias(SN_md5, "ssl3-md5"); - EVP_add_digest(EVP_md5_sha1()); #endif EVP_add_digest(EVP_sha1()); EVP_add_digest_alias(SN_sha1, "ssl3-sha1"); diff --git a/crypto/evp/legacy_md5_sha1.c b/crypto/evp/legacy_md5_sha1.c new file mode 100644 index 0000000000..cba37bacd8 --- /dev/null +++ b/crypto/evp/legacy_md5_sha1.c @@ -0,0 +1,37 @@ +/* + * Copyright 2015-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 + */ + +#include + +#include "internal/md5_sha1.h" /* diverse MD5_SHA1 macros */ + +#ifndef OPENSSL_NO_MD5 + +# include +# include "crypto/evp.h" + +static const EVP_MD md5_sha1_md = { + NID_md5_sha1, + NID_md5_sha1, + MD5_SHA1_DIGEST_LENGTH, + 0, + NULL, + NULL, + NULL, + NULL, + NULL, + MD5_SHA1_CBLOCK, +}; + +const EVP_MD *EVP_md5_sha1(void) +{ + return &md5_sha1_md; +} + +#endif /* OPENSSL_NO_MD5 */ diff --git a/crypto/evp/m_md5_sha1.c b/crypto/evp/m_md5_sha1.c deleted file mode 100644 index e9ed800145..0000000000 --- a/crypto/evp/m_md5_sha1.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015-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_MD5 - -# include -# include -# include -# include "crypto/evp.h" -# include "internal/md5_sha1.h" - -static int init(EVP_MD_CTX *ctx) -{ - return md5_sha1_init(EVP_MD_CTX_md_data(ctx)); -} - -static int update(EVP_MD_CTX *ctx, const void *data, size_t count) -{ - return md5_sha1_update(EVP_MD_CTX_md_data(ctx), data, count); -} - -static int final(EVP_MD_CTX *ctx, unsigned char *md) -{ - return md5_sha1_final(md, EVP_MD_CTX_md_data(ctx)); -} - -static int ctrl(EVP_MD_CTX *ctx, int cmd, int mslen, void *ms) -{ - return md5_sha1_ctrl(EVP_MD_CTX_md_data(ctx), cmd, mslen, ms); -} - -static const EVP_MD md5_sha1_md = { - NID_md5_sha1, - NID_md5_sha1, - MD5_SHA1_DIGEST_LENGTH, - 0, - init, - update, - final, - NULL, - NULL, - MD5_SHA1_CBLOCK, - sizeof(EVP_MD *) + sizeof(MD5_SHA1_CTX), - ctrl -}; - -const EVP_MD *EVP_md5_sha1(void) -{ - return &md5_sha1_md; -} - -#endif /* OPENSSL_NO_MD5 */ diff --git a/include/internal/md5_sha1.h b/include/internal/md5_sha1.h deleted file mode 100644 index 3e80fdcf97..0000000000 --- a/include/internal/md5_sha1.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 1995-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 - */ - -/* TODO(3.0) Move this header into provider when dependencies are removed */ -#ifndef OSSL_INTERNAL_MD5_SHA1_H -# define OSSL_INTERNAL_MD5_SHA1_H - -# include - -# ifndef OPENSSL_NO_MD5 -# include -# include -# include -# include - -# define MD5_SHA1_DIGEST_LENGTH (MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH) -# define MD5_SHA1_CBLOCK MD5_CBLOCK - -typedef struct md5_sha1_st { - MD5_CTX md5; - SHA_CTX sha1; -} MD5_SHA1_CTX; - -int md5_sha1_init(MD5_SHA1_CTX *mctx); -int md5_sha1_update(MD5_SHA1_CTX *mctx, const void *data, size_t count); -int md5_sha1_final(unsigned char *md, MD5_SHA1_CTX *mctx); -int md5_sha1_ctrl(MD5_SHA1_CTX *mctx, int cmd, int mslen, void *ms); - -# endif /* OPENSSL_NO_MD5 */ - -#endif /* OSSL_INTERNAL_MD5_SHA1_H */ diff --git a/providers/default/include/internal/md5_sha1.h b/providers/default/include/internal/md5_sha1.h new file mode 100644 index 0000000000..3e80fdcf97 --- /dev/null +++ b/providers/default/include/internal/md5_sha1.h @@ -0,0 +1,37 @@ +/* + * Copyright 1995-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 + */ + +/* TODO(3.0) Move this header into provider when dependencies are removed */ +#ifndef OSSL_INTERNAL_MD5_SHA1_H +# define OSSL_INTERNAL_MD5_SHA1_H + +# include + +# ifndef OPENSSL_NO_MD5 +# include +# include +# include +# include + +# define MD5_SHA1_DIGEST_LENGTH (MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH) +# define MD5_SHA1_CBLOCK MD5_CBLOCK + +typedef struct md5_sha1_st { + MD5_CTX md5; + SHA_CTX sha1; +} MD5_SHA1_CTX; + +int md5_sha1_init(MD5_SHA1_CTX *mctx); +int md5_sha1_update(MD5_SHA1_CTX *mctx, const void *data, size_t count); +int md5_sha1_final(unsigned char *md, MD5_SHA1_CTX *mctx); +int md5_sha1_ctrl(MD5_SHA1_CTX *mctx, int cmd, int mslen, void *ms); + +# endif /* OPENSSL_NO_MD5 */ + +#endif /* OSSL_INTERNAL_MD5_SHA1_H */