1*b077aed3SPierre Pronchery=pod 2*b077aed3SPierre Pronchery 3*b077aed3SPierre Pronchery=head1 NAME 4*b077aed3SPierre Pronchery 5*b077aed3SPierre ProncheryEVP_MAC-HMAC - The HMAC EVP_MAC implementation 6*b077aed3SPierre Pronchery 7*b077aed3SPierre Pronchery=head1 DESCRIPTION 8*b077aed3SPierre Pronchery 9*b077aed3SPierre ProncherySupport for computing HMAC MACs through the B<EVP_MAC> API. 10*b077aed3SPierre Pronchery 11*b077aed3SPierre ProncheryThis implementation uses EVP_MD functions to get access to the underlying 12*b077aed3SPierre Proncherydigest. 13*b077aed3SPierre Pronchery 14*b077aed3SPierre Pronchery=head2 Identity 15*b077aed3SPierre Pronchery 16*b077aed3SPierre ProncheryThis implementation is identified with this name and properties, to be 17*b077aed3SPierre Proncheryused with EVP_MAC_fetch(): 18*b077aed3SPierre Pronchery 19*b077aed3SPierre Pronchery=over 4 20*b077aed3SPierre Pronchery 21*b077aed3SPierre Pronchery=item "HMAC", "provider=default" or "provider=fips" 22*b077aed3SPierre Pronchery 23*b077aed3SPierre Pronchery=back 24*b077aed3SPierre Pronchery 25*b077aed3SPierre Pronchery=head2 Supported parameters 26*b077aed3SPierre Pronchery 27*b077aed3SPierre ProncheryThe general description of these parameters can be found in 28*b077aed3SPierre ProncheryL<EVP_MAC(3)/PARAMETERS>. 29*b077aed3SPierre Pronchery 30*b077aed3SPierre ProncheryThe following parameter can be set with EVP_MAC_CTX_set_params(): 31*b077aed3SPierre Pronchery 32*b077aed3SPierre Pronchery=over 4 33*b077aed3SPierre Pronchery 34*b077aed3SPierre Pronchery=item "key" (B<OSSL_MAC_PARAM_KEY>) <octet string> 35*b077aed3SPierre Pronchery 36*b077aed3SPierre ProncherySets the MAC key. 37*b077aed3SPierre ProncherySetting this parameter is identical to passing a I<key> to L<EVP_MAC_init(3)>. 38*b077aed3SPierre Pronchery 39*b077aed3SPierre Pronchery=item "digest" (B<OSSL_MAC_PARAM_DIGEST>) <UTF8 string> 40*b077aed3SPierre Pronchery 41*b077aed3SPierre ProncherySets the name of the underlying digest to be used. 42*b077aed3SPierre Pronchery 43*b077aed3SPierre Pronchery=item "properties" (B<OSSL_MAC_PARAM_PROPERTIES>) <UTF8 string> 44*b077aed3SPierre Pronchery 45*b077aed3SPierre ProncherySets the properties to be queried when trying to fetch the underlying digest. 46*b077aed3SPierre ProncheryThis must be given together with the digest naming parameter ("digest", or 47*b077aed3SPierre ProncheryB<OSSL_MAC_PARAM_DIGEST>) to be considered valid. 48*b077aed3SPierre Pronchery 49*b077aed3SPierre Pronchery=item "digest-noinit" (B<OSSL_MAC_PARAM_DIGEST_NOINIT>) <integer> 50*b077aed3SPierre Pronchery 51*b077aed3SPierre ProncheryA flag to set the MAC digest to not initialise the implementation 52*b077aed3SPierre Proncheryspecific data. 53*b077aed3SPierre ProncheryThe value 0 or 1 is expected. 54*b077aed3SPierre Pronchery 55*b077aed3SPierre Pronchery=item "digest-oneshot" (B<OSSL_MAC_PARAM_DIGEST_ONESHOT>) <integer> 56*b077aed3SPierre Pronchery 57*b077aed3SPierre ProncheryA flag to set the MAC digest to be a one-shot operation. 58*b077aed3SPierre ProncheryThe value 0 or 1 is expected. 59*b077aed3SPierre Pronchery 60*b077aed3SPierre Pronchery=item "tls-data-size" (B<OSSL_MAC_PARAM_TLS_DATA_SIZE>) <unsigned integer> 61*b077aed3SPierre Pronchery 62*b077aed3SPierre Pronchery=back 63*b077aed3SPierre Pronchery 64*b077aed3SPierre Pronchery=for comment The "flags" parameter is passed directly to HMAC_CTX_set_flags(). 65*b077aed3SPierre Pronchery 66*b077aed3SPierre ProncheryThe following parameter can be retrieved with EVP_MAC_CTX_get_params(): 67*b077aed3SPierre Pronchery 68*b077aed3SPierre Pronchery=over 4 69*b077aed3SPierre Pronchery 70*b077aed3SPierre Pronchery=item "size" (B<OSSL_MAC_PARAM_SIZE>) <unsigned integer> 71*b077aed3SPierre Pronchery 72*b077aed3SPierre ProncheryThe "size" parameter can also be retrieved with EVP_MAC_CTX_get_mac_size(). 73*b077aed3SPierre ProncheryThe length of the "size" parameter is equal to that of an B<unsigned int>. 74*b077aed3SPierre Pronchery 75*b077aed3SPierre Pronchery=back 76*b077aed3SPierre Pronchery 77*b077aed3SPierre Pronchery=over 4 78*b077aed3SPierre Pronchery 79*b077aed3SPierre Pronchery=item "block-size" (B<OSSL_MAC_PARAM_SIZE>) <unsigned integer> 80*b077aed3SPierre Pronchery 81*b077aed3SPierre ProncheryGets the MAC block size. The "block-size" parameter can also be retrieved with 82*b077aed3SPierre ProncheryEVP_MAC_CTX_get_block_size(). 83*b077aed3SPierre Pronchery 84*b077aed3SPierre Pronchery=back 85*b077aed3SPierre Pronchery 86*b077aed3SPierre Pronchery=head1 SEE ALSO 87*b077aed3SPierre Pronchery 88*b077aed3SPierre ProncheryL<EVP_MAC_CTX_get_params(3)>, L<EVP_MAC_CTX_set_params(3)>, 89*b077aed3SPierre ProncheryL<EVP_MAC(3)/PARAMETERS>, L<OSSL_PARAM(3)>, L<HMAC(3)> 90*b077aed3SPierre Pronchery 91*b077aed3SPierre Pronchery=head1 COPYRIGHT 92*b077aed3SPierre Pronchery 93*b077aed3SPierre ProncheryCopyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved. 94*b077aed3SPierre Pronchery 95*b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License"). You may not use 96*b077aed3SPierre Proncherythis file except in compliance with the License. You can obtain a copy 97*b077aed3SPierre Proncheryin the file LICENSE in the source distribution or at 98*b077aed3SPierre ProncheryL<https://www.openssl.org/source/license.html>. 99*b077aed3SPierre Pronchery 100*b077aed3SPierre Pronchery=cut 101