summaryrefslogtreecommitdiff
path: root/crypto/evp/keymgmt_meth.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/evp/keymgmt_meth.c')
-rw-r--r--crypto/evp/keymgmt_meth.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/crypto/evp/keymgmt_meth.c b/crypto/evp/keymgmt_meth.c
index 937faa99d6..94f0133860 100644
--- a/crypto/evp/keymgmt_meth.c
+++ b/crypto/evp/keymgmt_meth.c
@@ -13,6 +13,7 @@
#include <openssl/err.h>
#include "internal/provider.h"
#include "internal/refcount.h"
+#include "internal/core.h"
#include "crypto/evp.h"
#include "evp_local.h"
@@ -42,11 +43,14 @@ static void *keymgmt_from_algorithm(int name_id,
int setgenparamfncnt = 0;
int importfncnt = 0, exportfncnt = 0;
- if ((keymgmt = keymgmt_new()) == NULL) {
+ if ((keymgmt = keymgmt_new()) == NULL)
+ return NULL;
+
+ keymgmt->name_id = name_id;
+ if ((keymgmt->type_name = ossl_algorithm_get1_first_name(algodef)) == NULL) {
EVP_KEYMGMT_free(keymgmt);
return NULL;
}
- keymgmt->name_id = name_id;
keymgmt->description = algodef->algorithm_description;
for (; fns->function_id != 0; fns++) {
@@ -236,6 +240,7 @@ void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt)
CRYPTO_DOWN_REF(&keymgmt->refcnt, &ref, keymgmt->lock);
if (ref > 0)
return;
+ OPENSSL_free(keymgmt->type_name);
ossl_provider_free(keymgmt->prov);
CRYPTO_THREAD_lock_free(keymgmt->lock);
OPENSSL_free(keymgmt);
@@ -256,9 +261,9 @@ const char *EVP_KEYMGMT_description(const EVP_KEYMGMT *keymgmt)
return keymgmt->description;
}
-const char *EVP_KEYMGMT_get0_first_name(const EVP_KEYMGMT *keymgmt)
+const char *EVP_KEYMGMT_name(const EVP_KEYMGMT *keymgmt)
{
- return evp_first_name(keymgmt->prov, keymgmt->name_id);
+ return keymgmt->type_name;
}
int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name)