diff options
author | Richard Levitte <levitte@openssl.org> | 2019-06-04 18:17:49 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-08-15 22:12:25 +0200 |
commit | d1cafb083d0cb84b2081dd5ca4ba6bed05b8c6ac (patch) | |
tree | 78b5770ff0ce4f56e1b6ac2afc913003748e552c | |
parent | 7dd0f299387bac79c304dc7cb8056cd4684fb91f (diff) |
Implement EVP_MAC_do_all_ex()
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/8877)
-rw-r--r-- | crypto/evp/mac_meth.c | 9 | ||||
-rw-r--r-- | doc/man3/EVP_MAC.pod | 14 | ||||
-rw-r--r-- | include/openssl/evp.h | 4 | ||||
-rw-r--r-- | util/libcrypto.num | 2 |
4 files changed, 27 insertions, 2 deletions
diff --git a/crypto/evp/mac_meth.c b/crypto/evp/mac_meth.c index e2bb016c0f..e5eed33774 100644 --- a/crypto/evp/mac_meth.c +++ b/crypto/evp/mac_meth.c @@ -198,3 +198,12 @@ const OSSL_PARAM *EVP_MAC_CTX_settable_params(const EVP_MAC *mac) return NULL; return mac->settable_ctx_params(); } + +void EVP_MAC_do_all_ex(OPENSSL_CTX *libctx, + void (*fn)(EVP_MAC *mac, void *arg), + void *arg) +{ + evp_generic_do_all(libctx, OSSL_OP_MAC, + (void (*)(void *, void *))fn, arg, + evp_mac_from_dispatch, evp_mac_free); +} diff --git a/doc/man3/EVP_MAC.pod b/doc/man3/EVP_MAC.pod index ed38f912df..6cc28a7355 100644 --- a/doc/man3/EVP_MAC.pod +++ b/doc/man3/EVP_MAC.pod @@ -7,8 +7,8 @@ EVP_MAC_provider, EVP_MAC_get_params, EVP_MAC_gettable_params, EVP_MAC_CTX, EVP_MAC_CTX_new, EVP_MAC_CTX_free, EVP_MAC_CTX_dup, EVP_MAC_CTX_mac, EVP_MAC_CTX_get_params, EVP_MAC_CTX_set_params, EVP_MAC_size, EVP_MAC_init, EVP_MAC_update, EVP_MAC_final, -EVP_MAC_CTX_gettable_params, EVP_MAC_CTX_settable_params -- EVP MAC routines +EVP_MAC_CTX_gettable_params, EVP_MAC_CTX_settable_params, +EVP_MAC_do_all_ex - EVP MAC routines =head1 SYNOPSIS @@ -42,6 +42,10 @@ EVP_MAC_CTX_gettable_params, EVP_MAC_CTX_settable_params const OSSL_PARAM *EVP_MAC_CTX_gettable_params(const EVP_MAC *mac); const OSSL_PARAM *EVP_MAC_CTX_settable_params(const EVP_MAC *mac); + void EVP_MAC_do_all_ex(OPENSSL_CTX *libctx, + void (*fn)(EVP_MAC *mac, void *arg), + void *arg); + =head1 DESCRIPTION These types and functions help the application to calculate MACs of @@ -156,6 +160,11 @@ EVP_MAC_name() returns the name of the given MAC implementation. EVP_MAC_provider() returns the provider that holds the implementation of the given I<mac>. +EVP_MAC_do_all_ex() traverses all MAC implemented by all activated +providers in the given library context I<libctx>, and for each of the +implementations, calls the given function I<fn> with the implementation method +and the given I<arg> as argument. + =head1 PARAMETER NAMES The standard parameter names are: @@ -261,6 +270,7 @@ EVP_MAC_size() returns the expected output size, or 0 if it isn't set. If it isn't set, a call to EVP_MAC_init() should get it set. +EVP_MAC_do_all_ex() returns nothing at all. =head1 EXAMPLE diff --git a/include/openssl/evp.h b/include/openssl/evp.h index 2956b0408c..c778ef43da 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -1050,6 +1050,10 @@ const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac); const OSSL_PARAM *EVP_MAC_CTX_gettable_params(const EVP_MAC *mac); const OSSL_PARAM *EVP_MAC_CTX_settable_params(const EVP_MAC *mac); +void EVP_MAC_do_all_ex(OPENSSL_CTX *libctx, + void (*fn)(EVP_MAC *mac, void *arg), + void *arg); + /* PKEY stuff */ int EVP_PKEY_decrypt_old(unsigned char *dec_key, const unsigned char *enc_key, int enc_key_len, diff --git a/util/libcrypto.num b/util/libcrypto.num index 58ac4fd55f..ac1c110133 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -4730,3 +4730,5 @@ EVP_MAC_up_ref 4839 3_0_0 EXIST::FUNCTION: EVP_MAC_name 4840 3_0_0 EXIST::FUNCTION: EVP_MAC_get_params 4841 3_0_0 EXIST::FUNCTION: EVP_MAC_gettable_params 4842 3_0_0 EXIST::FUNCTION: +EVP_MAC_provider 4843 3_0_0 EXIST::FUNCTION: +EVP_MAC_do_all_ex 4844 3_0_0 EXIST::FUNCTION: |