Update EVP_MAC.pod
[openssl.git] / doc / man3 / EVP_MAC.pod
index 6723c97..afb54e3 100644 (file)
@@ -3,12 +3,12 @@
 =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,
-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
 
@@ -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);
@@ -41,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
@@ -152,6 +157,14 @@ 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<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:
@@ -192,28 +205,24 @@ Some MACs do not support this option.
 
 =item OSSL_MAC_PARAM_ENGINE ("engine") <utf8string>
 
-=item OSSL_MAC_PARAM_MD ("md") <utf8string>
+=item OSSL_MAC_PARAM_PROPERTIES ("properties") <utf8string>
 
 =item OSSL_MAC_PARAM_DIGEST ("digest") <utf8string>
 
 =item OSSL_MAC_PARAM_CIPHER ("cipher") <utf8string>
 
-=item OSSL_MAC_PARAM_ALGORITHM ("algorithm") <utf8string>
+For MAC implementations that use an underlying computation cipher or
+digest, these parameters set what the algorithm should be, and the
+engine that implements the algorithm or the properties to fetch it
+by if needed.
 
-For MAC implementations that use an underlying computation algorithm,
-these parameters set what the algorithm should be, and the engine that
-implements the algorithm if needed.
-
-The value is always the name of the intended engine or algorithm.
+The value is always the name of the intended engine, algorithm,
+or the properties.
 
 Note that not all algorithms may support all digests.
 HMAC does not support variable output length digests such as SHAKE128
 or SHAKE256.
 
-Also note that OSSL_MAC_PARAM_ALGORITHM can be use generically instead
-of OSSL_MAC_PARAM_MD, OSSL_MAC_PARAM_DIGEST or OSSL_MAC_PARAM_CIPHER,
-and that OSSL_MAC_PARAM_MD and OSSL_MAC_PARAM_DIGEST are also interchangable.
-
 =item OSSL_MAC_PARAM_SIZE <unsigned int>
 
 For MAC implementations that support it, set the output size that
@@ -239,6 +248,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.
 
@@ -254,8 +266,9 @@ 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
+=head1 EXAMPLES
 
   #include <stdlib.h>
   #include <stdio.h>