From cd59a9a29a207ac64158fb383ba94be0370ae220 Mon Sep 17 00:00:00 2001 From: kramm Date: Tue, 22 Feb 2005 20:01:59 +0000 Subject: [PATCH] md5_calc is now reentrant. --- lib/MD5.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/lib/MD5.c b/lib/MD5.c index 268e708..d1544ab 100644 --- a/lib/MD5.c +++ b/lib/MD5.c @@ -39,6 +39,20 @@ #define MD5_BUFLEN 64 +#ifndef LITTLE_ENDIAN +#define LITTLE_ENDIAN 1 +#endif +#ifndef BIG_ENDIAN +#define BIG_ENDIAN 2 +#endif +#ifndef BYTE_ORDER +#ifdef WORDS_BIGENDIAN +#define BYTE_ORDER BIG_ENDIAN +#else +#define BYTE_ORDER LITTLE_ENDIAN +#endif +#endif + typedef long unsigned int u_int32_t; typedef long long unsigned int u_int64_t; typedef unsigned char u_int8_t; @@ -151,6 +165,16 @@ _crypt_to64(char *s, u_long v, int n) } } +void hash_md5(const unsigned char*buf, int len, unsigned char*dest) +{ + u_char final[MD5_SIZE]; + + MD5_CTX ctx; + MD5Init(&ctx); + MD5Update(&ctx, buf, len); + MD5Final(dest, &ctx); +} + char * crypt_md5(const char *pw, const char *salt) { MD5_CTX ctx,ctx1; @@ -483,10 +507,6 @@ static void md5_result(digest, ctxt) #endif } -#if BYTE_ORDER == BIG_ENDIAN -u_int32_t X[16]; -#endif - static void md5_calc(b64, ctxt) u_int8_t *b64; md5_ctxt *ctxt; @@ -499,6 +519,7 @@ static void md5_calc(b64, ctxt) u_int32_t *X = (u_int32_t *)b64; #endif #if BYTE_ORDER == BIG_ENDIAN + u_int32_t X[16]; /* 4 byte words */ /* what a brute force but fast! */ u_int8_t *y = (u_int8_t *)X; -- 1.7.10.4