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