#ifndef SQUID_MD5_H
#define SQUID_MD5_H

typedef unsigned char    uint8_t;
typedef unsigned short   uint16_t;
typedef unsigned int     uint32_t;

typedef struct SquidMD5Context {
	uint32_t buf[4];
	uint32_t bytes[2];
	uint32_t in[16];
}SquidMD5_CTX;

void SquidMD5Init(struct SquidMD5Context *context);
void SquidMD5Update(struct SquidMD5Context *context, const void *buf, unsigned len);
void SquidMD5Final(uint8_t digest[16], struct SquidMD5Context *context);
void SQUID_MD5Transform(uint32_t buf[4], uint32_t const in[16]);    // void SquidMD5Transform(uint32_t buf[4], uint32_t const in[16]);

#define SQUID_MD5_DIGEST_LENGTH         16

#endif /** SQUID_MD5_H */
