summaryrefslogtreecommitdiffstats
path: root/crypto/evp
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/evp')
-rw-r--r--crypto/evp/names.c2
-rw-r--r--crypto/evp/pmeth_lib.c15
2 files changed, 17 insertions, 0 deletions
diff --git a/crypto/evp/names.c b/crypto/evp/names.c
index 41c3ceee3a..11905690b8 100644
--- a/crypto/evp/names.c
+++ b/crypto/evp/names.c
@@ -90,6 +90,8 @@ void evp_cleanup_int(void)
EVP_PBE_cleanup();
OBJ_sigid_free();
+
+ evp_app_cleanup_int();
}
struct doall_cipher {
diff --git a/crypto/evp/pmeth_lib.c b/crypto/evp/pmeth_lib.c
index c62bd81da4..2b9b8a92f8 100644
--- a/crypto/evp/pmeth_lib.c
+++ b/crypto/evp/pmeth_lib.c
@@ -296,6 +296,21 @@ int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth)
return 1;
}
+void evp_app_cleanup_int(void)
+{
+ if (app_pkey_methods != NULL)
+ sk_EVP_PKEY_METHOD_pop_free(app_pkey_methods, EVP_PKEY_meth_free);
+}
+
+int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth)
+{
+ const EVP_PKEY_METHOD *ret;
+
+ ret = sk_EVP_PKEY_METHOD_delete_ptr(app_pkey_methods, pmeth);
+
+ return ret == NULL ? 0 : 1;
+}
+
size_t EVP_PKEY_meth_get_count(void)
{
size_t rv = OSSL_NELEM(standard_methods);