diff options
Diffstat (limited to 'ext/digest/md5/md5.c')
| -rw-r--r-- | ext/digest/md5/md5.c | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/ext/digest/md5/md5.c b/ext/digest/md5/md5.c index 6b61f031c4..3a7fe2cdad 100644 --- a/ext/digest/md5/md5.c +++ b/ext/digest/md5/md5.c @@ -41,6 +41,12 @@ 1999-05-03 lpd Original version. */ +/* + This code was modified for use in Ruby. + + - Akinori MUSHA <knu@idaemons.org> + */ + /*$OrigId: md5c.c,v 1.2 2001/03/26 08:57:14 matz Exp $ */ /*$RoughId: md5.c,v 1.2 2001/07/13 19:48:41 knu Exp $ */ /*$Id$ */ @@ -54,7 +60,8 @@ * A.5 of RFC 1321, reproduced below. */ #include <string.h> -main() +int +main(void) { static const char *const test[7*2] = { "", "d41d8cd98f00b204e9800998ecf8427e", @@ -94,7 +101,8 @@ main() */ #ifdef COMPUTE_T_VALUES #include <math.h> -main() +int +main(void) { int i; for (i = 1; i <= 64; ++i) { @@ -217,7 +225,7 @@ md5_process(MD5_CTX *pms, const uint8_t *data /*[64]*/) uint32_t xbuf[16]; const uint32_t *X; - if (!((data - (const uint8_t *)0) & 3)) { + if (!(((uintptr_t)data) & 3)) { /* data are properly aligned */ X = (const uint32_t *)data; } else { @@ -342,7 +350,7 @@ md5_process(MD5_CTX *pms, const uint8_t *data /*[64]*/) pms->state[3] += d; } -void +int MD5_Init(MD5_CTX *pms) { pms->count[0] = pms->count[1] = 0; @@ -350,6 +358,7 @@ MD5_Init(MD5_CTX *pms) pms->state[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; pms->state[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; pms->state[3] = 0x10325476; + return 1; } void @@ -360,7 +369,7 @@ MD5_Update(MD5_CTX *pms, const uint8_t *data, size_t nbytes) size_t offset = (pms->count[0] >> 3) & 63; uint32_t nbits = (uint32_t)(nbytes << 3); - if (nbytes <= 0) + if (nbytes == 0) return; /* Update the message length. */ @@ -390,8 +399,8 @@ MD5_Update(MD5_CTX *pms, const uint8_t *data, size_t nbytes) memcpy(pms->buffer, p, left); } -void -MD5_Final(uint8_t *digest, MD5_CTX *pms) +int +MD5_Finish(MD5_CTX *pms, uint8_t *digest) { static const uint8_t pad[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -411,22 +420,5 @@ MD5_Final(uint8_t *digest, MD5_CTX *pms) MD5_Update(pms, data, 8); for (i = 0; i < 16; ++i) digest[i] = (uint8_t)(pms->state[i >> 2] >> ((i & 3) << 3)); -} - -void -MD5_End(MD5_CTX *pctx, uint8_t *hexdigest) -{ - unsigned char digest[16]; - size_t i; - - MD5_Final(digest, pctx); - - for (i = 0; i < 16; i++) - sprintf(hexdigest + i * 2, "%02x", digest[i]); -} - -int MD5_Equal(MD5_CTX* pctx1, MD5_CTX* pctx2) { - return memcmp(pctx1->count, pctx2->count, sizeof(pctx1->count)) == 0 - && memcmp(pctx1->state, pctx2->state, sizeof(pctx1->state)) == 0 - && memcmp(pctx1->buffer, pctx2->buffer, sizeof(pctx1->buffer)) == 0; + return 1; } |
