summaryrefslogtreecommitdiffstats
path: root/crypto/evp
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2023-09-12 14:58:03 +0200
committerPauli <pauli@openssl.org>2023-09-14 09:07:29 +1000
commitdf9ecd2ef3907ec0a7bf9c54d9273d5342329bf9 (patch)
tree0df4482e5c855833c958842d958b58277b74398d /crypto/evp
parent70e809b08a3fe70fed7f7ecdad88e5bb9fc3af1c (diff)
Have legacy blake2 EVP structure use base blake2 implementation
For some reason, the code here was made to got through the provider specific init functions. This is very very dangerous if the provider specific functions were to change in any way (such as changes to the implementation context structure). Instead, use the init functions from the base blake2 implementations directly. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22079)
Diffstat (limited to 'crypto/evp')
-rw-r--r--crypto/evp/legacy_blake2.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/crypto/evp/legacy_blake2.c b/crypto/evp/legacy_blake2.c
index 6a18e5fe01..4301ae4857 100644
--- a/crypto/evp/legacy_blake2.c
+++ b/crypto/evp/legacy_blake2.c
@@ -11,11 +11,31 @@
#include "prov/blake2.h" /* diverse BLAKE2 macros */
#include "legacy_meth.h"
-#define ossl_blake2b_init ossl_blake2b512_init
-#define ossl_blake2s_init ossl_blake2s256_init
+/*
+ * Local hack to adapt the BLAKE2 init functions to what the
+ * legacy function signatures demand.
+ */
+static int blake2s_init(BLAKE2S_CTX *C)
+{
+ BLAKE2S_PARAM P;
+
+ ossl_blake2s_param_init(&P);
+ return ossl_blake2s_init(C, &P);
+}
+static int blake2b_init(BLAKE2B_CTX *C)
+{
+ BLAKE2B_PARAM P;
+
+ ossl_blake2b_param_init(&P);
+ return ossl_blake2b_init(C, &P);
+}
+#define blake2s_update ossl_blake2s_update
+#define blake2b_update ossl_blake2b_update
+#define blake2s_final ossl_blake2s_final
+#define blake2b_final ossl_blake2b_final
-IMPLEMENT_LEGACY_EVP_MD_METH_LC(blake2s_int, ossl_blake2s)
-IMPLEMENT_LEGACY_EVP_MD_METH_LC(blake2b_int, ossl_blake2b)
+IMPLEMENT_LEGACY_EVP_MD_METH_LC(blake2s_int, blake2s)
+IMPLEMENT_LEGACY_EVP_MD_METH_LC(blake2b_int, blake2b)
static const EVP_MD blake2b_md = {
NID_blake2b512,