summaryrefslogtreecommitdiffstats
path: root/crypto/evp
diff options
context:
space:
mode:
authorPaul Yang <yang.yang@baishancloud.com>2017-09-11 23:15:55 +0800
committerPaul Yang <yang.yang@baishancloud.com>2017-09-14 12:41:34 +0800
commit0822e89addcb8c6b8a135a54a503a429efbe0dbe (patch)
treed9bcd486c0ac11e5f265011b7134c1b1ff2aac03 /crypto/evp
parent76b2ae832679d25e6952934481ac38e0e76e2271 (diff)
Support EVP_PKEY_meth_remove and pmeth internal cleanup
1. make app pkey methods cleanup internal 2. add EVP_PKEY_meth_remove Fixes travis-ci failure in #4337 Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Paul Dale <paul.dale@oracle.com> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4356)
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);