1 /* See md5.c for explanation and copyright information. */ 2 3 #ifndef MD5_H 4 #define MD5_H 5 6 /* Unlike previous versions of this code, uint32 need not be exactly 7 32 bits, merely 32 bits or more. Choosing a data type which is 32 8 bits instead of 64 is not important; speed is considerably more 9 important. ANSI guarantees that "unsigned long" will be big enough, 10 and always using it seems to have few disadvantages. */ 11 typedef unsigned long uint32; 12 13 struct MD5Context { 14 uint32 buf[4]; 15 uint32 bits[2]; 16 unsigned char in[64]; 17 }; 18 19 #define MD5_DIGEST_SIZE 16 20 21 void MD5Init(struct MD5Context *context); 22 void MD5Update(struct MD5Context *context, unsigned char const *buf, unsigned len); 23 void MD5Final(unsigned char digest[16], struct MD5Context *context); 24 void MD5Transform(uint32 buf[4], const unsigned char in[64]); 25 26 /* 27 * This is needed to make RSAREF happy on some MS-DOS compilers. 28 */ 29 typedef struct MD5Context MD5_CTX; 30 31 #endif /* !MD5_H */ 32