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