rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | /* |
| 2 | Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. |
| 3 | |
| 4 | This software is provided 'as-is', without any express or implied |
| 5 | warranty. In no event will the authors be held liable for any damages |
| 6 | arising from the use of this software. |
| 7 | |
| 8 | Permission is granted to anyone to use this software for any purpose, |
| 9 | including commercial applications, and to alter it and redistribute it |
| 10 | freely, subject to the following restrictions: |
| 11 | |
| 12 | 1. The origin of this software must not be misrepresented; you must not |
| 13 | claim that you wrote the original software. If you use this software |
| 14 | in a product, an acknowledgment in the product documentation would be |
| 15 | appreciated but is not required. |
| 16 | 2. Altered source versions must be plainly marked as such, and must not be |
| 17 | misrepresented as being the original software. |
| 18 | 3. This notice may not be removed or altered from any source distribution. |
| 19 | |
| 20 | L. Peter Deutsch |
| 21 | ghost@aladdin.com |
| 22 | |
| 23 | */ |
| 24 | /* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */ |
| 25 | /* |
| 26 | Independent implementation of MD5 (RFC 1321). |
| 27 | |
| 28 | This code implements the MD5 Algorithm defined in RFC 1321, whose |
| 29 | text is available at |
| 30 | http://www.ietf.org/rfc/rfc1321.txt |
| 31 | The code is derived from the text of the RFC, including the test suite |
| 32 | (section A.5) but excluding the rest of Appendix A. It does not include |
| 33 | any code or documentation that is identified in the RFC as being |
| 34 | copyrighted. |
| 35 | |
| 36 | The original and principal author of md5.h is L. Peter Deutsch |
| 37 | <ghost@aladdin.com>. Other authors are noted in the change history |
| 38 | that follows (in reverse chronological order): |
| 39 | |
| 40 | 2002-04-13 lpd Removed support for non-ANSI compilers; removed |
| 41 | references to Ghostscript; clarified derivation from RFC 1321; |
| 42 | now handles byte order either statically or dynamically. |
| 43 | 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. |
| 44 | 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); |
| 45 | added conditionalization for C++ compilation from Martin |
| 46 | Purschke <purschke@bnl.gov>. |
| 47 | 1999-05-03 lpd Original version. |
| 48 | */ |
| 49 | |
| 50 | |
| 51 | /***************************************************************************** |
| 52 | * |
| 53 | * Filename: |
| 54 | * --------- |
| 55 | * md5.c |
| 56 | * |
| 57 | * Project: |
| 58 | * -------- |
| 59 | * Maui_Software |
| 60 | * |
| 61 | * Description: |
| 62 | * ------------ |
| 63 | * MD5 Engine |
| 64 | * |
| 65 | * Author: |
| 66 | * ------- |
| 67 | * ------- |
| 68 | * |
| 69 | *============================================================================ |
| 70 | * HISTORY |
| 71 | * Below this line, this part is controlled by ClearCase. DO NOT MODIFY!! |
| 72 | *------------------------------------------------------------------------------ |
| 73 | * $Log$ |
| 74 | * |
| 75 | * removed! |
| 76 | * removed! |
| 77 | * |
| 78 | * |
| 79 | * removed! |
| 80 | * removed! |
| 81 | * code review. remove redundant comment. |
| 82 | * |
| 83 | * removed! |
| 84 | * removed! |
| 85 | * |
| 86 | * |
| 87 | * removed! |
| 88 | * removed! |
| 89 | * |
| 90 | * |
| 91 | * removed! |
| 92 | * removed! |
| 93 | * |
| 94 | * |
| 95 | * removed! |
| 96 | * removed! |
| 97 | * |
| 98 | * |
| 99 | *------------------------------------------------------------------------------ |
| 100 | * Upper this line, this part is controlled by ClearCase. DO NOT MODIFY!! |
| 101 | *============================================================================ |
| 102 | ****************************************************************************/ |
| 103 | |
| 104 | #ifndef __MD5_H__ |
| 105 | #define __MD5_H__ |
| 106 | |
| 107 | |
| 108 | |
| 109 | typedef unsigned char md5_byte_t; /* 8-bit byte */ |
| 110 | typedef unsigned int md5_word_t; /* 32-bit word */ |
| 111 | |
| 112 | /* Define the state of the MD5 Algorithm. */ |
| 113 | typedef struct md5_state_s { |
| 114 | md5_word_t count[2]; /* message length in bits, lsw first */ |
| 115 | md5_word_t abcd[4]; /* digest buffer */ |
| 116 | md5_byte_t buf[64]; /* accumulate block */ |
| 117 | } md5_context; |
| 118 | |
| 119 | #ifdef __cplusplus |
| 120 | extern "C" |
| 121 | { |
| 122 | #endif |
| 123 | |
| 124 | /* Initialize the algorithm. */ |
| 125 | void CHE_md5_init(md5_context *pms); |
| 126 | |
| 127 | /* Append a string to the message. */ |
| 128 | void CHE_md5_append(md5_context *pms, const md5_byte_t *data, int nbytes); |
| 129 | |
| 130 | /* Finish the message and return the digest. */ |
| 131 | void CHE_md5_finish(md5_context *pms, md5_byte_t digest[16]); |
| 132 | |
| 133 | #ifdef __cplusplus |
| 134 | } /* end extern "C" */ |
| 135 | #endif |
| 136 | |
| 137 | #endif /* md5_INCLUDED */ |