Reference

CC_SHA(3cc)

Secure Hash Algorithms

NAME

CC_SHA1_Init CC_SHA1_Update CC_SHA1_Final CC_SHA1

CC_SHA224_Init CC_SHA224_Update CC_SHA224_Final CC_SHA224

CC_SHA256_Init CC_SHA256_Update CC_SHA256_Final CC_SHA256

CC_SHA384_Init CC_SHA384_Update CC_SHA384_Final CC_SHA384

CC_SHA512_Init CC_SHA512_Update CC_SHA512_Final CC_SHA512

– Secure Hash Algorithms

SYNOPSIS

#include <CommonCrypto/CommonDigest.h>

extern int

CC_SHA1_Init(CC_SHA1_CTX *c);

extern int

CC_SHA1_Update(CC_SHA1_CTX *c, const void *data, CC_LONG len);

extern int

CC_SHA1_Final(unsigned char *md, CC_SHA1_CTX *c);

extern unsigned char *

CC_SHA1(const void *data, CC_LONG len, unsigned char *md);

extern int

CC_SHA224_Init(CC_SHA256_CTX *c);

extern int

CC_SHA224_Update(CC_SHA256_CTX *c, const void *data, CC_LONG len);

extern int

CC_SHA224_Final(unsigned char *md, CC_SHA256_CTX *c);

extern unsigned char *

CC_SHA224(const void *data, CC_LONG len, unsigned char *md);

extern int

CC_SHA256_Init(CC_SHA256_CTX *c);

extern int

CC_SHA256_Update(CC_SHA256_CTX *c, const void *data, CC_LONG len);

extern int

CC_SHA256_Final(unsigned char *md, CC_SHA256_CTX *c);

extern unsigned char *

CC_SHA256(const void *data, CC_LONG len, unsigned char *md);

extern int

CC_SHA384_Init(CC_SHA512_CTX *c);

extern int

CC_SHA384_Update(CC_SHA512_CTX *c, const void *data, CC_LONG len);

extern int

CC_SHA384_Final(unsigned char *md, CC_SHA512_CTX *c);

extern unsigned char *

CC_SHA384(const void *data, CC_LONG len, unsigned char *md);

extern int

CC_SHA512_Init(CC_SHA512_CTX *c);

extern int

CC_SHA512_Update(CC_SHA512_CTX *c, const void *data, CC_LONG len);

extern int

CC_SHA512_Final(unsigned char *md, CC_SHA512_CTX *c);

extern unsigned char *

CC_SHA512(const void *data, CC_LONG len, unsigned char *md);

DESCRIPTION

SHA-1 (Secure Hash Algorithm) is a cryptographic hash function with a 160 bit output.

CC_SHA1() computes the SHA-1 message digest of the len bytes at data and places it in md (which must have space for CC_SHA1_DIGEST_LENGTH == 20 bytes of output). It returns the md pointer.

CC_SHA1_Init() initializes a CC_SHA1_CTX structure.

CC_SHA1_Update() can be called repeatedly with chunks of the message to be hashed (len bytes at data).

CC_SHA1_Final() places the message digest in md, which must have space for CC_SHA1_DIGEST_LENGTH == 20 bytes of output, and erases the CC_SHA1_CTX.

The successor versions of SHA-1, SHA-2, are also implemented for hash bit lengths of 224, 256, 384, and 512. The functions to call to invoke the larger hash-size versions of the algorithms include the hash size as part of the function names:

CC_SHA224_Init(), CC_SHA224_Update(), CC_SHA224_Final(), CC_SHA224()

CC_SHA256_Init(), CC_SHA256_Update(), CC_SHA256_Final(), CC_SHA256()

CC_SHA384_Init(), CC_SHA384_Update(), CC_SHA384_Final(), CC_SHA384()

CC_SHA512_Init(), CC_SHA512_Update(), CC_SHA512_Final(), CC_SHA512()

RETURN VALUES

All routines return 1 upon success and NULL upon failure, except for the one-shot routines ( CC_SHA1(), etc.), which return the pointer passed in via the md parameter.

CONFORMING TO

SHA-1: US Federal Information Processing Standard FIPS PUB 180-1 (Secure Hash Standard), ANSI X9.30

SHA-2: US Federal Information Processing Standard FIPS PUB 180-2 (Secure Hash Standard)

HISTORY

These functions are available in OS X 10.4 and later.

These functions provide similar functionality to the routines found in OpenSSL 0.9.6 and may use the same implementation.

SEE ALSO

CC_MD5(3cc), CCCryptor(3cc), CCHmac(3cc), CC_crypto(3cc)

History