Class: HMAC::Base
- Inherits:
-
Object
show all
- Defined in:
- lib/hmac.rb
Instance Method Summary
collapse
Constructor Details
#initialize(algorithm, block_size, output_length, key) ⇒ Base
Returns a new instance of Base.
19
20
21
22
23
24
25
26
27
|
# File 'lib/hmac.rb', line 19
def initialize(algorithm, block_size, output_length, key)
@algorithm = algorithm
@block_size = block_size
@output_length = output_length
@status = STATUS_UNDEFINED
@key_xor_ipad = ''
@key_xor_opad = ''
set_key(key) unless key.nil?
end
|
Instance Method Details
#digest ⇒ Object
77
78
79
80
|
# File 'lib/hmac.rb', line 77
def digest
check_status
@md.digest
end
|
#hexdigest ⇒ Object
82
83
84
85
|
# File 'lib/hmac.rb', line 82
def hexdigest
check_status
@md.hexdigest
end
|
#reset_key ⇒ Object
54
55
56
57
58
59
60
|
# File 'lib/hmac.rb', line 54
def reset_key
@key_xor_ipad.gsub!(/./, '?')
@key_xor_opad.gsub!(/./, '?')
@key_xor_ipad[0..-1] = ''
@key_xor_opad[0..-1] = ''
@status = STATUS_UNDEFINED
end
|
#set_key(key) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/hmac.rb', line 38
def set_key(key)
key = @algorithm.digest(key) if key.size > @block_size
key_xor_ipad = "\x36" * @block_size
key_xor_opad = "\x5C" * @block_size
for i in 0 .. key.size - 1
key_xor_ipad[i] ^= key[i]
key_xor_opad[i] ^= key[i]
end
@key_xor_ipad = key_xor_ipad
@key_xor_opad = key_xor_opad
@md = @algorithm.new
@status = STATUS_INITIALIZED
end
|
#to_s ⇒ Object
86
87
88
89
|
# File 'lib/hmac.rb', line 86
def hexdigest
check_status
@md.hexdigest
end
|
#update(text) ⇒ Object
Also known as:
<<
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/hmac.rb', line 62
def update(text)
check_status
md = @algorithm.new
md.update(@key_xor_ipad)
md.update(text)
str = md.digest
md = @algorithm.new
md.update(@key_xor_opad)
md.update(str)
@md = md
end
|