1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/*
2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * This is the header file for the MD5 message-digest algorithm.
3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * The algorithm is due to Ron Rivest.  This code was
4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * written by Colin Plumb in 1993, no copyright is claimed.
5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * This code is in the public domain; do with it what you wish.
6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Equivalent code is available from RSA Data Security, Inc.
8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * This code has been tested against that, and is equivalent,
9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * except that you don't need to include two pages of legalese
10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * with every copy.
11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * To compute the message digest of a chunk of bytes, declare an
13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * MD5Context structure, pass it to MD5Init, call MD5Update as
14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * needed on buffers full of bytes, and then call MD5Final, which
15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * will fill a supplied 16-byte array with the digest.
16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Changed so as no longer to depend on Colin Plumb's `usual.h'
18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * header definitions
19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *  - Ian Jackson <ian@chiark.greenend.org.uk>.
20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Still in the public domain.
21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */
22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
238b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org#ifndef MD5_UTILS_H_
248b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org#define MD5_UTILS_H_
25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
26dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
27dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgextern "C" {
28dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
29dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define md5byte unsigned char
31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define UWORD32 unsigned int
32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgtypedef struct MD5Context MD5Context;
346fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgstruct MD5Context {
356fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  UWORD32 buf[4];
366fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  UWORD32 bytes[2];
376fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org  UWORD32 in[16];
38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org};
39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid MD5Init(struct MD5Context *context);
41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid MD5Update(struct MD5Context *context, md5byte const *buf, unsigned len);
42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid MD5Final(unsigned char digest[16], struct MD5Context *context);
43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid MD5Transform(UWORD32 buf[4], UWORD32 const in[16]);
44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
45dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
46dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org}  // extern "C"
47dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
48dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
498b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org#endif  // MD5_UTILS_H_
50