1 /*
2  * Universal wrapper API for a message digest function
3  *
4  * Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
5  */
6 
7 #ifndef MD_H
8 #define MD_H
9 
10 #include <string.h>
11 
12 #define MD_RIPEMD160
13 
14 #ifdef MD_RIPEMD160
15 #define MD_LEN 20
16 #define MD_BUFLEN 64
17 #endif
18 
19 typedef struct {
20   unsigned char md[MD_LEN];           /* internal status of hash function */
21   unsigned char buf[MD_BUFLEN];       /* buffer for stream-like interface */
22   unsigned long length_lo, length_hi;     /* number of bits hashed so far */
23 } md_state;
24 
25 /* prototypes */
26 
27 void md_init(md_state *md);
28 void md_add(md_state *md, const void *src, size_t len);
29 void md_close(md_state *md, unsigned char *result);
30 int md_selftest(void);
31 
32 #endif
33