18ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
28ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ***********************************************************************
38ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** md5.h -- header file for implementation of MD5                    **
48ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** RSA Data Security, Inc. MD5 Message-Digest Algorithm              **
58ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** Created: 2/17/90 RLR                                              **
68ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version               **
78ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** Revised (for MD5): RLR 4/27/91                                    **
88ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **   -- G modified to have y&~z instead of y&z                       **
98ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **   -- FF, GG, HH modified to add in last register done             **
108ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **   -- Access pattern: round 2 works mod 5, round 3 works mod 3     **
118ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **   -- distinct additive constant for each step                     **
128ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **   -- round 4 added, working mod 7                                 **
138ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ***********************************************************************
148ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
158ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
168ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
178ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ***********************************************************************
188ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved.  **
198ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **                                                                   **
208ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** License to copy and use this software is granted provided that    **
218ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** it is identified as the "RSA Data Security, Inc. MD5 Message-     **
228ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** Digest Algorithm" in all material mentioning or referencing this  **
238ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** software or this function.                                        **
248ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **                                                                   **
258ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** License is also granted to make and use derivative works          **
268ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** provided that such works are identified as "derived from the RSA  **
278ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** Data Security, Inc. MD5 Message-Digest Algorithm" in all          **
288ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** material mentioning or referencing the derived work.              **
298ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **                                                                   **
308ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** RSA Data Security, Inc. makes no representations concerning       **
318ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** either the merchantability of this software or the suitability    **
328ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** of this software for any particular purpose.  It is provided "as  **
338ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** is" without express or implied warranty of any kind.              **
348ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project **                                                                   **
358ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** These notices must be retained in any copies of any part of this  **
368ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ** documentation and/or software.                                    **
378ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project ***********************************************************************
388ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
398ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
408ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef __MD5_INCLUDE__
418ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
428ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* typedef a 32-bit type */
438ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifdef _LP64
448ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projecttypedef unsigned int UINT4;
458ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projecttypedef int          INT4;
468ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#else
478ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projecttypedef unsigned long UINT4;
488ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projecttypedef long          INT4;
498ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
508ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define _UINT4_T
518ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
528ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* Data structure for MD5 (Message-Digest) computation */
538ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projecttypedef struct {
548ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  UINT4 i[2];                   /* number of _bits_ handled mod 2^64 */
558ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  UINT4 buf[4];                                    /* scratch buffer */
568ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  unsigned char in[64];                              /* input buffer */
578ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  unsigned char digest[16];     /* actual digest after MD5Final call */
588ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project} MD5_CTX;
598ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
608ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid MD5_Init ();
618ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid MD5_Update ();
628ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid MD5_Final ();
638ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
648ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define __MD5_INCLUDE__
658ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif /* __MD5_INCLUDE__ */
66