diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-12-03 07:36:06 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-12-03 07:36:06 +0000 |
commit | e3519b061a4926ded90227548a4b721c489ebb9b (patch) | |
tree | ca399d58d4fe7c1951ab72b4b50a5cda4d627aeb /ext | |
parent | c536c0a87df3171aecc9ab0cd10379f963a0f409 (diff) | |
download | ruby-e3519b061a4926ded90227548a4b721c489ebb9b.tar.gz ruby-e3519b061a4926ded90227548a4b721c489ebb9b.tar.xz ruby-e3519b061a4926ded90227548a4b721c489ebb9b.zip |
* ext/digest/lib/digest/hmac.rb: Fix problems with update
timing. [Reported by: oss-ruby@technorama.net]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/digest/lib/digest/hmac.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/digest/lib/digest/hmac.rb b/ext/digest/lib/digest/hmac.rb index 0aeb6a8b4..a0cc948a6 100644 --- a/ext/digest/lib/digest/hmac.rb +++ b/ext/digest/lib/digest/hmac.rb @@ -60,6 +60,7 @@ module Digest @key = key.freeze @ipad = ipad.inject('') { |s, c| s << c.chr }.freeze @opad = opad.inject('') { |s, c| s << c.chr }.freeze + @md.update(@ipad) end def initialize_copy(other) @@ -67,17 +68,20 @@ module Digest end def update(text) - # @md is reset when digest() returns - @md.update(@opad + @md.digest(@ipad + text)) + @md.update(text) self end def reset @md.reset + @md.update(@ipad) self end def finish + d = @md.digest! + @md.update(@opad) + @md.update(d) @md.digest! end private :finish |