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
27int WHIRLPOOL_Init	(WHIRLPOOL_CTX *c);
28int WHIRLPOOL_Update	(WHIRLPOOL_CTX *c,const void *inp,size_t bytes);
29void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits);
30int WHIRLPOOL_Final	(unsigned char *md,WHIRLPOOL_CTX *c);
31unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md);
32#endif
33
34#ifdef __cplusplus
35}
36#endif
37
38#endif
39