1 /* Md5.h -- MD5 Hash 2 : Igor Pavlov : Public domain */ 3 4 #ifndef ZIP7_INC_MD5_H 5 #define ZIP7_INC_MD5_H 6 7 #include "7zTypes.h" 8 9 EXTERN_C_BEGIN 10 11 #define MD5_NUM_BLOCK_WORDS 16 12 #define MD5_NUM_DIGEST_WORDS 4 13 14 #define MD5_BLOCK_SIZE (MD5_NUM_BLOCK_WORDS * 4) 15 #define MD5_DIGEST_SIZE (MD5_NUM_DIGEST_WORDS * 4) 16 17 typedef struct 18 { 19 UInt64 count; 20 UInt64 _pad_1; 21 // we want 16-bytes alignment here 22 UInt32 state[MD5_NUM_DIGEST_WORDS]; 23 UInt64 _pad_2[4]; 24 // we want 64-bytes alignment here 25 Byte buffer[MD5_BLOCK_SIZE]; 26 } CMd5; 27 28 void Md5_Init(CMd5 *p); 29 void Md5_Update(CMd5 *p, const Byte *data, size_t size); 30 void Md5_Final(CMd5 *p, Byte *digest); 31 32 EXTERN_C_END 33 34 #endif 35