CCHmacFinal3cc
Common hmac algorithm interfaces
Part of CCHmac(3cc).
Usage
#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);
Library
These functions are found in libSystem.
Overview
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.
Releases
115 releases since Mac OS X 10.5; the text changed 2 times.