author | Mikael Berthe <mikael@lilotux.net> |
Sun, 04 Oct 2009 20:56:16 +0200 | |
changeset 1591 | 44fef962f572 |
parent 414 | ec86d759ed54 |
permissions | -rw-r--r-- |
25 | 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 |
|
414
ec86d759ed54
Trailing whitespace cleanup
Mikael Berthe <mikael@lilotux.net>
parents:
25
diff
changeset
|
64 |
extern "C" |
25 | 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 */ |