From 7dd0f299387bac79c304dc7cb8056cd4684fb91f Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Tue, 4 Jun 2019 18:14:38 +0200 Subject: [PATCH] Add EVP_MAC_provider() For information processing. Reviewed-by: Matt Caswell Reviewed-by: Shane Lontis (Merged from https://github.com/openssl/openssl/pull/8877) --- crypto/evp/mac_meth.c | 5 +++++ doc/man3/EVP_MAC.pod | 9 ++++++++- include/openssl/evp.h | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/crypto/evp/mac_meth.c b/crypto/evp/mac_meth.c index 983b2dbd2e..e2bb016c0f 100644 --- a/crypto/evp/mac_meth.c +++ b/crypto/evp/mac_meth.c @@ -173,6 +173,11 @@ const char *EVP_MAC_name(const EVP_MAC *mac) return mac->name; } +const OSSL_PROVIDER *EVP_MAC_provider(const EVP_MAC *mac) +{ + return mac->prov; +} + const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac) { if (mac->gettable_params == NULL) diff --git a/doc/man3/EVP_MAC.pod b/doc/man3/EVP_MAC.pod index 6723c9707b..ed38f912df 100644 --- a/doc/man3/EVP_MAC.pod +++ b/doc/man3/EVP_MAC.pod @@ -3,7 +3,7 @@ =head1 NAME EVP_MAC, EVP_MAC_fetch, EVP_MAC_up_ref, EVP_MAC_free, EVP_MAC_name, -EVP_MAC_get_params, EVP_MAC_gettable_params, +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, @@ -22,6 +22,7 @@ EVP_MAC_CTX_gettable_params, EVP_MAC_CTX_settable_params int EVP_MAC_up_ref(EVP_MAC *mac); void EVP_MAC_free(EVP_MAC *mac); const char *EVP_MAC_name(const EVP_MAC *mac); + const OSSL_PROVIDER *EVP_MAC_provider(const EVP_MAC *mac); int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); @@ -152,6 +153,9 @@ EVP_MAC_size() returns the MAC output size for the given context. 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. + =head1 PARAMETER NAMES The standard parameter names are: @@ -239,6 +243,9 @@ EVP_MAC_free() returns nothing at all. EVP_MAC_name() returns the name of the MAC, or NULL if NULL was passed. +EVP_MAC_provider() returns a pointer to the provider for the MAC, or +NULL on error. + EVP_MAC_CTX_new() and EVP_MAC_CTX_dup() return a pointer to a newly created EVP_MAC_CTX, or NULL if allocation failed. diff --git a/include/openssl/evp.h b/include/openssl/evp.h index c9b665dbbc..2956b0408c 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -1031,6 +1031,7 @@ EVP_MAC *EVP_MAC_fetch(OPENSSL_CTX *libctx, const char *algorithm, int EVP_MAC_up_ref(EVP_MAC *mac); void EVP_MAC_free(EVP_MAC *mac); const char *EVP_MAC_name(const EVP_MAC *mac); +const OSSL_PROVIDER *EVP_MAC_provider(const EVP_MAC *mac); int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); -- 2.39.2