2373
+ �� 1 /*
+ �� 2 Copyright (C) 1999 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 /*
+ �� 25 Independent implementation of MD5 (RFC 1321).
+ �� 26
+ �� 27 This code implements the MD5 Algorithm defined in RFC 1321.
+ �� 28 It is derived directly from the text of the RFC and not from the
+ �� 29 reference implementation.
+ �� 30
+ �� 31 The original and principal author of md5.h is L. Peter Deutsch
+ �� 32 <ghost@aladdin.com>. Other authors are noted in the change history
+ �� 33 that follows (in reverse chronological order):
+ �� 34
+ �� 35 1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+ �� 36 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
+ �� 37 added conditionalization for C++ compilation from Martin
+ �� 38 Purschke <purschke@bnl.gov>.
+ �� 39 1999-05-03 lpd Original version.
+ �� 40 */
+ �� 41
+ �� 42 #ifndef md5_INCLUDED
+ �� 43 # define md5_INCLUDED
+ �� 44
+ �� 45 /*
+ �� 46 * This code has some adaptations for the Ghostscript environment, but it
+ �� 47 * will compile and run correctly in any environment with 8-bit chars and
+ �� 48 * 32-bit ints. Specifically, it assumes that if the following are
+ �� 49 * defined, they have the same meaning as in Ghostscript: P1, P2, P3,
+ �� 50 * ARCH_IS_BIG_ENDIAN.
+ �� 51 */
+ �� 52
+ �� 53 typedef unsigned char md5_byte_t; /* 8-bit byte */
+ �� 54 typedef unsigned int md5_word_t; /* 32-bit word */
+ �� 55
+ �� 56 /* Define the state of the MD5 Algorithm. */
+ �� 57 typedef struct md5_state_s {
+ �� 58 md5_word_t count[2]; /* message length in bits, lsw first */
+ �� 59 md5_word_t abcd[4]; /* digest buffer */
+ �� 60 md5_byte_t buf[64]; /* accumulate block */
+ �� 61 } md5_state_t;
+ �� 62
+ �� 63 #ifdef __cplusplus
+ �� 64 extern "C"
+ �� 65 {
+ �� 66 #endif
+ �� 67
+ �� 68 /* Initialize the algorithm. */
+ �� 69 #ifdef P1
+ �� 70 void md5_init(P1(md5_state_t *pms));
+ �� 71 #else
+ �� 72 void md5_init(md5_state_t *pms);
+ �� 73 #endif
+ �� 74
+ �� 75 /* Append a string to the message. */
+ �� 76 #ifdef P3
+ �� 77 void md5_append(P3(md5_state_t *pms, const md5_byte_t *data, int nbytes));
+ �� 78 #else
+ �� 79 void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
+ �� 80 #endif
+ �� 81
+ �� 82 /* Finish the message and return the digest. */
+ �� 83 #ifdef P2
+ �� 84 void md5_finish(P2(md5_state_t *pms, md5_byte_t digest[16]));
+ �� 85 #else
+ �� 86 void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
+ �� 87 #endif
+ �� 88
+ �� 89 #ifdef __cplusplus
+ �� 90 } /* end extern "C" */
+ �� 91 #endif
+ �� 92
+ �� 93 #endif /* md5_INCLUDED */