Mercurial > hg > nginx-quic
comparison src/core/ngx_md5.c @ 3900:4d5754e2f220
style fix: remove trailing spaces
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 23 Apr 2011 13:11:17 +0000 |
parents | b659514a3948 |
children | 38e6f45c5e3d |
comparison
equal
deleted
inserted
replaced
3899:e7cd13b7f759 | 3900:4d5754e2f220 |
---|---|
24 { | 24 { |
25 ctx->a = 0x67452301; | 25 ctx->a = 0x67452301; |
26 ctx->b = 0xefcdab89; | 26 ctx->b = 0xefcdab89; |
27 ctx->c = 0x98badcfe; | 27 ctx->c = 0x98badcfe; |
28 ctx->d = 0x10325476; | 28 ctx->d = 0x10325476; |
29 | 29 |
30 ctx->bytes = 0; | 30 ctx->bytes = 0; |
31 } | 31 } |
32 | 32 |
33 | 33 |
34 void | 34 void |
35 ngx_md5_update(ngx_md5_t *ctx, const u_char *data, size_t size) | 35 ngx_md5_update(ngx_md5_t *ctx, const u_char *data, size_t size) |
36 { | 36 { |
37 size_t used, free; | 37 size_t used, free; |
38 | 38 |
39 used = ctx->bytes & 0x3f; | 39 used = ctx->bytes & 0x3f; |
40 ctx->bytes += size; | 40 ctx->bytes += size; |
41 | 41 |
42 if (used) { | 42 if (used) { |
43 free = 64 - used; | 43 free = 64 - used; |
44 | 44 |
45 if (size < free) { | 45 if (size < free) { |
46 ngx_memcpy(&ctx->buffer[used], data, size); | 46 ngx_memcpy(&ctx->buffer[used], data, size); |
47 return; | 47 return; |
48 } | 48 } |
49 | 49 |
50 ngx_memcpy(&ctx->buffer[used], data, free); | 50 ngx_memcpy(&ctx->buffer[used], data, free); |
51 data = (u_char *)data + free; | 51 data = (u_char *)data + free; |
52 size -= free; | 52 size -= free; |
53 (void) ngx_md5_body(ctx, ctx->buffer, 64); | 53 (void) ngx_md5_body(ctx, ctx->buffer, 64); |
54 } | 54 } |
55 | 55 |
56 if (size >= 64) { | 56 if (size >= 64) { |
57 data = ngx_md5_body(ctx, data, size & ~(size_t) 0x3f); | 57 data = ngx_md5_body(ctx, data, size & ~(size_t) 0x3f); |
58 size &= 0x3f; | 58 size &= 0x3f; |
59 } | 59 } |
60 | 60 |
61 ngx_memcpy(ctx->buffer, data, size); | 61 ngx_memcpy(ctx->buffer, data, size); |
62 } | 62 } |
63 | 63 |
64 | 64 |
65 void | 65 void |
66 ngx_md5_final(u_char result[16], ngx_md5_t *ctx) | 66 ngx_md5_final(u_char result[16], ngx_md5_t *ctx) |
67 { | 67 { |
68 size_t used, free; | 68 size_t used, free; |
69 | 69 |
70 used = ctx->bytes & 0x3f; | 70 used = ctx->bytes & 0x3f; |
71 | 71 |
72 ctx->buffer[used++] = 0x80; | 72 ctx->buffer[used++] = 0x80; |
73 | 73 |
74 free = 64 - used; | 74 free = 64 - used; |
75 | 75 |
76 if (free < 8) { | 76 if (free < 8) { |
77 ngx_memzero(&ctx->buffer[used], free); | 77 ngx_memzero(&ctx->buffer[used], free); |
78 (void) ngx_md5_body(ctx, ctx->buffer, 64); | 78 (void) ngx_md5_body(ctx, ctx->buffer, 64); |
79 used = 0; | 79 used = 0; |
80 free = 64; | 80 free = 64; |
81 } | 81 } |
82 | 82 |
83 ngx_memzero(&ctx->buffer[used], free - 8); | 83 ngx_memzero(&ctx->buffer[used], free - 8); |
84 | 84 |
85 ctx->bytes <<= 3; | 85 ctx->bytes <<= 3; |
86 ctx->buffer[56] = ctx->bytes; | 86 ctx->buffer[56] = ctx->bytes; |
87 ctx->buffer[57] = ctx->bytes >> 8; | 87 ctx->buffer[57] = ctx->bytes >> 8; |
88 ctx->buffer[58] = ctx->bytes >> 16; | 88 ctx->buffer[58] = ctx->bytes >> 16; |
89 ctx->buffer[59] = ctx->bytes >> 24; | 89 ctx->buffer[59] = ctx->bytes >> 24; |
90 ctx->buffer[60] = ctx->bytes >> 32; | 90 ctx->buffer[60] = ctx->bytes >> 32; |
91 ctx->buffer[61] = ctx->bytes >> 40; | 91 ctx->buffer[61] = ctx->bytes >> 40; |
92 ctx->buffer[62] = ctx->bytes >> 48; | 92 ctx->buffer[62] = ctx->bytes >> 48; |
93 ctx->buffer[63] = ctx->bytes >> 56; | 93 ctx->buffer[63] = ctx->bytes >> 56; |
94 | 94 |
95 (void) ngx_md5_body(ctx, ctx->buffer, 64); | 95 (void) ngx_md5_body(ctx, ctx->buffer, 64); |
96 | 96 |
97 result[0] = ctx->a; | 97 result[0] = ctx->a; |
98 result[1] = ctx->a >> 8; | 98 result[1] = ctx->a >> 8; |
99 result[2] = ctx->a >> 16; | 99 result[2] = ctx->a >> 16; |
100 result[3] = ctx->a >> 24; | 100 result[3] = ctx->a >> 24; |
101 result[4] = ctx->b; | 101 result[4] = ctx->b; |
108 result[11] = ctx->c >> 24; | 108 result[11] = ctx->c >> 24; |
109 result[12] = ctx->d; | 109 result[12] = ctx->d; |
110 result[13] = ctx->d >> 8; | 110 result[13] = ctx->d >> 8; |
111 result[14] = ctx->d >> 16; | 111 result[14] = ctx->d >> 16; |
112 result[15] = ctx->d >> 24; | 112 result[15] = ctx->d >> 24; |
113 | 113 |
114 ngx_memzero(ctx, sizeof(*ctx)); | 114 ngx_memzero(ctx, sizeof(*ctx)); |
115 } | 115 } |
116 | 116 |
117 | 117 |
118 /* | 118 /* |
125 | 125 |
126 #define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) | 126 #define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) |
127 #define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y)))) | 127 #define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y)))) |
128 #define H(x, y, z) ((x) ^ (y) ^ (z)) | 128 #define H(x, y, z) ((x) ^ (y) ^ (z)) |
129 #define I(x, y, z) ((y) ^ ((x) | ~(z))) | 129 #define I(x, y, z) ((y) ^ ((x) | ~(z))) |
130 | 130 |
131 /* | 131 /* |
132 * The MD5 transformation for all four rounds. | 132 * The MD5 transformation for all four rounds. |
133 */ | 133 */ |
134 | 134 |
135 #define STEP(f, a, b, c, d, x, t, s) \ | 135 #define STEP(f, a, b, c, d, x, t, s) \ |
136 (a) += f((b), (c), (d)) + (x) + (t); \ | 136 (a) += f((b), (c), (d)) + (x) + (t); \ |
137 (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \ | 137 (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \ |
138 (a) += (b) | 138 (a) += (b) |
139 | 139 |
140 /* | 140 /* |
141 * SET() reads 4 input bytes in little-endian byte order and stores them | 141 * SET() reads 4 input bytes in little-endian byte order and stores them |
142 * in a properly aligned word in host byte order. | 142 * in a properly aligned word in host byte order. |
143 * | 143 * |
144 * The check for little-endian architectures that tolerate unaligned | 144 * The check for little-endian architectures that tolerate unaligned |
177 uint32_t saved_a, saved_b, saved_c, saved_d; | 177 uint32_t saved_a, saved_b, saved_c, saved_d; |
178 const u_char *p; | 178 const u_char *p; |
179 #if !(NGX_HAVE_LITTLE_ENDIAN && NGX_HAVE_NONALIGNED) | 179 #if !(NGX_HAVE_LITTLE_ENDIAN && NGX_HAVE_NONALIGNED) |
180 uint32_t block[16]; | 180 uint32_t block[16]; |
181 #endif | 181 #endif |
182 | 182 |
183 p = data; | 183 p = data; |
184 | 184 |
185 a = ctx->a; | 185 a = ctx->a; |
186 b = ctx->b; | 186 b = ctx->b; |
187 c = ctx->c; | 187 c = ctx->c; |
188 d = ctx->d; | 188 d = ctx->d; |
189 | 189 |
190 do { | 190 do { |
191 saved_a = a; | 191 saved_a = a; |
192 saved_b = b; | 192 saved_b = b; |
193 saved_c = c; | 193 saved_c = c; |
194 saved_d = d; | 194 saved_d = d; |
195 | 195 |
196 /* Round 1 */ | 196 /* Round 1 */ |
197 | 197 |
198 STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7); | 198 STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7); |
199 STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12); | 199 STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12); |
200 STEP(F, c, d, a, b, SET(2), 0x242070db, 17); | 200 STEP(F, c, d, a, b, SET(2), 0x242070db, 17); |
209 STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22); | 209 STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22); |
210 STEP(F, a, b, c, d, SET(12), 0x6b901122, 7); | 210 STEP(F, a, b, c, d, SET(12), 0x6b901122, 7); |
211 STEP(F, d, a, b, c, SET(13), 0xfd987193, 12); | 211 STEP(F, d, a, b, c, SET(13), 0xfd987193, 12); |
212 STEP(F, c, d, a, b, SET(14), 0xa679438e, 17); | 212 STEP(F, c, d, a, b, SET(14), 0xa679438e, 17); |
213 STEP(F, b, c, d, a, SET(15), 0x49b40821, 22); | 213 STEP(F, b, c, d, a, SET(15), 0x49b40821, 22); |
214 | 214 |
215 /* Round 2 */ | 215 /* Round 2 */ |
216 | 216 |
217 STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5); | 217 STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5); |
218 STEP(G, d, a, b, c, GET(6), 0xc040b340, 9); | 218 STEP(G, d, a, b, c, GET(6), 0xc040b340, 9); |
219 STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14); | 219 STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14); |
228 STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20); | 228 STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20); |
229 STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5); | 229 STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5); |
230 STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9); | 230 STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9); |
231 STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14); | 231 STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14); |
232 STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20); | 232 STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20); |
233 | 233 |
234 /* Round 3 */ | 234 /* Round 3 */ |
235 | 235 |
236 STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4); | 236 STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4); |
237 STEP(H, d, a, b, c, GET(8), 0x8771f681, 11); | 237 STEP(H, d, a, b, c, GET(8), 0x8771f681, 11); |
238 STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16); | 238 STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16); |
247 STEP(H, b, c, d, a, GET(6), 0x04881d05, 23); | 247 STEP(H, b, c, d, a, GET(6), 0x04881d05, 23); |
248 STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4); | 248 STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4); |
249 STEP(H, d, a, b, c, GET(12), 0xe6db99e5, 11); | 249 STEP(H, d, a, b, c, GET(12), 0xe6db99e5, 11); |
250 STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16); | 250 STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16); |
251 STEP(H, b, c, d, a, GET(2), 0xc4ac5665, 23); | 251 STEP(H, b, c, d, a, GET(2), 0xc4ac5665, 23); |
252 | 252 |
253 /* Round 4 */ | 253 /* Round 4 */ |
254 | 254 |
255 STEP(I, a, b, c, d, GET(0), 0xf4292244, 6); | 255 STEP(I, a, b, c, d, GET(0), 0xf4292244, 6); |
256 STEP(I, d, a, b, c, GET(7), 0x432aff97, 10); | 256 STEP(I, d, a, b, c, GET(7), 0x432aff97, 10); |
257 STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15); | 257 STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15); |
266 STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21); | 266 STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21); |
267 STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6); | 267 STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6); |
268 STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10); | 268 STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10); |
269 STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15); | 269 STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15); |
270 STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21); | 270 STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21); |
271 | 271 |
272 a += saved_a; | 272 a += saved_a; |
273 b += saved_b; | 273 b += saved_b; |
274 c += saved_c; | 274 c += saved_c; |
275 d += saved_d; | 275 d += saved_d; |
276 | 276 |
277 p += 64; | 277 p += 64; |
278 | 278 |
279 } while (size -= 64); | 279 } while (size -= 64); |
280 | 280 |
281 ctx->a = a; | 281 ctx->a = a; |
282 ctx->b = b; | 282 ctx->b = b; |
283 ctx->c = c; | 283 ctx->c = c; |
284 ctx->d = d; | 284 ctx->d = d; |
285 | 285 |
286 return p; | 286 return p; |
287 } | 287 } |
288 | 288 |
289 #endif | 289 #endif |