summaryrefslogtreecommitdiff
path: root/providers/implementations/include/prov
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2020-08-07 16:40:25 +0100
committerPauli <paul.dale@oracle.com>2020-08-29 17:39:37 +1000
commite538294f8f9b522279e523ebf6804ed4cb721b80 (patch)
tree4338aa6523f15f187c33d6ce994f7ae6cb08e1e5 /providers/implementations/include/prov
parentbddfea0271d0596961a43283b36ff49923329a92 (diff)
downloadopenssl-new-e538294f8f9b522279e523ebf6804ed4cb721b80.tar.gz
Implement key management for the EVP_PKEY MAC to EVP_MAC provider bridge
Some MAC implementations were available before the current EVP_MAC API. They were used via EVP_DigestSign*. There exists a bridge between the old API and the EVP_MAC API however this bridge itself uses a legacy EVP_PKEY_METHOD. This commit implements the key management for provider side bridge without having to useany legacy code. Reviewed-by: Paul Dale <paul.dale@oracle.com> (Merged from https://github.com/openssl/openssl/pull/12637)
Diffstat (limited to 'providers/implementations/include/prov')
-rw-r--r--providers/implementations/include/prov/implementations.h1
-rw-r--r--providers/implementations/include/prov/macsignature.h26
2 files changed, 27 insertions, 0 deletions
diff --git a/providers/implementations/include/prov/implementations.h b/providers/implementations/include/prov/implementations.h
index f07a7b00f0..035196b317 100644
--- a/providers/implementations/include/prov/implementations.h
+++ b/providers/implementations/include/prov/implementations.h
@@ -278,6 +278,7 @@ extern const OSSL_DISPATCH ed25519_keymgmt_functions[];
extern const OSSL_DISPATCH ed448_keymgmt_functions[];
extern const OSSL_DISPATCH ec_keymgmt_functions[];
extern const OSSL_DISPATCH kdf_keymgmt_functions[];
+extern const OSSL_DISPATCH mac_keymgmt_functions[];
/* Key Exchange */
extern const OSSL_DISPATCH dh_keyexch_functions[];
diff --git a/providers/implementations/include/prov/macsignature.h b/providers/implementations/include/prov/macsignature.h
new file mode 100644
index 0000000000..39a57416c8
--- /dev/null
+++ b/providers/implementations/include/prov/macsignature.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2020 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 <stdlib.h>
+#include <openssl/crypto.h>
+#include "internal/refcount.h"
+
+struct mac_key_st {
+ CRYPTO_RWLOCK *lock;
+ OPENSSL_CTX *libctx;
+ CRYPTO_REF_COUNT refcnt;
+ unsigned char *priv_key;
+ size_t priv_key_len;
+};
+
+typedef struct mac_key_st MAC_KEY;
+
+MAC_KEY *mac_key_new(OPENSSL_CTX *libctx);
+void mac_key_free(MAC_KEY *mackey);
+int mac_key_up_ref(MAC_KEY *mackey);