NAME
CCHmacInit, CCHmacUpdate, CCHmacFinal, CCHmac – Common HMAC Algorithm Interfaces
LIBRARY
These functions are found in libSystem.
SYNOPSIS
#include <CommonCrypto/CommonHMAC.h>
void
CCHmacInit(CCHmacContext *ctx, CCHmacAlgorithm algorithm, const void *key, size_t keyLength);
void
CCHmacUpdate(CCHmacContext *ctx, const void *data, size_t dataLength);
void
CCHmacFinal(CCHmacContext *ctx, void *macOut);
void
CCHmac(CCHmacAlgorithm algorithm, const void *key, size_t keyLength, const void *data, size_t dataLength, void *macOut);
DESCRIPTION
This interface provides access to a number of HMAC algorithms. The following algorithms are available:
- kCCHmacAlgSHA1
-
- HMAC with SHA1 digest
- kCCHmacAlgMD5
-
- HMAC with MD5 digest
- kCCHmacAlgSHA256
-
- HMAC with SHA256 digest
- kCCHmacAlgSHA384
-
- HMAC with SHA384 digest
- kCCHmacAlgSHA224
-
- HMAC with SHA224 digest
- kCCHmacAlgSHA512
-
- HMAC with SHA512 digest
The MAC must be verified by comparing the computed and expected values using timingsafe_bcmp() Other comparison functions (e.g. memcmp() ) must not be used as they may be vulnerable to practical timing attacks, leading to MAC forgery.
The object declared in this interface, CCHmacContext, provides a handle for use with the CCHmacInit() CCHmacUpdate() and CCHmacFinal() calls to complete the HMAC operation. In addition there is a one shot function, CCHmac() that performs a complete HMAC on a single piece of data.
HISTORY
These functions are available in OS X 10.5 and later.
SEE ALSO
CC_MD5(3cc), CC_SHA(3cc), CC_crypto(3cc), CCCrypto(3cc)