EVP_MAC-HMAC(7SSL)
β¨ EVP_MAC-HMAC β¨
okay bestie, welcome to the EVP_MAC-HMAC glow-up π
β that's the manual page, and we're hanging out in section 7SSL (the SSL-flavoured part of the man pages, iykyk). no cap, this one's short and sweet.
πΈ NAME πΈ
EVP_MAC-HMAC β the whole entire HMAC implementation for EVP_MAC π«Ά
π DESCRIPTION π
so basically, this is the thing that lets you compute HMAC MACs through the EVP_MAC API. that's it, that's the vibe.
and the way it works under the hood? this implementation uses EVP_MD functions to get at the underlying digest. cute, right? π
π¦ Identity π¦
when you're fetching this implementation with EVP_MAC_fetch(), this is the name and properties combo that identifies it:
"HMAC", "provider=default" or "provider=fips"
no notes. slay. β¨
π Supported parameters π
the general rundown of how these parameters work lives in "PARAMETERS" in EVP_MAC(3) β go peek at that if you want the big picture, bestie.
here's what you can set with EVP_MAC_CTX_set_params():
"key"(OSSL_MAC_PARAM_KEY) <octet string> β sets the MAC key. setting this parameter is literally identical to passing a key toEVP_MAC_init(3). same thing, no difference, periodt. π"digest"(OSSL_MAC_PARAM_DIGEST) <UTF8 string> β sets the name of the underlying digest you wanna use. β"properties"(OSSL_MAC_PARAM_PROPERTIES) <UTF8 string> β sets the properties that get queried when it tries to fetch the underlying digest. β οΈ important: this one must be given together with the digest naming parameter ("digest", orOSSL_MAC_PARAM_DIGEST) for it to even be considered valid. no digest param, no deal."digest-noinit"(OSSL_MAC_PARAM_DIGEST_NOINIT) <integer> β a flag to set the MAC digest to not initialise the implementation specific data. it expects the value0or1. π¨ this option is deprecated and will be removed in a future release. you may set it, but rn it's currently ignored. π"digest-oneshot"(OSSL_MAC_PARAM_DIGEST_ONESHOT) <integer> β a flag to set the MAC digest to be a one-shot operation. agai, it expects0or1. π¨ this option is deprecated and will be removed in a future release. it may be set but is currently ignored.
bestie pls note: that last bit about0or1is on the digest-noinit flag, and yes β "agai" above was a typo of "again", but the "may be set but is currently ignored" energy applies to both of these deprecated flags. π«Ά
"tls-data-size"(OSSL_MAC_PARAM_TLS_DATA_SIZE) <unsigned integer>"key-check"(OSSL_MAC_PARAM_FIPS_KEY_CHECK) <integer>
for those last two β"tls-data-size"and"key-check"β see "Mac Parameters" inprovider-mac(7). that's where the tea is. π
and here's what you can retrieve with EVP_MAC_CTX_get_params():
"size"(OSSL_MAC_PARAM_SIZE) <unsigned integer> β fyi you can also grab this"size"parameter withEVP_MAC_CTX_get_mac_size(). and the length of the"size"parameter is equal to that of anunsigned int. π₯"block-size"(OSSL_MAC_PARAM_BLOCK_SIZE) <unsigned integer> β gets the MAC block size. and yes, the"block-size"parameter can also be retrieved withEVP_MAC_CTX_get_block_size(). double the access, double the fun. π"fips-indicator"(OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR) <integer> β see "Mac Parameters" inprovider-mac(7). π
π SEE ALSO π
go read these too, bestie, they're all linked up:
EVP_MAC_CTX_get_params(3)EVP_MAC_CTX_set_params(3)- "PARAMETERS" in
EVP_MAC(3) OSSL_PARAM(3)HMAC(3)
π COPYRIGHT π
Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved.
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 <https://www.openssl.org/source/license.html>.
and that's the whole page, bestie!! π«Ά this was version 4.0.3, dated 2026-09-29, filed under EVP_MAC-HMAC(7SSL) β iconic behavior, honestly. go forth and HMAC responsibly β¨ππ
π¦ where this page comes from
- ubuntu stonking: openssl 4.0.3-1ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms