wp-mmx.pl: ~10% performance improvement.
[openssl.git] / crypto / whrlpool / whrlpool.h
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
8 extern "C" {
9 #endif
10
11 #define WHIRLPOOL_DIGEST_LENGTH (512/8)
12 #define WHIRLPOOL_BBLOCK        512
13 #define WHIRLPOOL_COUNTER       (256/8)
14
15 typedef 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 int WHIRLPOOL_Init      (WHIRLPOOL_CTX *c);
28 int WHIRLPOOL_Update    (WHIRLPOOL_CTX *c,const void *inp,size_t bytes);
29 void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits);
30 int WHIRLPOOL_Final     (unsigned char *md,WHIRLPOOL_CTX *c);
31 unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md);
32 #endif
33
34 #ifdef __cplusplus
35 }
36 #endif
37
38 #endif