| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | EVP_MAC-HMAC - The HMAC EVP_MAC implementation | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Support for computing HMAC MACs through the B<EVP_MAC> API. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-02 01:46:20 +08:00
										 |  |  | This implementation uses EVP_MD functions to get access to the underlying | 
					
						
							|  |  |  | digest. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | =head2 Identity | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This implementation is identified with this name and properties, to be | 
					
						
							|  |  |  | used with EVP_MAC_fetch(): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-15 06:49:26 +08:00
										 |  |  | =item "HMAC", "provider=default" or "provider=fips" | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Supported parameters | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The general description of these parameters can be found in | 
					
						
							| 
									
										
										
										
											2019-09-17 06:46:49 +08:00
										 |  |  | L<EVP_MAC(3)/PARAMETERS>. | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-18 16:26:22 +08:00
										 |  |  | The following parameter can be set with EVP_MAC_CTX_set_params(): | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-10 16:05:57 +08:00
										 |  |  | =item "key" (B<OSSL_MAC_PARAM_KEY>) <octet string> | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-02 01:46:20 +08:00
										 |  |  | Sets the MAC key. | 
					
						
							|  |  |  | Setting this parameter is identical to passing a I<key> to L<EVP_MAC_init(3)>. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-10 16:05:57 +08:00
										 |  |  | =item "digest" (B<OSSL_MAC_PARAM_DIGEST>) <UTF8 string> | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-02 01:46:20 +08:00
										 |  |  | Sets the name of the underlying digest to be used. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "properties" (B<OSSL_MAC_PARAM_PROPERTIES>) <UTF8 string> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Sets the properties to be queried when trying to fetch the underlying digest. | 
					
						
							|  |  |  | This must be given together with the digest naming parameter ("digest", or | 
					
						
							|  |  |  | B<OSSL_MAC_PARAM_DIGEST>) to be considered valid. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-14 12:36:48 +08:00
										 |  |  | =item "digest-noinit" (B<OSSL_MAC_PARAM_DIGEST_NOINIT>) <integer> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-02 01:46:20 +08:00
										 |  |  | A flag to set the MAC digest to not initialise the implementation | 
					
						
							|  |  |  | specific data. | 
					
						
							|  |  |  | The value 0 or 1 is expected. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-14 12:36:48 +08:00
										 |  |  | =item "digest-oneshot" (B<OSSL_MAC_PARAM_DIGEST_ONESHOT>) <integer> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-02 01:46:20 +08:00
										 |  |  | A flag to set the MAC digest to be a one-shot operation. | 
					
						
							|  |  |  | The value 0 or 1 is expected. | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-27 19:52:17 +08:00
										 |  |  | =item "tls-data-size" (B<OSSL_MAC_PARAM_TLS_DATA_SIZE>) <unsigned integer> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-02 01:46:20 +08:00
										 |  |  | =for comment The "flags" parameter is passed directly to HMAC_CTX_set_flags(). | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-02 01:46:20 +08:00
										 |  |  | The following parameter can be retrieved with EVP_MAC_CTX_get_params(): | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-10 16:05:57 +08:00
										 |  |  | =item "size" (B<OSSL_MAC_PARAM_SIZE>) <unsigned integer> | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-13 12:22:17 +08:00
										 |  |  | The "size" parameter can also be retrieved with EVP_MAC_CTX_get_mac_size(). | 
					
						
							| 
									
										
										
										
											2019-09-25 18:27:36 +08:00
										 |  |  | The length of the "size" parameter is equal to that of an B<unsigned int>. | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-24 12:15:41 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "block-size" (B<OSSL_MAC_PARAM_SIZE>) <unsigned integer> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Gets the MAC block size.  The "block-size" parameter can also be retrieved with | 
					
						
							|  |  |  | EVP_MAC_CTX_get_block_size(). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-18 16:26:22 +08:00
										 |  |  | L<EVP_MAC_CTX_get_params(3)>, L<EVP_MAC_CTX_set_params(3)>, | 
					
						
							| 
									
										
										
										
											2019-09-17 06:46:49 +08:00
										 |  |  | L<EVP_MAC(3)/PARAMETERS>, L<OSSL_PARAM(3)>, L<HMAC(3)> | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-18 22:57:13 +08:00
										 |  |  | Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2019-08-28 15:13:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							|  |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |