X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2FMD5.c;h=c12b7615ec5d3f2a0ed744e833d8ca609ed40a51;hp=268e708ebd88554ebe4155c6c83602b2f0173fc6;hb=bf04757cd94e94c1f67fa3d2a4e3e59fa5bce0c0;hpb=0fb1d9db685c7b251da0492a6c80cea2e6f1150a diff --git a/lib/MD5.c b/lib/MD5.c index 268e708..c12b761 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; @@ -384,8 +408,7 @@ static const u_int8_t md5_paddat[MD5_BUFLEN] = { static void md5_calc(u_int8_t *, md5_ctxt *); -static void md5_init(ctxt) - md5_ctxt *ctxt; +static void md5_init(md5_ctxt *ctxt) { ctxt->md5_n = 0; ctxt->md5_i = 0; @@ -396,10 +419,7 @@ static void md5_init(ctxt) bzero(ctxt->md5_buf, sizeof(ctxt->md5_buf)); } -static void md5_loop(ctxt, input, len) - md5_ctxt *ctxt; - const u_int8_t *input; - u_int len; /* number of bytes */ +static void md5_loop(md5_ctxt *ctxt, const u_int8_t *input, u_int len) { u_int gap, i; @@ -424,8 +444,7 @@ static void md5_loop(ctxt, input, len) } } -static void md5_pad(ctxt) - md5_ctxt *ctxt; +static void md5_pad(md5_ctxt *ctxt) { u_int gap; @@ -463,9 +482,7 @@ static void md5_pad(ctxt) md5_calc(ctxt->md5_buf, ctxt); } -static void md5_result(digest, ctxt) - u_int8_t *digest; - md5_ctxt *ctxt; +static void md5_result(u_int8_t *digest, md5_ctxt *ctxt) { /* 4 byte words */ #if BYTE_ORDER == LITTLE_ENDIAN @@ -483,13 +500,7 @@ 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; +static void md5_calc(u_int8_t *b64, md5_ctxt *ctxt) { u_int32_t A = ctxt->md5_sta; u_int32_t B = ctxt->md5_stb; @@ -499,6 +510,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;