summaryrefslogtreecommitdiff
path: root/crypto/evp/pmeth_fn.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2019-09-23 10:33:26 +0200
committerRichard Levitte <levitte@openssl.org>2019-10-17 09:16:45 +0200
commit251e610ce4479913e593f9f7a9a711115e6cf1a3 (patch)
tree3fe13d296f38dc0cd0db319ba381188649481c89 /crypto/evp/pmeth_fn.c
parentee2161e8a6174a06c9f4efe6bfc0b76b2eda46fa (diff)
downloadopenssl-new-251e610ce4479913e593f9f7a9a711115e6cf1a3.tar.gz
EVP: add missing common functionality
This adds the missing functions that should be common for all fetchable EVP sub-APIs: EVP_KEYMGMT_is_a(), EVP_KEYMGMT_do_all_provided(), EVP_KEYEXCH_is_a(), EVP_KEYEXCH_do_all_provided(), EVP_KDF_is_a(), EVP_MD_is_a(), EVP_SIGNATURE_do_all_provided(), EVP_SIGNATURE_is_a(). This also renames EVP_MD_do_all_ex(), EVP_CIPHER_do_all_ex(), EVP_KDF_do_all_ex(), EVP_MAC_do_all_ex() to change '_ex' to '_provided'. Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/9979)
Diffstat (limited to 'crypto/evp/pmeth_fn.c')
-rw-r--r--crypto/evp/pmeth_fn.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/crypto/evp/pmeth_fn.c b/crypto/evp/pmeth_fn.c
index c7940e8e38..2b4bca5727 100644
--- a/crypto/evp/pmeth_fn.c
+++ b/crypto/evp/pmeth_fn.c
@@ -312,6 +312,26 @@ EVP_SIGNATURE *EVP_SIGNATURE_fetch(OPENSSL_CTX *ctx, const char *algorithm,
(void (*)(void *))EVP_SIGNATURE_free);
}
+int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name)
+{
+ return evp_is_a(signature->prov, signature->name_id, name);
+}
+
+void EVP_SIGNATURE_do_all_provided(OPENSSL_CTX *libctx,
+ void (*fn)(EVP_SIGNATURE *signature,
+ void *arg),
+ void *arg)
+{
+ struct keymgmt_data_st keymgmt_data;
+
+ keymgmt_data.ctx = libctx;
+ keymgmt_data.properties = NULL;
+ evp_generic_do_all(libctx, OSSL_OP_SIGNATURE,
+ (void (*)(void *, void *))fn, arg,
+ evp_signature_from_dispatch, &keymgmt_data,
+ (void (*)(void *))EVP_SIGNATURE_free);
+}
+
static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, EVP_SIGNATURE *signature,
int operation)
{