diff options
Diffstat (limited to 'src/lib/md5.c')
-rw-r--r-- | src/lib/md5.c | 226 |
1 files changed, 113 insertions, 113 deletions
diff --git a/src/lib/md5.c b/src/lib/md5.c index a7eb35fe..3d0f7493 100644 --- a/src/lib/md5.c +++ b/src/lib/md5.c | |||
@@ -20,21 +20,21 @@ | |||
20 | #include "md5.h" | 20 | #include "md5.h" |
21 | #include "mhd_byteorder.h" | 21 | #include "mhd_byteorder.h" |
22 | 22 | ||
23 | #define PUT_64BIT_LE(cp, value) do { \ | 23 | #define PUT_64BIT_LE(cp, value) do { \ |
24 | (cp)[7] = (uint8_t)((value) >> 56); \ | 24 | (cp)[7] = (uint8_t) ((value) >> 56); \ |
25 | (cp)[6] = (uint8_t)((value) >> 48); \ | 25 | (cp)[6] = (uint8_t) ((value) >> 48); \ |
26 | (cp)[5] = (uint8_t)((value) >> 40); \ | 26 | (cp)[5] = (uint8_t) ((value) >> 40); \ |
27 | (cp)[4] = (uint8_t)((value) >> 32); \ | 27 | (cp)[4] = (uint8_t) ((value) >> 32); \ |
28 | (cp)[3] = (uint8_t)((value) >> 24); \ | 28 | (cp)[3] = (uint8_t) ((value) >> 24); \ |
29 | (cp)[2] = (uint8_t)((value) >> 16); \ | 29 | (cp)[2] = (uint8_t) ((value) >> 16); \ |
30 | (cp)[1] = (uint8_t)((value) >> 8); \ | 30 | (cp)[1] = (uint8_t) ((value) >> 8); \ |
31 | (cp)[0] = (uint8_t)((value)); } while (0) | 31 | (cp)[0] = (uint8_t) ((value)); } while (0) |
32 | 32 | ||
33 | #define PUT_32BIT_LE(cp, value) do { \ | 33 | #define PUT_32BIT_LE(cp, value) do { \ |
34 | (cp)[3] = (uint8_t)((value) >> 24); \ | 34 | (cp)[3] = (uint8_t) ((value) >> 24); \ |
35 | (cp)[2] = (uint8_t)((value) >> 16); \ | 35 | (cp)[2] = (uint8_t) ((value) >> 16); \ |
36 | (cp)[1] = (uint8_t)((value) >> 8); \ | 36 | (cp)[1] = (uint8_t) ((value) >> 8); \ |
37 | (cp)[0] = (uint8_t)((value)); } while (0) | 37 | (cp)[0] = (uint8_t) ((value)); } while (0) |
38 | 38 | ||
39 | static uint8_t PADDING[MD5_BLOCK_SIZE] = { | 39 | static uint8_t PADDING[MD5_BLOCK_SIZE] = { |
40 | 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 40 | 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
@@ -47,9 +47,9 @@ static uint8_t PADDING[MD5_BLOCK_SIZE] = { | |||
47 | * initialization constants. | 47 | * initialization constants. |
48 | */ | 48 | */ |
49 | void | 49 | void |
50 | MHD_MD5Init(struct MD5Context *ctx) | 50 | MHD_MD5Init (struct MD5Context *ctx) |
51 | { | 51 | { |
52 | if (!ctx) | 52 | if (! ctx) |
53 | return; | 53 | return; |
54 | 54 | ||
55 | ctx->count = 0; | 55 | ctx->count = 0; |
@@ -64,26 +64,26 @@ MHD_MD5Init(struct MD5Context *ctx) | |||
64 | * of bytes. | 64 | * of bytes. |
65 | */ | 65 | */ |
66 | void | 66 | void |
67 | MHD_MD5Update(struct MD5Context *ctx, const unsigned char *input, size_t len) | 67 | MHD_MD5Update (struct MD5Context *ctx, const unsigned char *input, size_t len) |
68 | { | 68 | { |
69 | size_t have, need; | 69 | size_t have, need; |
70 | 70 | ||
71 | if (!ctx || !input) | 71 | if (! ctx || ! input) |
72 | return; | 72 | return; |
73 | 73 | ||
74 | /* Check how many bytes we already have and how many more we need. */ | 74 | /* Check how many bytes we already have and how many more we need. */ |
75 | have = (size_t)((ctx->count >> 3) & (MD5_BLOCK_SIZE - 1)); | 75 | have = (size_t) ((ctx->count >> 3) & (MD5_BLOCK_SIZE - 1)); |
76 | need = MD5_BLOCK_SIZE - have; | 76 | need = MD5_BLOCK_SIZE - have; |
77 | 77 | ||
78 | /* Update bitcount */ | 78 | /* Update bitcount */ |
79 | ctx->count += (uint64_t)len << 3; | 79 | ctx->count += (uint64_t) len << 3; |
80 | 80 | ||
81 | if (len >= need) | 81 | if (len >= need) |
82 | { | 82 | { |
83 | if (have != 0) | 83 | if (have != 0) |
84 | { | 84 | { |
85 | memcpy(ctx->buffer + have, input, need); | 85 | memcpy (ctx->buffer + have, input, need); |
86 | MD5Transform(ctx->state, ctx->buffer); | 86 | MD5Transform (ctx->state, ctx->buffer); |
87 | input += need; | 87 | input += need; |
88 | len -= need; | 88 | len -= need; |
89 | have = 0; | 89 | have = 0; |
@@ -92,7 +92,7 @@ MHD_MD5Update(struct MD5Context *ctx, const unsigned char *input, size_t len) | |||
92 | /* Process data in MD5_BLOCK_SIZE-byte chunks. */ | 92 | /* Process data in MD5_BLOCK_SIZE-byte chunks. */ |
93 | while (len >= MD5_BLOCK_SIZE) | 93 | while (len >= MD5_BLOCK_SIZE) |
94 | { | 94 | { |
95 | MD5Transform(ctx->state, input); | 95 | MD5Transform (ctx->state, input); |
96 | input += MD5_BLOCK_SIZE; | 96 | input += MD5_BLOCK_SIZE; |
97 | len -= MD5_BLOCK_SIZE; | 97 | len -= MD5_BLOCK_SIZE; |
98 | } | 98 | } |
@@ -100,7 +100,7 @@ MHD_MD5Update(struct MD5Context *ctx, const unsigned char *input, size_t len) | |||
100 | 100 | ||
101 | /* Handle any remaining bytes of data. */ | 101 | /* Handle any remaining bytes of data. */ |
102 | if (len != 0) | 102 | if (len != 0) |
103 | memcpy(ctx->buffer + have, input, len); | 103 | memcpy (ctx->buffer + have, input, len); |
104 | } | 104 | } |
105 | 105 | ||
106 | /* | 106 | /* |
@@ -108,42 +108,42 @@ MHD_MD5Update(struct MD5Context *ctx, const unsigned char *input, size_t len) | |||
108 | * 1 0* (64-bit count of bits processed, MSB-first) | 108 | * 1 0* (64-bit count of bits processed, MSB-first) |
109 | */ | 109 | */ |
110 | void | 110 | void |
111 | MD5Pad(struct MD5Context *ctx) | 111 | MD5Pad (struct MD5Context *ctx) |
112 | { | 112 | { |
113 | uint8_t count[8]; | 113 | uint8_t count[8]; |
114 | size_t padlen; | 114 | size_t padlen; |
115 | 115 | ||
116 | if (!ctx) | 116 | if (! ctx) |
117 | return; | 117 | return; |
118 | 118 | ||
119 | /* Convert count to 8 bytes in little endian order. */ | 119 | /* Convert count to 8 bytes in little endian order. */ |
120 | PUT_64BIT_LE(count, ctx->count); | 120 | PUT_64BIT_LE (count, ctx->count); |
121 | 121 | ||
122 | /* Pad out to 56 mod 64. */ | 122 | /* Pad out to 56 mod 64. */ |
123 | padlen = MD5_BLOCK_SIZE - | 123 | padlen = MD5_BLOCK_SIZE |
124 | ((ctx->count >> 3) & (MD5_BLOCK_SIZE - 1)); | 124 | - ((ctx->count >> 3) & (MD5_BLOCK_SIZE - 1)); |
125 | if (padlen < 1 + 8) | 125 | if (padlen < 1 + 8) |
126 | padlen += MD5_BLOCK_SIZE; | 126 | padlen += MD5_BLOCK_SIZE; |
127 | MHD_MD5Update(ctx, PADDING, padlen - 8); /* padlen - 8 <= 64 */ | 127 | MHD_MD5Update (ctx, PADDING, padlen - 8); /* padlen - 8 <= 64 */ |
128 | MHD_MD5Update(ctx, count, 8); | 128 | MHD_MD5Update (ctx, count, 8); |
129 | } | 129 | } |
130 | 130 | ||
131 | /* | 131 | /* |
132 | * Final wrapup--call MD5Pad, fill in digest and zero out ctx. | 132 | * Final wrapup--call MD5Pad, fill in digest and zero out ctx. |
133 | */ | 133 | */ |
134 | void | 134 | void |
135 | MHD_MD5Final(unsigned char digest[MD5_DIGEST_SIZE], struct MD5Context *ctx) | 135 | MHD_MD5Final (unsigned char digest[MD5_DIGEST_SIZE], struct MD5Context *ctx) |
136 | { | 136 | { |
137 | int i; | 137 | int i; |
138 | 138 | ||
139 | if (!ctx || !digest) | 139 | if (! ctx || ! digest) |
140 | return; | 140 | return; |
141 | 141 | ||
142 | MD5Pad(ctx); | 142 | MD5Pad (ctx); |
143 | for (i = 0; i < 4; i++) | 143 | for (i = 0; i < 4; i++) |
144 | PUT_32BIT_LE(digest + i * 4, ctx->state[i]); | 144 | PUT_32BIT_LE (digest + i * 4, ctx->state[i]); |
145 | 145 | ||
146 | memset(ctx, 0, sizeof(*ctx)); | 146 | memset (ctx, 0, sizeof(*ctx)); |
147 | } | 147 | } |
148 | 148 | ||
149 | 149 | ||
@@ -151,13 +151,13 @@ MHD_MD5Final(unsigned char digest[MD5_DIGEST_SIZE], struct MD5Context *ctx) | |||
151 | 151 | ||
152 | /* #define F1(x, y, z) (x & y | ~x & z) */ | 152 | /* #define F1(x, y, z) (x & y | ~x & z) */ |
153 | #define F1(x, y, z) (z ^ (x & (y ^ z))) | 153 | #define F1(x, y, z) (z ^ (x & (y ^ z))) |
154 | #define F2(x, y, z) F1(z, x, y) | 154 | #define F2(x, y, z) F1 (z, x, y) |
155 | #define F3(x, y, z) (x ^ y ^ z) | 155 | #define F3(x, y, z) (x ^ y ^ z) |
156 | #define F4(x, y, z) (y ^ (x | ~z)) | 156 | #define F4(x, y, z) (y ^ (x | ~z)) |
157 | 157 | ||
158 | /* This is the central step in the MD5 algorithm. */ | 158 | /* This is the central step in the MD5 algorithm. */ |
159 | #define MD5STEP(f, w, x, y, z, data, s) \ | 159 | #define MD5STEP(f, w, x, y, z, data, s) \ |
160 | ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x ) | 160 | (w += f (x, y, z) + data, w = w << s | w >> (32 - s), w += x) |
161 | 161 | ||
162 | /* | 162 | /* |
163 | * The core of the MD5 algorithm, this alters an existing MD5 hash to | 163 | * The core of the MD5 algorithm, this alters an existing MD5 hash to |
@@ -165,20 +165,20 @@ MHD_MD5Final(unsigned char digest[MD5_DIGEST_SIZE], struct MD5Context *ctx) | |||
165 | * the data and converts bytes into longwords for this routine. | 165 | * the data and converts bytes into longwords for this routine. |
166 | */ | 166 | */ |
167 | void | 167 | void |
168 | MD5Transform(uint32_t state[4], const uint8_t block[MD5_BLOCK_SIZE]) | 168 | MD5Transform (uint32_t state[4], const uint8_t block[MD5_BLOCK_SIZE]) |
169 | { | 169 | { |
170 | uint32_t a, b, c, d, in[MD5_BLOCK_SIZE / 4]; | 170 | uint32_t a, b, c, d, in[MD5_BLOCK_SIZE / 4]; |
171 | 171 | ||
172 | #if _MHD_BYTE_ORDER == _MHD_LITTLE_ENDIAN | 172 | #if _MHD_BYTE_ORDER == _MHD_LITTLE_ENDIAN |
173 | memcpy(in, block, sizeof(in)); | 173 | memcpy (in, block, sizeof(in)); |
174 | #else | 174 | #else |
175 | for (a = 0; a < MD5_BLOCK_SIZE / 4; a++) | 175 | for (a = 0; a < MD5_BLOCK_SIZE / 4; a++) |
176 | { | 176 | { |
177 | in[a] = (uint32_t)( | 177 | in[a] = (uint32_t) ( |
178 | (uint32_t)(block[a * 4 + 0]) | | 178 | (uint32_t) (block[a * 4 + 0]) |
179 | (uint32_t)(block[a * 4 + 1]) << 8 | | 179 | | (uint32_t) (block[a * 4 + 1]) << 8 |
180 | (uint32_t)(block[a * 4 + 2]) << 16 | | 180 | | (uint32_t) (block[a * 4 + 2]) << 16 |
181 | (uint32_t)(block[a * 4 + 3]) << 24); | 181 | | (uint32_t) (block[a * 4 + 3]) << 24); |
182 | } | 182 | } |
183 | #endif | 183 | #endif |
184 | 184 | ||
@@ -187,73 +187,73 @@ MD5Transform(uint32_t state[4], const uint8_t block[MD5_BLOCK_SIZE]) | |||
187 | c = state[2]; | 187 | c = state[2]; |
188 | d = state[3]; | 188 | d = state[3]; |
189 | 189 | ||
190 | MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); | 190 | MD5STEP (F1, a, b, c, d, in[0] + 0xd76aa478, 7); |
191 | MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); | 191 | MD5STEP (F1, d, a, b, c, in[1] + 0xe8c7b756, 12); |
192 | MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); | 192 | MD5STEP (F1, c, d, a, b, in[2] + 0x242070db, 17); |
193 | MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); | 193 | MD5STEP (F1, b, c, d, a, in[3] + 0xc1bdceee, 22); |
194 | MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); | 194 | MD5STEP (F1, a, b, c, d, in[4] + 0xf57c0faf, 7); |
195 | MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); | 195 | MD5STEP (F1, d, a, b, c, in[5] + 0x4787c62a, 12); |
196 | MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); | 196 | MD5STEP (F1, c, d, a, b, in[6] + 0xa8304613, 17); |
197 | MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); | 197 | MD5STEP (F1, b, c, d, a, in[7] + 0xfd469501, 22); |
198 | MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); | 198 | MD5STEP (F1, a, b, c, d, in[8] + 0x698098d8, 7); |
199 | MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); | 199 | MD5STEP (F1, d, a, b, c, in[9] + 0x8b44f7af, 12); |
200 | MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); | 200 | MD5STEP (F1, c, d, a, b, in[10] + 0xffff5bb1, 17); |
201 | MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); | 201 | MD5STEP (F1, b, c, d, a, in[11] + 0x895cd7be, 22); |
202 | MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); | 202 | MD5STEP (F1, a, b, c, d, in[12] + 0x6b901122, 7); |
203 | MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); | 203 | MD5STEP (F1, d, a, b, c, in[13] + 0xfd987193, 12); |
204 | MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); | 204 | MD5STEP (F1, c, d, a, b, in[14] + 0xa679438e, 17); |
205 | MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); | 205 | MD5STEP (F1, b, c, d, a, in[15] + 0x49b40821, 22); |
206 | 206 | ||
207 | MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); | 207 | MD5STEP (F2, a, b, c, d, in[1] + 0xf61e2562, 5); |
208 | MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); | 208 | MD5STEP (F2, d, a, b, c, in[6] + 0xc040b340, 9); |
209 | MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); | 209 | MD5STEP (F2, c, d, a, b, in[11] + 0x265e5a51, 14); |
210 | MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); | 210 | MD5STEP (F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); |
211 | MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); | 211 | MD5STEP (F2, a, b, c, d, in[5] + 0xd62f105d, 5); |
212 | MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); | 212 | MD5STEP (F2, d, a, b, c, in[10] + 0x02441453, 9); |
213 | MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); | 213 | MD5STEP (F2, c, d, a, b, in[15] + 0xd8a1e681, 14); |
214 | MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); | 214 | MD5STEP (F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); |
215 | MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); | 215 | MD5STEP (F2, a, b, c, d, in[9] + 0x21e1cde6, 5); |
216 | MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); | 216 | MD5STEP (F2, d, a, b, c, in[14] + 0xc33707d6, 9); |
217 | MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); | 217 | MD5STEP (F2, c, d, a, b, in[3] + 0xf4d50d87, 14); |
218 | MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); | 218 | MD5STEP (F2, b, c, d, a, in[8] + 0x455a14ed, 20); |
219 | MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); | 219 | MD5STEP (F2, a, b, c, d, in[13] + 0xa9e3e905, 5); |
220 | MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); | 220 | MD5STEP (F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); |
221 | MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); | 221 | MD5STEP (F2, c, d, a, b, in[7] + 0x676f02d9, 14); |
222 | MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); | 222 | MD5STEP (F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); |
223 | 223 | ||
224 | MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); | 224 | MD5STEP (F3, a, b, c, d, in[5] + 0xfffa3942, 4); |
225 | MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); | 225 | MD5STEP (F3, d, a, b, c, in[8] + 0x8771f681, 11); |
226 | MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); | 226 | MD5STEP (F3, c, d, a, b, in[11] + 0x6d9d6122, 16); |
227 | MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); | 227 | MD5STEP (F3, b, c, d, a, in[14] + 0xfde5380c, 23); |
228 | MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); | 228 | MD5STEP (F3, a, b, c, d, in[1] + 0xa4beea44, 4); |
229 | MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); | 229 | MD5STEP (F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); |
230 | MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); | 230 | MD5STEP (F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); |
231 | MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); | 231 | MD5STEP (F3, b, c, d, a, in[10] + 0xbebfbc70, 23); |
232 | MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); | 232 | MD5STEP (F3, a, b, c, d, in[13] + 0x289b7ec6, 4); |
233 | MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); | 233 | MD5STEP (F3, d, a, b, c, in[0] + 0xeaa127fa, 11); |
234 | MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); | 234 | MD5STEP (F3, c, d, a, b, in[3] + 0xd4ef3085, 16); |
235 | MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); | 235 | MD5STEP (F3, b, c, d, a, in[6] + 0x04881d05, 23); |
236 | MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); | 236 | MD5STEP (F3, a, b, c, d, in[9] + 0xd9d4d039, 4); |
237 | MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); | 237 | MD5STEP (F3, d, a, b, c, in[12] + 0xe6db99e5, 11); |
238 | MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); | 238 | MD5STEP (F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); |
239 | MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); | 239 | MD5STEP (F3, b, c, d, a, in[2] + 0xc4ac5665, 23); |
240 | 240 | ||
241 | MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); | 241 | MD5STEP (F4, a, b, c, d, in[0] + 0xf4292244, 6); |
242 | MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); | 242 | MD5STEP (F4, d, a, b, c, in[7] + 0x432aff97, 10); |
243 | MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); | 243 | MD5STEP (F4, c, d, a, b, in[14] + 0xab9423a7, 15); |
244 | MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); | 244 | MD5STEP (F4, b, c, d, a, in[5] + 0xfc93a039, 21); |
245 | MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); | 245 | MD5STEP (F4, a, b, c, d, in[12] + 0x655b59c3, 6); |
246 | MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); | 246 | MD5STEP (F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); |
247 | MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); | 247 | MD5STEP (F4, c, d, a, b, in[10] + 0xffeff47d, 15); |
248 | MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); | 248 | MD5STEP (F4, b, c, d, a, in[1] + 0x85845dd1, 21); |
249 | MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); | 249 | MD5STEP (F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); |
250 | MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); | 250 | MD5STEP (F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); |
251 | MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); | 251 | MD5STEP (F4, c, d, a, b, in[6] + 0xa3014314, 15); |
252 | MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); | 252 | MD5STEP (F4, b, c, d, a, in[13] + 0x4e0811a1, 21); |
253 | MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); | 253 | MD5STEP (F4, a, b, c, d, in[4] + 0xf7537e82, 6); |
254 | MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); | 254 | MD5STEP (F4, d, a, b, c, in[11] + 0xbd3af235, 10); |
255 | MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); | 255 | MD5STEP (F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); |
256 | MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); | 256 | MD5STEP (F4, b, c, d, a, in[9] + 0xeb86d391, 21); |
257 | 257 | ||
258 | state[0] += a; | 258 | state[0] += a; |
259 | state[1] += b; | 259 | state[1] += b; |