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