Reference

CCHmac(3cc)

Common HMAC Algorithm Interfaces

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)

History