summaryrefslogtreecommitdiff
path: root/md5.c
diff options
context:
space:
mode:
Diffstat (limited to 'md5.c')
-rw-r--r--[-rwxr-xr-x]md5.c69
1 files changed, 38 insertions, 31 deletions
diff --git a/md5.c b/md5.c
index 874d2c1..2e348e6 100755..100644
--- a/md5.c
+++ b/md5.c
@@ -33,34 +33,37 @@ void md5_update(struct md5_context *ctx, unsigned char const *buf, unsigned len)
// update bit count
t = ctx->bits[0];
if((ctx->bits[0] = (t + ((unsigned)len << 3)) & 0xffffffff) < t)
- ctx->bits[1]++; // carry
+ ctx->bits[1]++; // carry
ctx->bits[1] += len >> 29;
t = (t >> 3) & 0x3f;
// use leading data to top up the buffer
- if(t) {
- unsigned char *p = ctx->in + t;
-
- t = 64-t;
- if (len < t) {
- memcpy(p, buf, len);
- return;
- }
- memcpy(p, buf, t);
- md5_transform(ctx->buf, ctx->in);
- buf += t;
- len -= t;
+ if(t)
+ {
+ unsigned char *p = ctx->in + t;
+
+ t = 64-t;
+ if (len < t)
+ {
+ memcpy(p, buf, len);
+ return;
+ }
+ memcpy(p, buf, t);
+ md5_transform(ctx->buf, ctx->in);
+ buf += t;
+ len -= t;
}
// following 64-byte chunks
- while(len >= 64) {
- memcpy(ctx->in, buf, 64);
- md5_transform(ctx->buf, ctx->in);
- buf += 64;
- len -= 64;
+ while(len >= 64)
+ {
+ memcpy(ctx->in, buf, 64);
+ md5_transform(ctx->buf, ctx->in);
+ buf += 64;
+ len -= 64;
}
// save rest of bytes for later
@@ -84,14 +87,17 @@ void md5_final(unsigned char digest[16], struct md5_context *ctx)
count = 64 - 1 - count;
// Pad out to 56 mod 64
- if(count < 8) {
- // we need to finish a whole block before padding
- memset(p, 0, count);
- md5_transform(ctx->buf, ctx->in);
- memset(ctx->in, 0, 56);
- } else {
- // just pad to 56 bytes
- memset(p, 0, count-8);
+ if(count < 8)
+ {
+ // we need to finish a whole block before padding
+ memset(p, 0, count);
+ md5_transform(ctx->buf, ctx->in);
+ memset(ctx->in, 0, 56);
+ }
+ else
+ {
+ // just pad to 56 bytes
+ memset(p, 0, count-8);
}
// append length & final transform
@@ -121,7 +127,7 @@ void md5_transform(unsigned buf[4], const unsigned char inraw[64])
int i;
for (i = 0; i < 16; ++i)
- in[i] = getu32 (inraw + 4 * i);
+ in[i] = getu32 (inraw + 4 * i);
a = buf[0];
b = buf[1];
@@ -210,15 +216,16 @@ void md5_ascii(char *result, unsigned char const *buf, unsigned len)
int i;
if(len==0)
- len = strlen((char *)buf);
+ len = strlen((char *)buf);
md5_init(&md5);
md5_update(&md5, buf, len);
md5_final(hash, &md5);
- for(i=0;i<16;i++) {
- result[i*2] = hex[(hash[i]>>4)&0xF];
- result[i*2+1] = hex[hash[i]&0x0F];
+ for(i=0; i<16; i++)
+ {
+ result[i*2] = hex[(hash[i]>>4)&0xF];
+ result[i*2+1] = hex[hash[i]&0x0F];
}
result[32] = 0;
}