Move EVP_Digest() next to the functions it wraps
authortb <tb@openbsd.org>
Sun, 24 Dec 2023 22:17:05 +0000 (22:17 +0000)
committertb <tb@openbsd.org>
Sun, 24 Dec 2023 22:17:05 +0000 (22:17 +0000)
It really makes no sense to have the mess that is EVP_MD_CTX_copy{,_ex}()
live between EVP_Digest{Init{,_ex},Update,Final{,_ex}}() and EVP_Digest(),
the latter being a relatively simple wrapper of Init_ex/Update/Final_ex.

lib/libcrypto/evp/digest.c

index ee0c68e..56decc2 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: digest.c,v 1.40 2023/11/29 21:35:57 tb Exp $ */
+/* $OpenBSD: digest.c,v 1.41 2023/12/24 22:17:05 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -200,6 +200,23 @@ EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
        return ret;
 }
 
+int
+EVP_Digest(const void *data, size_t count,
+    unsigned char *md, unsigned int *size, const EVP_MD *type, ENGINE *impl)
+{
+       EVP_MD_CTX ctx;
+       int ret;
+
+       EVP_MD_CTX_init(&ctx);
+       EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_ONESHOT);
+       ret = EVP_DigestInit_ex(&ctx, type, NULL) &&
+           EVP_DigestUpdate(&ctx, data, count) &&
+           EVP_DigestFinal_ex(&ctx, md, size);
+       EVP_MD_CTX_cleanup(&ctx);
+
+       return ret;
+}
+
 int
 EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in)
 {
@@ -262,23 +279,6 @@ EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in)
        return 1;
 }
 
-int
-EVP_Digest(const void *data, size_t count,
-    unsigned char *md, unsigned int *size, const EVP_MD *type, ENGINE *impl)
-{
-       EVP_MD_CTX ctx;
-       int ret;
-
-       EVP_MD_CTX_init(&ctx);
-       EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_ONESHOT);
-       ret = EVP_DigestInit_ex(&ctx, type, NULL) &&
-           EVP_DigestUpdate(&ctx, data, count) &&
-           EVP_DigestFinal_ex(&ctx, md, size);
-       EVP_MD_CTX_cleanup(&ctx);
-
-       return ret;
-}
-
 EVP_MD_CTX *
 EVP_MD_CTX_new(void)
 {