martin 98/05/04 10:10:13
Modified: src/main md5c.c Log: Add EBCDIC conversion to MD5 digestion Revision Changes Path 1.13 +20 -0 apache-1.3/src/main/md5c.c Index: md5c.c =================================================================== RCS file: /home/cvs/apache-1.3/src/main/md5c.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -u -r1.12 -r1.13 --- md5c.c 1998/04/11 12:00:31 1.12 +++ md5c.c 1998/05/04 17:10:12 1.13 @@ -193,6 +193,7 @@ partLen = 64 - idx; /* Transform as many times as possible. */ +#ifndef CHARSET_EBCDIC if (inputLen >= partLen) { memcpy(&context->buffer[idx], input, partLen); MD5Transform(context->state, context->buffer); @@ -207,6 +208,25 @@ /* Buffer remaining input */ memcpy(&context->buffer[idx], &input[i], inputLen - i); +#else /*CHARSET_EBCDIC*/ + if (inputLen >= partLen) { + ebcdic2ascii(&context->buffer[idx], input, partLen); + MD5Transform(context->state, context->buffer); + + for (i = partLen; i + 63 < inputLen; i += 64) { + unsigned char inp_tmp[64]; + ebcdic2ascii(inp_tmp, &input[i], 64); + MD5Transform(context->state, inp_tmp); + } + + idx = 0; + } + else + i = 0; + + /* Buffer remaining input */ + ebcdic2ascii(&context->buffer[idx], &input[i], inputLen - i); +#endif /*CHARSET_EBCDIC*/ } /* MD5 finalization. Ends an MD5 message-digest operation, writing the