1 /* $OpenBSD: whrlpool.h,v 1.4 2014/06/12 15:49:31 deraadt Exp $ */ 2 3 #include <stddef.h> 4 5 #ifndef HEADER_WHRLPOOL_H 6 #define HEADER_WHRLPOOL_H 7 8 #include <openssl/opensslconf.h> 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #define WHIRLPOOL_DIGEST_LENGTH (512/8) 15 #define WHIRLPOOL_BBLOCK 512 16 #define WHIRLPOOL_COUNTER (256/8) 17 18 typedef struct { 19 union { 20 unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; 21 /* double q is here to ensure 64-bit alignment */ 22 double q[WHIRLPOOL_DIGEST_LENGTH/sizeof(double)]; 23 } H; 24 unsigned char data[WHIRLPOOL_BBLOCK/8]; 25 unsigned int bitoff; 26 size_t bitlen[WHIRLPOOL_COUNTER/sizeof(size_t)]; 27 } WHIRLPOOL_CTX; 28 29 #ifndef OPENSSL_NO_WHIRLPOOL 30 int WHIRLPOOL_Init (WHIRLPOOL_CTX *c); 31 int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *inp,size_t bytes); 32 void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits); 33 int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c); 34 unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md); 35 #endif 36 37 #ifdef __cplusplus 38 } 39 #endif 40 41 #endif 42