Commit | Line | Data |
---|---|---|
ebac4655 JA |
1 | #ifndef MD5_H |
2 | #define MD5_H | |
3 | ||
4 | #include <stdint.h> | |
5 | ||
6 | #define MD5_DIGEST_SIZE 16 | |
7 | #define MD5_HMAC_BLOCK_SIZE 64 | |
8 | #define MD5_BLOCK_WORDS 16 | |
9 | #define MD5_HASH_WORDS 4 | |
10 | ||
11 | #define F1(x, y, z) (z ^ (x & (y ^ z))) | |
12 | #define F2(x, y, z) F1(z, x, y) | |
13 | #define F3(x, y, z) (x ^ y ^ z) | |
14 | #define F4(x, y, z) (y ^ (x | ~z)) | |
15 | ||
16 | #define MD5STEP(f, w, x, y, z, in, s) \ | |
17 | (w += f(x, y, z) + in, w = (w<<s | w>>(32-s)) + x) | |
18 | ||
19 | struct md5_ctx { | |
20 | uint32_t hash[MD5_HASH_WORDS]; | |
21 | uint32_t block[MD5_BLOCK_WORDS]; | |
22 | uint64_t byte_count; | |
23 | }; | |
24 | ||
25 | extern void md5_update(struct md5_ctx *, const uint8_t *, unsigned int); | |
26 | ||
27 | #endif |