Class: Digest::HMAC
- Inherits:
-
Class
- Object
- Class
- Digest::HMAC
- Defined in:
- lib/compat/digest/hmac.rb
Instance Method Summary collapse
- #block_length ⇒ Object
- #digest_length ⇒ Object
-
#initialize(key, digester) ⇒ HMAC
constructor
A new instance of HMAC.
- #initialize_copy(other) ⇒ Object
- #inspect ⇒ Object
- #reset ⇒ Object
- #update(text) ⇒ Object (also: #<<)
Constructor Details
#initialize(key, digester) ⇒ HMAC
Returns a new instance of HMAC.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/compat/digest/hmac.rb', line 53 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).fill(0x36) opad = Array.new(block_len).fill(0x5c) key.bytes.each_with_index { |c, i| ipad[i] ^= c opad[i] ^= c } @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 |
Instance Method Details
#block_length ⇒ Object
104 105 106 |
# File 'lib/compat/digest/hmac.rb', line 104 def block_length @md.block_length end |
#digest_length ⇒ Object
100 101 102 |
# File 'lib/compat/digest/hmac.rb', line 100 def digest_length @md.digest_length end |
#initialize_copy(other) ⇒ Object
76 77 78 |
# File 'lib/compat/digest/hmac.rb', line 76 def initialize_copy(other) @md = other.instance_eval { @md.clone } end |
#inspect ⇒ Object
108 109 110 |
# File 'lib/compat/digest/hmac.rb', line 108 def inspect sprintf('#<%s: key=%s, digest=%s>', self.class.name, @key.inspect, @md.inspect.sub(/^\#<(.*)>$/) { $1 }); end |
#reset ⇒ Object
86 87 88 89 90 |
# File 'lib/compat/digest/hmac.rb', line 86 def reset @md.reset @md.update(@ipad) self end |
#update(text) ⇒ Object Also known as: <<
80 81 82 83 |
# File 'lib/compat/digest/hmac.rb', line 80 def update(text) @md.update(text) self end |