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