author | belugas |
Sun, 15 Jun 2008 02:48:25 +0000 | |
changeset 10965 | a2b5f6f9be0c |
parent 10429 | 1b99254f9607 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
10429
1b99254f9607
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents:
8629
diff
changeset
|
3 |
/** @file md5.cpp Creating MD5 checksums of files. */ |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
5835
diff
changeset
|
4 |
|
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
5 |
/* |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
6 |
Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
7 |
|
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
8 |
This software is provided 'as-is', without any express or implied |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
9 |
warranty. In no event will the authors be held liable for any damages |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
10 |
arising from the use of this software. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
11 |
|
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
12 |
Permission is granted to anyone to use this software for any purpose, |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
13 |
including commercial applications, and to alter it and redistribute it |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
14 |
freely, subject to the following restrictions: |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
15 |
|
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
16 |
1. The origin of this software must not be misrepresented; you must not |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
17 |
claim that you wrote the original software. If you use this software |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
18 |
in a product, an acknowledgment in the product documentation would be |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
19 |
appreciated but is not required. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
20 |
2. Altered source versions must be plainly marked as such, and must not be |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
21 |
misrepresented as being the original software. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
22 |
3. This notice may not be removed or altered from any source distribution. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
23 |
|
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
24 |
L. Peter Deutsch |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
25 |
ghost@aladdin.com |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
26 |
|
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
27 |
*/ |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
5835
diff
changeset
|
28 |
|
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
29 |
/* |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
30 |
Independent implementation of MD5 (RFC 1321). |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
31 |
|
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
32 |
This code implements the MD5 Algorithm defined in RFC 1321, whose |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
33 |
text is available at |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
34 |
http://www.ietf.org/rfc/rfc1321.txt |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
35 |
The code is derived from the text of the RFC, including the test suite |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
36 |
(section A.5) but excluding the rest of Appendix A. It does not include |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
37 |
any code or documentation that is identified in the RFC as being |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
38 |
copyrighted. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
39 |
|
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
40 |
The original and principal author of md5.c is L. Peter Deutsch |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
41 |
<ghost@aladdin.com>. Other authors are noted in the change history |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
42 |
that follows (in reverse chronological order): |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
43 |
|
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
44 |
2007-12-24 Changed to C++ and adapted to OpenTTD source |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
45 |
2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
46 |
either statically or dynamically; added missing #include <string.h> |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
47 |
in library. |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
48 |
2002-03-11 lpd Corrected argument list for main(), and added int return |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
49 |
type, in test program and T value program. |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
50 |
2002-02-21 lpd Added missing #include <stdio.h> in test program. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
51 |
2000-07-03 lpd Patched to eliminate warnings about "constant is |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
52 |
unsigned in ANSI C, signed in traditional"; made test program |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
53 |
self-checking. |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
54 |
1999-11-04 lpd Edited comments slightly for automatic TOC extraction. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
55 |
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
56 |
1999-05-03 lpd Original version. |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
57 |
*/ |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
58 |
|
645
07dd92183e9e
(svn r1078) md5.c vc6 + vs.net fix for release builds (sign_de)
bjarni
parents:
619
diff
changeset
|
59 |
#include "stdafx.h" |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
60 |
#include "core/bitmath_func.hpp" |
8628
4e316518420a
(svn r11694) -Codechange: move more endianness related stuff to endian_func.hpp.
rubidium
parents:
6527
diff
changeset
|
61 |
#include "core/endian_func.hpp" |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
62 |
#include "md5.h" |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
63 |
|
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
64 |
#define T_MASK ((uint32)~0) |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
65 |
#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
66 |
#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
67 |
#define T3 0x242070db |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
68 |
#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
69 |
#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
70 |
#define T6 0x4787c62a |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
71 |
#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
72 |
#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
73 |
#define T9 0x698098d8 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
74 |
#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
75 |
#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
76 |
#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
77 |
#define T13 0x6b901122 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
78 |
#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
79 |
#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
80 |
#define T16 0x49b40821 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
81 |
#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
82 |
#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
83 |
#define T19 0x265e5a51 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
84 |
#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
85 |
#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
86 |
#define T22 0x02441453 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
87 |
#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
88 |
#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
89 |
#define T25 0x21e1cde6 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
90 |
#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
91 |
#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
92 |
#define T28 0x455a14ed |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
93 |
#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
94 |
#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
95 |
#define T31 0x676f02d9 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
96 |
#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
97 |
#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
98 |
#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
99 |
#define T35 0x6d9d6122 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
100 |
#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
101 |
#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
102 |
#define T38 0x4bdecfa9 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
103 |
#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
104 |
#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
105 |
#define T41 0x289b7ec6 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
106 |
#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
107 |
#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
108 |
#define T44 0x04881d05 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
109 |
#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
110 |
#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
111 |
#define T47 0x1fa27cf8 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
112 |
#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
113 |
#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
114 |
#define T50 0x432aff97 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
115 |
#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
116 |
#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
117 |
#define T53 0x655b59c3 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
118 |
#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
119 |
#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
120 |
#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
121 |
#define T57 0x6fa87e4f |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
122 |
#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
123 |
#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
124 |
#define T60 0x4e0811a1 |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
125 |
#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
126 |
#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
127 |
#define T63 0x2ad7d2bb |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
128 |
#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e) |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
129 |
|
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
130 |
static inline void Md5Set1(const uint32 *X, uint32 *a, const uint32 *b, const uint32 *c, const uint32 *d, const uint8 k, const uint8 s, const uint32 Ti) |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
131 |
{ |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
132 |
uint32 t = (*b & *c) | (~*b & *d); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
133 |
t += *a + X[k] + Ti; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
134 |
*a = ROL(t, s) + *b; |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
135 |
} |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
136 |
|
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
137 |
static inline void Md5Set2(const uint32 *X, uint32 *a, const uint32 *b, const uint32 *c, const uint32 *d, const uint8 k, const uint8 s, const uint32 Ti) |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
138 |
{ |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
139 |
uint32 t = (*b & *d) | (*c & ~*d); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
140 |
t += *a + X[k] + Ti; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
141 |
*a = ROL(t, s) + *b; |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
142 |
} |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
143 |
|
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
144 |
|
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
145 |
static inline void Md5Set3(const uint32 *X, uint32 *a, const uint32 *b, const uint32 *c, const uint32 *d, const uint8 k, const uint8 s, const uint32 Ti) |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
146 |
{ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
147 |
uint32 t = *b ^ *c ^ *d; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
148 |
t += *a + X[k] + Ti; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
149 |
*a = ROL(t, s) + *b; |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
150 |
} |
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
151 |
|
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
152 |
static inline void Md5Set4(const uint32 *X, uint32 *a, const uint32 *b, const uint32 *c, const uint32 *d, const uint8 k, const uint8 s, const uint32 Ti) |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
153 |
{ |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
154 |
uint32 t = *c ^ (*b | ~*d); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
155 |
t += *a + X[k] + Ti; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
156 |
*a = ROL(t, s) + *b; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
157 |
} |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
158 |
|
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
159 |
Md5::Md5() |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
160 |
{ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
161 |
count[0] = 0; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
162 |
count[1] = 0; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
163 |
abcd[0] = 0x67452301; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
164 |
abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
165 |
abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
166 |
abcd[3] = 0x10325476; |
602
9bbe42a9e3ed
(svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents:
diff
changeset
|
167 |
} |
8629
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
168 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
169 |
void Md5::Process(const uint8 *data /*[64]*/) |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
170 |
{ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
171 |
uint32 a = this->abcd[0]; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
172 |
uint32 b = this->abcd[1]; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
173 |
uint32 c = this->abcd[2]; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
174 |
uint32 d = this->abcd[3]; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
175 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
176 |
uint32 X[16]; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
177 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
178 |
/* Convert the uint8 data to uint32 LE */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
179 |
uint32 *px = (uint32 *)data; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
180 |
for (uint i = 0; i < 16; i++) { |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
181 |
X[i] = TO_LE32(*px); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
182 |
px++; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
183 |
} |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
184 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
185 |
/* Round 1. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
186 |
Md5Set1(X, &a, &b, &c, &d, 0, 7, T1); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
187 |
Md5Set1(X, &d, &a, &b, &c, 1, 12, T2); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
188 |
Md5Set1(X, &c, &d, &a, &b, 2, 17, T3); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
189 |
Md5Set1(X, &b, &c, &d, &a, 3, 22, T4); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
190 |
Md5Set1(X, &a, &b, &c, &d, 4, 7, T5); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
191 |
Md5Set1(X, &d, &a, &b, &c, 5, 12, T6); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
192 |
Md5Set1(X, &c, &d, &a, &b, 6, 17, T7); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
193 |
Md5Set1(X, &b, &c, &d, &a, 7, 22, T8); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
194 |
Md5Set1(X, &a, &b, &c, &d, 8, 7, T9); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
195 |
Md5Set1(X, &d, &a, &b, &c, 9, 12, T10); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
196 |
Md5Set1(X, &c, &d, &a, &b, 10, 17, T11); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
197 |
Md5Set1(X, &b, &c, &d, &a, 11, 22, T12); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
198 |
Md5Set1(X, &a, &b, &c, &d, 12, 7, T13); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
199 |
Md5Set1(X, &d, &a, &b, &c, 13, 12, T14); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
200 |
Md5Set1(X, &c, &d, &a, &b, 14, 17, T15); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
201 |
Md5Set1(X, &b, &c, &d, &a, 15, 22, T16); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
202 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
203 |
/* Round 2. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
204 |
Md5Set2(X, &a, &b, &c, &d, 1, 5, T17); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
205 |
Md5Set2(X, &d, &a, &b, &c, 6, 9, T18); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
206 |
Md5Set2(X, &c, &d, &a, &b, 11, 14, T19); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
207 |
Md5Set2(X, &b, &c, &d, &a, 0, 20, T20); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
208 |
Md5Set2(X, &a, &b, &c, &d, 5, 5, T21); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
209 |
Md5Set2(X, &d, &a, &b, &c, 10, 9, T22); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
210 |
Md5Set2(X, &c, &d, &a, &b, 15, 14, T23); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
211 |
Md5Set2(X, &b, &c, &d, &a, 4, 20, T24); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
212 |
Md5Set2(X, &a, &b, &c, &d, 9, 5, T25); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
213 |
Md5Set2(X, &d, &a, &b, &c, 14, 9, T26); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
214 |
Md5Set2(X, &c, &d, &a, &b, 3, 14, T27); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
215 |
Md5Set2(X, &b, &c, &d, &a, 8, 20, T28); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
216 |
Md5Set2(X, &a, &b, &c, &d, 13, 5, T29); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
217 |
Md5Set2(X, &d, &a, &b, &c, 2, 9, T30); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
218 |
Md5Set2(X, &c, &d, &a, &b, 7, 14, T31); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
219 |
Md5Set2(X, &b, &c, &d, &a, 12, 20, T32); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
220 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
221 |
/* Round 3. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
222 |
Md5Set3(X, &a, &b, &c, &d, 5, 4, T33); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
223 |
Md5Set3(X, &d, &a, &b, &c, 8, 11, T34); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
224 |
Md5Set3(X, &c, &d, &a, &b, 11, 16, T35); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
225 |
Md5Set3(X, &b, &c, &d, &a, 14, 23, T36); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
226 |
Md5Set3(X, &a, &b, &c, &d, 1, 4, T37); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
227 |
Md5Set3(X, &d, &a, &b, &c, 4, 11, T38); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
228 |
Md5Set3(X, &c, &d, &a, &b, 7, 16, T39); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
229 |
Md5Set3(X, &b, &c, &d, &a, 10, 23, T40); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
230 |
Md5Set3(X, &a, &b, &c, &d, 13, 4, T41); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
231 |
Md5Set3(X, &d, &a, &b, &c, 0, 11, T42); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
232 |
Md5Set3(X, &c, &d, &a, &b, 3, 16, T43); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
233 |
Md5Set3(X, &b, &c, &d, &a, 6, 23, T44); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
234 |
Md5Set3(X, &a, &b, &c, &d, 9, 4, T45); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
235 |
Md5Set3(X, &d, &a, &b, &c, 12, 11, T46); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
236 |
Md5Set3(X, &c, &d, &a, &b, 15, 16, T47); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
237 |
Md5Set3(X, &b, &c, &d, &a, 2, 23, T48); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
238 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
239 |
/* Round 4. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
240 |
Md5Set4(X, &a, &b, &c, &d, 0, 6, T49); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
241 |
Md5Set4(X, &d, &a, &b, &c, 7, 10, T50); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
242 |
Md5Set4(X, &c, &d, &a, &b, 14, 15, T51); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
243 |
Md5Set4(X, &b, &c, &d, &a, 5, 21, T52); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
244 |
Md5Set4(X, &a, &b, &c, &d, 12, 6, T53); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
245 |
Md5Set4(X, &d, &a, &b, &c, 3, 10, T54); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
246 |
Md5Set4(X, &c, &d, &a, &b, 10, 15, T55); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
247 |
Md5Set4(X, &b, &c, &d, &a, 1, 21, T56); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
248 |
Md5Set4(X, &a, &b, &c, &d, 8, 6, T57); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
249 |
Md5Set4(X, &d, &a, &b, &c, 15, 10, T58); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
250 |
Md5Set4(X, &c, &d, &a, &b, 6, 15, T59); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
251 |
Md5Set4(X, &b, &c, &d, &a, 13, 21, T60); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
252 |
Md5Set4(X, &a, &b, &c, &d, 4, 6, T61); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
253 |
Md5Set4(X, &d, &a, &b, &c, 11, 10, T62); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
254 |
Md5Set4(X, &c, &d, &a, &b, 2, 15, T63); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
255 |
Md5Set4(X, &b, &c, &d, &a, 9, 21, T64); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
256 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
257 |
/* Then perform the following additions. (That is increment each |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
258 |
* of the four registers by the value it had before this block |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
259 |
* was started.) */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
260 |
this->abcd[0] += a; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
261 |
this->abcd[1] += b; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
262 |
this->abcd[2] += c; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
263 |
this->abcd[3] += d; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
264 |
} |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
265 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
266 |
void Md5::Append(const void *data, const size_t nbytes) |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
267 |
{ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
268 |
const uint8 *p = (const uint8 *)data; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
269 |
size_t left = nbytes; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
270 |
const size_t offset = (this->count[0] >> 3) & 63; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
271 |
const uint32 nbits = (uint32)(nbytes << 3); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
272 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
273 |
if (nbytes <= 0) return; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
274 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
275 |
/* Update the message length. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
276 |
this->count[1] += (uint32)(nbytes >> 29); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
277 |
this->count[0] += nbits; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
278 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
279 |
if (this->count[0] < nbits) this->count[1]++; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
280 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
281 |
/* Process an initial partial block. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
282 |
if (offset) { |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
283 |
size_t copy = (offset + nbytes > 64 ? 64 - offset : nbytes); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
284 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
285 |
memcpy(this->buf + offset, p, copy); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
286 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
287 |
if (offset + copy < 64) return; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
288 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
289 |
p += copy; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
290 |
left -= copy; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
291 |
this->Process(this->buf); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
292 |
} |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
293 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
294 |
/* Process full blocks. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
295 |
for (; left >= 64; p += 64, left -= 64) this->Process(p); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
296 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
297 |
/* Process a final partial block. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
298 |
if (left) memcpy(this->buf, p, left); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
299 |
} |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
300 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
301 |
void Md5::Finish(uint8 digest[16]) |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
302 |
{ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
303 |
static const uint8 pad[64] = { |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
304 |
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
305 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
306 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
307 |
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
308 |
}; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
309 |
uint8 data[8]; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
310 |
uint i; |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
311 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
312 |
/* Save the length before padding. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
313 |
for (i = 0; i < 8; ++i) |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
314 |
data[i] = (uint8)(this->count[i >> 2] >> ((i & 3) << 3)); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
315 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
316 |
/* Pad to 56 bytes mod 64. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
317 |
this->Append(pad, ((55 - (this->count[0] >> 3)) & 63) + 1); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
318 |
/* Append the length. */ |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
319 |
this->Append(data, 8); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
320 |
|
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
321 |
for (i = 0; i < 16; ++i) |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
322 |
digest[i] = (uint8)(this->abcd[i >> 2] >> ((i & 3) << 3)); |
c764b6319d60
(svn r11695) -Codechange: Converted the md5 algorithm to OOP
skidd13
parents:
8628
diff
changeset
|
323 |
} |