whrlpool.h revision 296341
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