In Files

  • digest/lib/digest/hmac.rb

Class/Module Index [+]

Quicksearch

Digest::HMAC

Public Class Methods

new(key, digester) click to toggle source
 
               # File 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

<<(text) click to toggle source
Alias for: update
block_length() click to toggle source
 
               # File digest/lib/digest/hmac.rb, line 101
def block_length
  @md.block_length
end
            
digest_length() click to toggle source
 
               # File digest/lib/digest/hmac.rb, line 97
def digest_length
  @md.digest_length
end
            
initialize_copy(other) click to toggle source
 
               # File digest/lib/digest/hmac.rb, line 73
def initialize_copy(other)
  @md = other.instance_eval { @md.clone }
end
            
inspect() click to toggle source
 
               # File digest/lib/digest/hmac.rb, line 105
def inspect
  sprintf('#<%s: key=%s, digest=%s>', self.class.name, @key.inspect, @md.inspect.sub(/^\#<(.*)>$/) { $1 });
end
            
reset() click to toggle source
 
               # File digest/lib/digest/hmac.rb, line 83
def reset
  @md.reset
  @md.update(@ipad)
  self
end
            
update(text) click to toggle source
 
               # File digest/lib/digest/hmac.rb, line 77
def update(text)
  @md.update(text)
  self
end
            
Also aliased as: <<