Move MD5-SHA1 digest completely to the default provider
authorRichard Levitte <levitte@openssl.org>
Tue, 4 Jun 2019 11:58:43 +0000 (13:58 +0200)
committerRichard Levitte <levitte@openssl.org>
Fri, 4 Oct 2019 08:35:40 +0000 (10:35 +0200)
This leaves minimal implementations of EVP_md5_sha1, which is now only
there to provide a name for implicit fetches.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9076)

crypto/evp/build.info
crypto/evp/c_alld.c
crypto/evp/legacy_md5_sha1.c [new file with mode: 0644]
crypto/evp/m_md5_sha1.c [deleted file]
include/internal/md5_sha1.h [deleted file]
providers/default/include/internal/md5_sha1.h [new file with mode: 0644]

index 365fe9c305d2eb0dd0e9efb791f7431738f01b3f..9c71930c05acc379f200902363ed14157f7b87ab 100644 (file)
@@ -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
index f7d62bd2ecff8bd5538292ddadcf0ecafcc86e48..2f68eeb7cf76e52536266d79a88393a75725ae9c 100644 (file)
@@ -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 (file)
index 0000000..cba37ba
--- /dev/null
@@ -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 <openssl/opensslconf.h>
+
+#include "internal/md5_sha1.h"   /* diverse MD5_SHA1 macros */
+
+#ifndef OPENSSL_NO_MD5
+
+# include <openssl/obj_mac.h>
+# 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 (file)
index e9ed800..0000000
+++ /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 <string.h>
-# include <openssl/evp.h>
-# include <openssl/obj_mac.h>
-# 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 (file)
index 3e80fdc..0000000
+++ /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 <openssl/opensslconf.h>
-
-# ifndef OPENSSL_NO_MD5
-#  include <openssl/e_os2.h>
-#  include <stddef.h>
-#  include <openssl/md5.h>
-#  include <openssl/sha.h>
-
-#  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 (file)
index 0000000..3e80fdc
--- /dev/null
@@ -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 <openssl/opensslconf.h>
+
+# ifndef OPENSSL_NO_MD5
+#  include <openssl/e_os2.h>
+#  include <stddef.h>
+#  include <openssl/md5.h>
+#  include <openssl/sha.h>
+
+#  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 */