X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=md5c.c;h=dcf25d5f42433ea483efb5cfc15dacb362907535;hb=f16d8d23439b5569f0c2e1af22494708b507f277;hp=fd05ae2a8f7fc422b707cee15bf15f55ab2122ff;hpb=9c10d69f36fed4962354b7a38261fe47f154ba2b;p=~andy%2Ffetchmail diff --git a/md5c.c b/md5c.c index fd05ae2a..dcf25d5f 100644 --- a/md5c.c +++ b/md5c.c @@ -17,10 +17,7 @@ #include "config.h" #include "fm_md5.h" -#ifdef HAVE_STRING_H #include /* memmove */ -#endif - #include /* @@ -73,7 +70,7 @@ void MD5Update(struct MD5Context *ctx, const void *buf_, unsigned len) /* Handle any leading odd-sized chunks */ if (t) { - unsigned char *p = (unsigned char *) ctx->in + t; + unsigned char *p = (unsigned char *) ctx->u.in + t; t = 64 - t; if (len < t) { @@ -81,24 +78,24 @@ void MD5Update(struct MD5Context *ctx, const void *buf_, unsigned len) return; } memmove(p, buf, t); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (uint32_t *) ctx->in); + byteReverse(ctx->u.in, 16); + MD5Transform(ctx->buf, ctx->u.in32); buf += t; len -= t; } /* Process data in 64-byte chunks */ while (len >= 64) { - memmove(ctx->in, buf, 64); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (uint32_t *) ctx->in); + memmove(ctx->u.in, buf, 64); + byteReverse(ctx->u.in, 16); + MD5Transform(ctx->buf, ctx->u.in32); buf += 64; len -= 64; } /* Handle any remaining bytes of data. */ - memmove(ctx->in, buf, len); + memmove(ctx->u.in, buf, len); } /* @@ -115,7 +112,7 @@ void MD5Final(void *digest, struct MD5Context *ctx) /* Set the first char of padding to 0x80. This is safe since there is always at least one byte free */ - p = ctx->in + count; + p = ctx->u.in + count; *p++ = 0x80; /* Bytes of padding needed to make 64 bytes */ @@ -125,25 +122,25 @@ void MD5Final(void *digest, struct MD5Context *ctx) if (count < 8) { /* Two lots of padding: Pad the first block to 64 bytes */ memset(p, 0, count); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (uint32_t *) ctx->in); + byteReverse(ctx->u.in, 16); + MD5Transform(ctx->buf, ctx->u.in32); /* Now fill the next block with 56 bytes */ - memset(ctx->in, 0, 56); + memset(ctx->u.in, 0, 56); } else { /* Pad block to 56 bytes */ memset(p, 0, count - 8); } - byteReverse(ctx->in, 14); + byteReverse(ctx->u.in, 14); /* Append length in bits and transform */ - ((uint32_t *) ctx->in)[14] = ctx->bits[0]; - ((uint32_t *) ctx->in)[15] = ctx->bits[1]; + ctx->u.in32[14] = ctx->bits[0]; + ctx->u.in32[15] = ctx->bits[1]; - MD5Transform(ctx->buf, (uint32_t *) ctx->in); + MD5Transform(ctx->buf, ctx->u.in32); byteReverse((unsigned char *) ctx->buf, 4); memmove(digest, ctx->buf, 16); - memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ + memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ } /* The four core functions - F1 is optimized somewhat */