X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fmd5%2Fmd5_one.c;h=b89dec850d2d5b20ed511227cac38a986b2380cd;hp=ab6bb435f90e1e8054b62a4017974a918b7d9943;hb=3bb4736289c49e01cb8d4a683ca3f9505dcba44b;hpb=78414a6a897db42c9bcf06aa21c705811ab33921 diff --git a/crypto/md5/md5_one.c b/crypto/md5/md5_one.c index ab6bb435f9..b89dec850d 100644 --- a/crypto/md5/md5_one.c +++ b/crypto/md5/md5_one.c @@ -57,19 +57,37 @@ */ #include -#include "md5_locl.h" +#include +#include -unsigned char *MD5(d, n, md) -unsigned char *d; -unsigned long n; -unsigned char *md; +#ifdef CHARSET_EBCDIC +#include +#endif + +unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md) { MD5_CTX c; static unsigned char m[MD5_DIGEST_LENGTH]; if (md == NULL) md=m; MD5_Init(&c); +#ifndef CHARSET_EBCDIC MD5_Update(&c,d,n); +#else + { + char temp[1024]; + unsigned long chunk; + + while (n > 0) + { + chunk = (n > sizeof(temp)) ? sizeof(temp) : n; + ebcdic2ascii(temp, d, chunk); + MD5_Update(&c,temp,chunk); + n -= chunk; + d += chunk; + } + } +#endif MD5_Final(md,&c); memset(&c,0,sizeof(c)); /* security consideration */ return(md);