hash-internal.h revision 259756979dd8e19d63a663aea2c765cb85fa3647
1259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker// Copyright 2007 Google Inc. All Rights Reserved. 2259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker// Author: mschilder@google.com (Marius Schilder) 3259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 4259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#ifndef SECURITY_UTIL_LITE_HASH_INTERNAL_H__ 5259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#define SECURITY_UTIL_LITE_HASH_INTERNAL_H__ 6259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 7259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#include <stdint.h> 8259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 9259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#ifdef __cplusplus 10259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongkerextern "C" { 11259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#endif // __cplusplus 12259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 13259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongkerstruct HASH_CTX; // forward decl 14259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 15259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongkertypedef struct HASH_VTAB { 16259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker void (* const init)(struct HASH_CTX*); 17259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker void (* const update)(struct HASH_CTX*, const void*, int); 18259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker const uint8_t* (* const final)(struct HASH_CTX*); 19259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker const uint8_t* (* const hash)(const void*, int, uint8_t*); 20259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker int size; 21259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker} HASH_VTAB; 22259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 23259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongkertypedef struct HASH_CTX { 24259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker const HASH_VTAB * f; 25259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker uint64_t count; 26259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker uint8_t buf[64]; 27259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker uint32_t state[8]; // upto SHA2 28259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker} HASH_CTX; 29259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 30259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#define HASH_init(ctx) (ctx)->f->init(ctx) 31259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#define HASH_update(ctx, data, len) (ctx)->f->update(ctx, data, len) 32259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#define HASH_final(ctx) (ctx)->f->final(ctx) 33259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#define HASH_hash(data, len, digest) (ctx)->f->hash(data, len, digest) 34259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#define HASH_size(ctx) (ctx)->f->size 35259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 36259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#ifdef __cplusplus 37259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker} 38259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#endif // __cplusplus 39259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker 40259756979dd8e19d63a663aea2c765cb85fa3647Doug Zongker#endif // SECURITY_UTIL_LITE_HASH_INTERNAL_H__ 41