From 0822e89addcb8c6b8a135a54a503a429efbe0dbe Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Mon, 11 Sep 2017 23:15:55 +0800 Subject: 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 Reviewed-by: Paul Dale Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/4356) --- crypto/evp/names.c | 2 ++ crypto/evp/pmeth_lib.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+) (limited to 'crypto/evp') 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); -- cgit v1.2.3