1f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/* 2f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * This is the header file for the MD5 message-digest algorithm. 3f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * The algorithm is due to Ron Rivest. This code was 4f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * written by Colin Plumb in 1993, no copyright is claimed. 5f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * This code is in the public domain; do with it what you wish. 6f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * 7f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * Equivalent code is available from RSA Data Security, Inc. 8f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * This code has been tested against that, and is equivalent, 9f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * except that you don't need to include two pages of legalese 10f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * with every copy. 11f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * To compute the message digest of a chunk of bytes, declare an 12f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * MD5Context structure, pass it to MD5Init, call MD5Update as 13f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * needed on buffers full of bytes, and then call MD5Final, which 14f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * will fill a supplied 16-byte array with the digest. 15f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * 16f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch */ 17f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 18f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef TALK_BASE_MD5_H__ 19f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define TALK_BASE_MD5_H__ 20f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 21f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifdef __cplusplus 22f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochextern "C" { 23f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif 24f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 25f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtypedef long unsigned int uint32; 26f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtypedef struct MD5Context MD5_CTX; 27f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 28f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define md5byte unsigned char 29f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 30f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochstruct MD5Context { 31f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch uint32 buf[4]; 32f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch uint32 bits[2]; 33f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch uint32 in[16]; 34f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch}; 35f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 36f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid MD5Init(struct MD5Context *context); 37f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid MD5Update(struct MD5Context *context, md5byte const *buf, unsigned len); 38f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid MD5Final(unsigned char digest[16], struct MD5Context *context); 39f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid MD5Transform(uint32 buf[4], uint32 const in[16]); 40f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 41f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifdef __cplusplus 42f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch}; 43f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif 44f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 45f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif // TALK_BASE_MD5_H__ 46