/[gnats]/gnats/libiberty/md5.c
ViewVC logotype

Diff of /gnats/libiberty/md5.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by pdm, Mon Dec 10 23:03:26 2001 UTC revision 1.2 by chewie, Sat Nov 13 05:14:17 2004 UTC
# Line 65  void Line 65  void
65  md5_init_ctx (ctx)  md5_init_ctx (ctx)
66       struct md5_ctx *ctx;       struct md5_ctx *ctx;
67  {  {
68    ctx->A = 0x67452301;    ctx->A = (md5_uint32) 0x67452301;
69    ctx->B = 0xefcdab89;    ctx->B = (md5_uint32) 0xefcdab89;
70    ctx->C = 0x98badcfe;    ctx->C = (md5_uint32) 0x98badcfe;
71    ctx->D = 0x10325476;    ctx->D = (md5_uint32) 0x10325476;
72    
73    ctx->total[0] = ctx->total[1] = 0;    ctx->total[0] = ctx->total[1] = 0;
74    ctx->buflen = 0;    ctx->buflen = 0;
# Line 229  md5_process_bytes (buffer, len, ctx) Line 229  md5_process_bytes (buffer, len, ctx)
229            ctx->buflen = (left_over + add) & 63;            ctx->buflen = (left_over + add) & 63;
230          }          }
231    
232        buffer = (const char *) buffer + add;        buffer = (const void *) ((const char *) buffer + add);
233        len -= add;        len -= add;
234      }      }
235    
# Line 237  md5_process_bytes (buffer, len, ctx) Line 237  md5_process_bytes (buffer, len, ctx)
237    if (len > 64)    if (len > 64)
238      {      {
239        md5_process_block (buffer, len & ~63, ctx);        md5_process_block (buffer, len & ~63, ctx);
240        buffer = (const char *) buffer + (len & ~63);        buffer = (const void *) ((const char *) buffer + (len & ~63));
241        len &= 63;        len &= 63;
242      }      }
243    
# Line 269  md5_process_block (buffer, len, ctx) Line 269  md5_process_block (buffer, len, ctx)
269       struct md5_ctx *ctx;       struct md5_ctx *ctx;
270  {  {
271    md5_uint32 correct_words[16];    md5_uint32 correct_words[16];
272    const md5_uint32 *words = buffer;    const md5_uint32 *words = (const md5_uint32 *) buffer;
273    size_t nwords = len / sizeof (md5_uint32);    size_t nwords = len / sizeof (md5_uint32);
274    const md5_uint32 *endp = words + nwords;    const md5_uint32 *endp = words + nwords;
275    md5_uint32 A = ctx->A;    md5_uint32 A = ctx->A;
# Line 322  md5_process_block (buffer, len, ctx) Line 322  md5_process_block (buffer, len, ctx)
322         */         */
323    
324        /* Round 1.  */        /* Round 1.  */
325        OP (A, B, C, D,  7, 0xd76aa478);        OP (A, B, C, D,  7, (md5_uint32) 0xd76aa478);
326        OP (D, A, B, C, 12, 0xe8c7b756);        OP (D, A, B, C, 12, (md5_uint32) 0xe8c7b756);
327        OP (C, D, A, B, 17, 0x242070db);        OP (C, D, A, B, 17, (md5_uint32) 0x242070db);
328        OP (B, C, D, A, 22, 0xc1bdceee);        OP (B, C, D, A, 22, (md5_uint32) 0xc1bdceee);
329        OP (A, B, C, D,  7, 0xf57c0faf);        OP (A, B, C, D,  7, (md5_uint32) 0xf57c0faf);
330        OP (D, A, B, C, 12, 0x4787c62a);        OP (D, A, B, C, 12, (md5_uint32) 0x4787c62a);
331        OP (C, D, A, B, 17, 0xa8304613);        OP (C, D, A, B, 17, (md5_uint32) 0xa8304613);
332        OP (B, C, D, A, 22, 0xfd469501);        OP (B, C, D, A, 22, (md5_uint32) 0xfd469501);
333        OP (A, B, C, D,  7, 0x698098d8);        OP (A, B, C, D,  7, (md5_uint32) 0x698098d8);
334        OP (D, A, B, C, 12, 0x8b44f7af);        OP (D, A, B, C, 12, (md5_uint32) 0x8b44f7af);
335        OP (C, D, A, B, 17, 0xffff5bb1);        OP (C, D, A, B, 17, (md5_uint32) 0xffff5bb1);
336        OP (B, C, D, A, 22, 0x895cd7be);        OP (B, C, D, A, 22, (md5_uint32) 0x895cd7be);
337        OP (A, B, C, D,  7, 0x6b901122);        OP (A, B, C, D,  7, (md5_uint32) 0x6b901122);
338        OP (D, A, B, C, 12, 0xfd987193);        OP (D, A, B, C, 12, (md5_uint32) 0xfd987193);
339        OP (C, D, A, B, 17, 0xa679438e);        OP (C, D, A, B, 17, (md5_uint32) 0xa679438e);
340        OP (B, C, D, A, 22, 0x49b40821);        OP (B, C, D, A, 22, (md5_uint32) 0x49b40821);
341    
342        /* For the second to fourth round we have the possibly swapped words        /* For the second to fourth round we have the possibly swapped words
343           in CORRECT_WORDS.  Redefine the macro to take an additional first           in CORRECT_WORDS.  Redefine the macro to take an additional first
344           argument specifying the function to use.  */           argument specifying the function to use.  */
345  #undef OP  #undef OP
346  #define OP(f, a, b, c, d, k, s, T)                                      \  #define OP(a, b, c, d, k, s, T)                                         \
347        do                                                                \        do                                                                \
348          {                                                               \          {                                                               \
349            a += f (b, c, d) + correct_words[k] + T;                      \            a += FX (b, c, d) + correct_words[k] + T;                     \
350            CYCLIC (a, s);                                                \            CYCLIC (a, s);                                                \
351            a += b;                                                       \            a += b;                                                       \
352          }                                                               \          }                                                               \
353        while (0)        while (0)
354    
355    #define FX(b, c, d) FG (b, c, d)
356    
357        /* Round 2.  */        /* Round 2.  */
358        OP (FG, A, B, C, D,  1,  5, 0xf61e2562);        OP (A, B, C, D,  1,  5, (md5_uint32) 0xf61e2562);
359        OP (FG, D, A, B, C,  6,  9, 0xc040b340);        OP (D, A, B, C,  6,  9, (md5_uint32) 0xc040b340);
360        OP (FG, C, D, A, B, 11, 14, 0x265e5a51);        OP (C, D, A, B, 11, 14, (md5_uint32) 0x265e5a51);
361        OP (FG, B, C, D, A,  0, 20, 0xe9b6c7aa);        OP (B, C, D, A,  0, 20, (md5_uint32) 0xe9b6c7aa);
362        OP (FG, A, B, C, D,  5,  5, 0xd62f105d);        OP (A, B, C, D,  5,  5, (md5_uint32) 0xd62f105d);
363        OP (FG, D, A, B, C, 10,  9, 0x02441453);        OP (D, A, B, C, 10,  9, (md5_uint32) 0x02441453);
364        OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);        OP (C, D, A, B, 15, 14, (md5_uint32) 0xd8a1e681);
365        OP (FG, B, C, D, A,  4, 20, 0xe7d3fbc8);        OP (B, C, D, A,  4, 20, (md5_uint32) 0xe7d3fbc8);
366        OP (FG, A, B, C, D,  9,  5, 0x21e1cde6);        OP (A, B, C, D,  9,  5, (md5_uint32) 0x21e1cde6);
367        OP (FG, D, A, B, C, 14,  9, 0xc33707d6);        OP (D, A, B, C, 14,  9, (md5_uint32) 0xc33707d6);
368        OP (FG, C, D, A, B,  3, 14, 0xf4d50d87);        OP (C, D, A, B,  3, 14, (md5_uint32) 0xf4d50d87);
369        OP (FG, B, C, D, A,  8, 20, 0x455a14ed);        OP (B, C, D, A,  8, 20, (md5_uint32) 0x455a14ed);
370        OP (FG, A, B, C, D, 13,  5, 0xa9e3e905);        OP (A, B, C, D, 13,  5, (md5_uint32) 0xa9e3e905);
371        OP (FG, D, A, B, C,  2,  9, 0xfcefa3f8);        OP (D, A, B, C,  2,  9, (md5_uint32) 0xfcefa3f8);
372        OP (FG, C, D, A, B,  7, 14, 0x676f02d9);        OP (C, D, A, B,  7, 14, (md5_uint32) 0x676f02d9);
373        OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);        OP (B, C, D, A, 12, 20, (md5_uint32) 0x8d2a4c8a);
374    
375    #undef FX
376    #define FX(b, c, d) FH (b, c, d)
377    
378        /* Round 3.  */        /* Round 3.  */
379        OP (FH, A, B, C, D,  5,  4, 0xfffa3942);        OP (A, B, C, D,  5,  4, (md5_uint32) 0xfffa3942);
380        OP (FH, D, A, B, C,  8, 11, 0x8771f681);        OP (D, A, B, C,  8, 11, (md5_uint32) 0x8771f681);
381        OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);        OP (C, D, A, B, 11, 16, (md5_uint32) 0x6d9d6122);
382        OP (FH, B, C, D, A, 14, 23, 0xfde5380c);        OP (B, C, D, A, 14, 23, (md5_uint32) 0xfde5380c);
383        OP (FH, A, B, C, D,  1,  4, 0xa4beea44);        OP (A, B, C, D,  1,  4, (md5_uint32) 0xa4beea44);
384        OP (FH, D, A, B, C,  4, 11, 0x4bdecfa9);        OP (D, A, B, C,  4, 11, (md5_uint32) 0x4bdecfa9);
385        OP (FH, C, D, A, B,  7, 16, 0xf6bb4b60);        OP (C, D, A, B,  7, 16, (md5_uint32) 0xf6bb4b60);
386        OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);        OP (B, C, D, A, 10, 23, (md5_uint32) 0xbebfbc70);
387        OP (FH, A, B, C, D, 13,  4, 0x289b7ec6);        OP (A, B, C, D, 13,  4, (md5_uint32) 0x289b7ec6);
388        OP (FH, D, A, B, C,  0, 11, 0xeaa127fa);        OP (D, A, B, C,  0, 11, (md5_uint32) 0xeaa127fa);
389        OP (FH, C, D, A, B,  3, 16, 0xd4ef3085);        OP (C, D, A, B,  3, 16, (md5_uint32) 0xd4ef3085);
390        OP (FH, B, C, D, A,  6, 23, 0x04881d05);        OP (B, C, D, A,  6, 23, (md5_uint32) 0x04881d05);
391        OP (FH, A, B, C, D,  9,  4, 0xd9d4d039);        OP (A, B, C, D,  9,  4, (md5_uint32) 0xd9d4d039);
392        OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);        OP (D, A, B, C, 12, 11, (md5_uint32) 0xe6db99e5);
393        OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);        OP (C, D, A, B, 15, 16, (md5_uint32) 0x1fa27cf8);
394        OP (FH, B, C, D, A,  2, 23, 0xc4ac5665);        OP (B, C, D, A,  2, 23, (md5_uint32) 0xc4ac5665);
395    
396    #undef FX
397    #define FX(b, c, d) FI (b, c, d)
398    
399        /* Round 4.  */        /* Round 4.  */
400        OP (FI, A, B, C, D,  0,  6, 0xf4292244);        OP (A, B, C, D,  0,  6, (md5_uint32) 0xf4292244);
401        OP (FI, D, A, B, C,  7, 10, 0x432aff97);        OP (D, A, B, C,  7, 10, (md5_uint32) 0x432aff97);
402        OP (FI, C, D, A, B, 14, 15, 0xab9423a7);        OP (C, D, A, B, 14, 15, (md5_uint32) 0xab9423a7);
403        OP (FI, B, C, D, A,  5, 21, 0xfc93a039);        OP (B, C, D, A,  5, 21, (md5_uint32) 0xfc93a039);
404        OP (FI, A, B, C, D, 12,  6, 0x655b59c3);        OP (A, B, C, D, 12,  6, (md5_uint32) 0x655b59c3);
405        OP (FI, D, A, B, C,  3, 10, 0x8f0ccc92);        OP (D, A, B, C,  3, 10, (md5_uint32) 0x8f0ccc92);
406        OP (FI, C, D, A, B, 10, 15, 0xffeff47d);        OP (C, D, A, B, 10, 15, (md5_uint32) 0xffeff47d);
407        OP (FI, B, C, D, A,  1, 21, 0x85845dd1);        OP (B, C, D, A,  1, 21, (md5_uint32) 0x85845dd1);
408        OP (FI, A, B, C, D,  8,  6, 0x6fa87e4f);        OP (A, B, C, D,  8,  6, (md5_uint32) 0x6fa87e4f);
409        OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);        OP (D, A, B, C, 15, 10, (md5_uint32) 0xfe2ce6e0);
410        OP (FI, C, D, A, B,  6, 15, 0xa3014314);        OP (C, D, A, B,  6, 15, (md5_uint32) 0xa3014314);
411        OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);        OP (B, C, D, A, 13, 21, (md5_uint32) 0x4e0811a1);
412        OP (FI, A, B, C, D,  4,  6, 0xf7537e82);        OP (A, B, C, D,  4,  6, (md5_uint32) 0xf7537e82);
413        OP (FI, D, A, B, C, 11, 10, 0xbd3af235);        OP (D, A, B, C, 11, 10, (md5_uint32) 0xbd3af235);
414        OP (FI, C, D, A, B,  2, 15, 0x2ad7d2bb);        OP (C, D, A, B,  2, 15, (md5_uint32) 0x2ad7d2bb);
415        OP (FI, B, C, D, A,  9, 21, 0xeb86d391);        OP (B, C, D, A,  9, 21, (md5_uint32) 0xeb86d391);
416    
417        /* Add the starting values of the context.  */        /* Add the starting values of the context.  */
418        A += A_save;        A += A_save;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26