diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-06-09 09:21:37 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-06-09 09:21:37 +0000 |
commit | c1241cd2ed230573bb81b52173d6cd2bd91176f2 (patch) | |
tree | caa3babd9a35b930814fffa9c8ebb3366d46dae8 /ext/md5 | |
parent | 17ae11ca25d210da8c7deeeee0f03fd1a09ee0b2 (diff) |
thread bugs
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/md5')
-rw-r--r-- | ext/md5/md5init.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/ext/md5/md5init.c b/ext/md5/md5init.c index e95e135812..e63258f3f1 100644 --- a/ext/md5/md5init.c +++ b/ext/md5/md5init.c @@ -29,8 +29,9 @@ md5_update(obj, str) Data_Get_Struct(obj, MD5_CTX, md5); MD5Update(md5, str->ptr, str->len); - return Qnil; + return obj; } + static VALUE md5_digest(obj) VALUE obj; @@ -46,6 +47,26 @@ md5_digest(obj) } static VALUE +md5_hexdigest(obj) + VALUE obj; +{ + MD5_CTX *md5, ctx; + unsigned char digest[16]; + char buf[35]; + char *p = buf; + int i; + + Data_Get_Struct(obj, MD5_CTX, md5); + ctx = *md5; + MD5Final(digest, &ctx); + + for (i=0; i<16; i++) { + sprintf(buf+i*2, "%x", digest[i]); + } + return rb_str_new(buf, 32); +} + +static VALUE md5_clone(obj) VALUE obj; { @@ -90,5 +111,6 @@ Init_md5() rb_define_method(cMD5, "update", md5_update, 1); rb_define_method(cMD5, "digest", md5_digest, 0); + rb_define_method(cMD5, "hexdigest", md5_hexdigest, 0); rb_define_method(cMD5, "clone", md5_clone, 0); } |