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 void GoodMD5Init(struct MD5Context *);
22 void GoodMD5Update(struct MD5Context *, unsigned const char *, unsigned);
23 void GoodMD5Final(unsigned char digest[16], struct MD5Context *);
24 void GoodMD5Transform(uint32 buf[4], uint32 const in[16]);
25 void BrokenMD5Init(struct MD5Context *);
26 void BrokenMD5Update(struct MD5Context *, unsigned const char *, unsigned);
27 void BrokenMD5Final(unsigned char digest[16], struct MD5Context *);
28 void BrokenMD5Transform(uint32 buf[4], uint32 const in[16]);
29
30 char *Goodcrypt_md5(const char *pw, const char *salt);
31 char *Brokencrypt_md5(const char *pw, const char *salt);
32
33 /*
34 * This is needed to make RSAREF happy on some MS-DOS compilers.
35 */
36
37 typedef struct MD5Context MD5_CTX;
38
39 #endif /* MD5_H */