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