CommonDigestPriv.h [plain text]
#ifndef _COMMON_DIGEST_PRIV_H_
#define _COMMON_DIGEST_PRIV_H_
#include <CommonCrypto/CommonCryptoPriv.h>
#include <CommonCrypto/CommonDigest.h>
#include "tomcrypt.h"
#define MD2_DIGEST_LENGTH CC_MD2_DIGEST_LENGTH
#define MD2_BLOCK CC_MD2_BLOCK_LONG
typedef CC_MD2_CTX MD2_CTX;
typedef CC_LONG MD2_INT;
#define MD4_DIGEST_LENGTH CC_MD4_DIGEST_LENGTH
#define MD4_CBLOCK CC_MD4_BLOCK_BYTES
#define MD4_LBLOCK (MD4_CBLOCK/4)
#define MD4_LONG_LOG2 3
typedef CC_MD4_CTX MD4_CTX;
typedef CC_LONG MD4_LONG;
#define MD5_DIGEST_LENGTH CC_MD5_DIGEST_LENGTH
#define MD5_CBLOCK CC_MD5_BLOCK_BYTES
#define MD5_LBLOCK (MD5_CBLOCK/4)
typedef CC_MD5_CTX MD5_CTX;
typedef CC_LONG MD5_LONG;
#define SHA_DIGEST_LENGTH CC_SHA1_DIGEST_LENGTH
#define SHA_CBLOCK CC_SHA1_BLOCK_BYTES
#define SHA_LBLOCK CC_SHA1_BLOCK_LONG
#define SHA_LONG_LOG2 2
#define SHA_LAST_BLOCK (SHA_CBLOCK-8)
typedef CC_SHA1_CTX SHA_CTX;
typedef CC_LONG SHA_LONG;
#define CC_DIGEST_ONE_SHOT(fcnName, ctxName, initFcn, updateFcn, finalFcn) \
unsigned char * fcnName (const void *data, CC_LONG len, unsigned char *md) \
{ \
ctxName ctx; \
if(md == NULL) { \
return NULL; \
} \
initFcn(&ctx); \
updateFcn(&ctx, data, len); \
finalFcn(md, &ctx); \
return md; \
}
typedef struct ccDigest_s {
hash_state md;
int hashIndex;
} CCDigestCtx_t, *CCDigestCtxPtr;
#endif