| 1 | /*
 | 
|---|
| 2 |  ***********************************************************************
 | 
|---|
| 3 |  ** md5.h -- header file for implementation of MD5                                              **
 | 
|---|
| 4 |  ** RSA Data Security, Inc. MD5 Message-Digest Algorithm                                **
 | 
|---|
| 5 |  ** Created: 2/17/90 RLR                                                                                                **
 | 
|---|
| 6 |  ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version                                 **
 | 
|---|
| 7 |  ** Revised (for MD5): RLR 4/27/91                                                                              **
 | 
|---|
| 8 |  **     -- G modified to have y&~z instead of y&z                                               **
 | 
|---|
| 9 |  **     -- FF, GG, HH modified to add in last register done                     **
 | 
|---|
| 10 |  **     -- Access pattern: round 2 works mod 5, round 3 works mod 3     **
 | 
|---|
| 11 |  **     -- distinct additive constant for each step                                     **
 | 
|---|
| 12 |  **     -- round 4 added, working mod 7                                                                 **
 | 
|---|
| 13 |  ***********************************************************************
 | 
|---|
| 14 |  */
 | 
|---|
| 15 | 
 | 
|---|
| 16 | /*
 | 
|---|
| 17 |  ***********************************************************************
 | 
|---|
| 18 |  ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved.    **
 | 
|---|
| 19 |  **                                                                                                                                     **
 | 
|---|
| 20 |  ** License to copy and use this software is granted provided that              **
 | 
|---|
| 21 |  ** it is identified as the "RSA Data Security, Inc. MD5 Message-       **
 | 
|---|
| 22 |  ** Digest Algorithm" in all material mentioning or referencing this    **
 | 
|---|
| 23 |  ** software or this function.                                                                                  **
 | 
|---|
| 24 |  **                                                                                                                                     **
 | 
|---|
| 25 |  ** License is also granted to make and use derivative works                    **
 | 
|---|
| 26 |  ** provided that such works are identified as "derived from the RSA    **
 | 
|---|
| 27 |  ** Data Security, Inc. MD5 Message-Digest Algorithm" in all                    **
 | 
|---|
| 28 |  ** material mentioning or referencing the derived work.                                **
 | 
|---|
| 29 |  **                                                                                                                                     **
 | 
|---|
| 30 |  ** RSA Data Security, Inc. makes no representations concerning                 **
 | 
|---|
| 31 |  ** either the merchantability of this software or the suitability              **
 | 
|---|
| 32 |  ** of this software for any particular purpose.        It is provided "as      **
 | 
|---|
| 33 |  ** is" without express or implied warranty of any kind.                **
 | 
|---|
| 34 |  **                                                                                                                                     **
 | 
|---|
| 35 |  ** These notices must be retained in any copies of any part of this    **
 | 
|---|
| 36 |  ** documentation and/or software.                                                                              **
 | 
|---|
| 37 |  ***********************************************************************
 | 
|---|
| 38 |  */
 | 
|---|
| 39 | #ifdef __cplusplus
 | 
|---|
| 40 |     extern "C" {
 | 
|---|
| 41 | #endif
 | 
|---|
| 42 | 
 | 
|---|
| 43 | /* typedef a 32-bit type */
 | 
|---|
| 44 | typedef unsigned long  UINT4;
 | 
|---|
| 45 | 
 | 
|---|
| 46 | /* Data structure for MD5 (Message-Digest) computation */
 | 
|---|
| 47 | typedef struct {
 | 
|---|
| 48 |         UINT4 i[2];                                                     /* number of _bits_ handled mod 2^64 */
 | 
|---|
| 49 |         UINT4 buf[4];                                                   /* scratch buffer */
 | 
|---|
| 50 |         unsigned char in[64];                                   /* input buffer */
 | 
|---|
| 51 |         unsigned char digest[16];                               /* actual digest after MD5Final call */
 | 
|---|
| 52 | } MD5_CTX;
 | 
|---|
| 53 | 
 | 
|---|
| 54 | void MD5Init (MD5_CTX *mdContext);
 | 
|---|
| 55 | void MD5Final (MD5_CTX *mdContext);
 | 
|---|
| 56 | void MD5Update (MD5_CTX *mdContext, unsigned char *inBuf, unsigned short inLen);
 | 
|---|
| 57 | 
 | 
|---|
| 58 | #ifdef __cplusplus
 | 
|---|
| 59 |     }
 | 
|---|
| 60 | #endif
 | 
|---|
| 61 | 
 | 
|---|
| 62 | /*
 | 
|---|
| 63 |  ***********************************************************************
 | 
|---|
| 64 |  ** End of md5.h                                                                                                                **
 | 
|---|
| 65 |  ******************************** (cut) ********************************
 | 
|---|
| 66 |  */
 | 
|---|