class Digest::HMAC
digest/hmac.rb¶ ↑
An experimental implementation of HMAC keyed-hashing algorithm
Overview¶ ↑
CAUTION: Use of this library is discouraged, because this implementation was meant to be experimental but somehow got into the 1.9 series without being noticed. Please use OpenSSL::HMAC in the “openssl” library instead.
Examples¶ ↑
require 'digest/hmac' # one-liner example puts Digest::HMAC.hexdigest("data", "hash key", Digest::SHA1) # rather longer one hmac = Digest::HMAC.new("foo", Digest::RMD160) buf = "" while stream.read(16384, buf) hmac.update(buf) end puts hmac.bubblebabble
Public Class Methods
new(key, digester)
click to toggle source
Creates a Digest::HMAC instance.
# File ext/digest/lib/digest/hmac.rb, line 50 def initialize(key, digester) @md = digester.new block_len = @md.block_length if key.bytesize > block_len key = @md.digest(key) end ipad = Array.new(block_len, 0x36) opad = Array.new(block_len, 0x5c) key.bytes.each_with_index { |c, i| ipad[i] ^= c opad[i] ^= c } @key = key.freeze @ipad = ipad.pack('C*').freeze @opad = opad.pack('C*').freeze @md.update(@ipad) end
Public Instance Methods
block_length → Integer
click to toggle source
Returns the block length in bytes of the hmac.
# File ext/digest/lib/digest/hmac.rb, line 118 def block_length @md.block_length end
digest_length → Integer
click to toggle source
Returns the length in bytes of the hash value of the digest.
# File ext/digest/lib/digest/hmac.rb, line 110 def digest_length @md.digest_length end
inspect → string
click to toggle source
Creates a printable version of the hmac object.
# File ext/digest/lib/digest/hmac.rb, line 126 def inspect sprintf('#<%s: key=%s, digest=%s>', self.class.name, @key.inspect, @md.inspect.sub(/^\#<(.*)>$/) { $1 }); end
reset → hmac
click to toggle source
Resets the hmac to the initial state and returns self.
# File ext/digest/lib/digest/hmac.rb, line 92 def reset @md.reset @md.update(@ipad) self end
update(string) → hmac
click to toggle source
hmac << string → hmac
Updates the hmac using a given string
and returns self.
# File ext/digest/lib/digest/hmac.rb, line 82 def update(text) @md.update(text) self end
Also aliased as: <<