1
2 #ifndef MD5_H
3 #define MD5_H
4
5 #include "pam_cc_compat.h"
6
7 typedef unsigned int uint32;
8
9 struct MD5Context {
10 union {
11 uint32 i[4];
12 unsigned char c[16] PAM_ATTRIBUTE_ALIGNED(4);
13 } buf;
14 uint32 bits[2];
15 union {
16 uint32 i[16];
17 unsigned char c[64] PAM_ATTRIBUTE_ALIGNED(4);
18 } in;
19 };
20
21 #define MD5_DIGEST_LENGTH 16
22
23 void MD5Init(struct MD5Context *);
24 void MD5Update(struct MD5Context *, unsigned const char *, unsigned);
25 void MD5Final(unsigned char digest[MD5_DIGEST_LENGTH], struct MD5Context *);
26 void MD5Transform(uint32 buf[4], uint32 const in[MD5_DIGEST_LENGTH]);
27 void MD5(unsigned const char *, unsigned, unsigned char digest[MD5_DIGEST_LENGTH]);
28
29
30 /*
31 * This is needed to make RSAREF happy on some MS-DOS compilers.
32 */
33
34 typedef struct MD5Context MD5_CTX;
35
36 #endif /* MD5_H */