OpenSSL hmac(3openssl) NNNNAAAAMMMMEEEE
HMAC, HMAC_CTX_init, HMAC_Init, HMAC_Init_ex, HMAC_Update,
HMAC_Final, HMAC_CTX_cleanup, HMAC_cleanup - HMAC message
authentication code SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS#include
unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
int key_len, const unsigned char *d, int n,
unsigned char *md, unsigned int *md_len);
void HMAC_CTX_init(HMAC_CTX *ctx);
void HMAC_Init(HMAC_CTX *ctx, const void *key, int key_len,
const EVP_MD *md);
void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int key_len,
const EVP_MD *md, ENGINE *impl);
void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len);
void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len);
void HMAC_CTX_cleanup(HMAC_CTX *ctx);
void HMAC_cleanup(HMAC_CTX *ctx);
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN HMAC is a MAC (message authentication code), i.e. a keyed hash function used for message authentication, which is based on a hash function. HMAC() computes the message authentication code of the nnnnbytes at dddd using the hash function eeeevvvvpppp_mmmmdddd and the key kkkkeeeeyyyy
which is kkkkeeeeyyyy_lllleeeennnn bytes long.
It places the result in mmmmdddd (which must have space for the output of the hash function, which is no more thanEEEEVVVVPPPP_MMMMAAAAXXXX_MMMMDDDD_SSSSIIIIZZZZEEEE bytes). If mmmmdddd is NULL, the digest is placed
in a static array. The size of the output is placed inmmmmdddd_lllleeeennnn, unless it is NNNNUUUULLLLLLLL.
eeeevvvvpppp_mmmmdddd can be EVP_sha1(), EVP_ripemd160() etc.
HMAC_CTX_init() initialises a HHHHMMMMAAAACCCC_CCCCTTTTXXXX before first use. It
must be called.HMAC_CTX_cleanup() erases the key and other data from the
HHHHMMMMAAAACCCC_CCCCTTTTXXXX and releases any associated resources. It must be
called when an HHHHMMMMAAAACCCC_CCCCTTTTXXXX is no longer required.
HMAC_cleanup() is an alias for HMAC_CTX_cleanup() included
for back compatibility with 0.9.6b, it is deprecated.12/Oct/2010 Last change: 0.9.8o 1 OpenSSL hmac(3openssl) The following functions may be used if the message is not completely stored in memory:
HMAC_Init() initializes a HHHHMMMMAAAACCCC_CCCCTTTTXXXX structure to use the hash
function eeeevvvvpppp_mmmmdddd and the key kkkkeeeeyyyy which is kkkkeeeeyyyy_lllleeeennnn bytes long.
It is deprecated and only included for backward compatibility with OpenSSL 0.9.6b.HMAC_Init_ex() initializes or reuses a HHHHMMMMAAAACCCC_CCCCTTTTXXXX structure to
use the function eeeevvvvpppp_mmmmdddd and key kkkkeeeeyyyy. Either can be NULL, in
which case the existing one will be reused. HMAC_CTX_init()
must have been called before the first use of an HHHHMMMMAAAACCCC_CCCCTTTTXXXX in
this function. NNNN....BBBB.... HHHHMMMMAAAACCCC_IIIInnnniiiitttt(((()))) hhhhaaaadddd tttthhhhiiiissss uuuunnnnddddooooccccuuuummmmeeeennnntttteeeedddd
bbbbeeeehhhhaaaavvvviiiioooouuuurrrr iiiinnnn pppprrrreeeevvvviiiioooouuuussss vvvveeeerrrrssssiiiioooonnnnssss ooooffff OOOOppppeeeennnnSSSSSSSSLLLL ---- ffffaaaaiiiilllluuuurrrreeee ttttoooo
sssswwwwiiiittttcccchhhh ttttoooo HHHHMMMMAAAACCCC_IIIInnnniiiitttt_eeeexxxx(((()))) iiiinnnn pppprrrrooooggggrrrraaaammmmssss tttthhhhaaaatttt eeeexxxxppppeeeecccctttt iiiitttt wwwwiiiillllllll
ccccaaaauuuusssseeee tttthhhheeeemmmm ttttoooo ssssttttoooopppp wwwwoooorrrrkkkkiiiinnnngggg.HMAC_Update() can be called repeatedly with chunks of the
message to be authenticated (lllleeeennnn bytes at ddddaaaattttaaaa).HMAC_Final() places the message authentication code in mmmmdddd,
which must have space for the hash function output. RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEESSSS HMAC() returns a pointer to the message authentication code.HMAC_CTX_init(), HMAC_Init_ex(), HMAC_Update(), HMAC_Final()
and HMAC_CTX_cleanup() do not return values.
CCCCOOOONNNNFFFFOOOORRRRMMMMIIIINNNNGGGG TTTTOOOO RFC 2104 SSSSEEEEEEEE AAAALLLLSSSSOOOO sha(3), evp(3) HHHHIIIISSSSTTTTOOOORRRRYYYYHMAC(), HMAC_Init(), HMAC_Update(), HMAC_Final() and
HMAC_cleanup() are available since SSLeay 0.9.0.
HMAC_CTX_init(), HMAC_Init_ex() and HMAC_CTX_cleanup() are
available since OpenSSL 0.9.7.12/Oct/2010 Last change: 0.9.8o 2