Module: Crypto::GenericHash
- Extended by:
- FFI::Library, Sodium::Utils
- Defined in:
- lib/crypto/generic_hash.rb
Defined Under Namespace
Classes: State
Constant Summary
collapse
- PRIMITIVE =
primitive.freeze
- BYTES_MIN =
bytes_min.freeze
- BYTES_MAX =
bytes_max.freeze
- BYTES =
bytes.freeze
- KEYBYTES_MIN =
keybytes_min.freeze
- KEYBYTES_MAX =
keybytes_max.freeze
- KEYBYTES =
keybytes.freeze
Sodium::Utils::HEXY, Sodium::Utils::ZERO
Class Method Summary
collapse
bin2hex, check_length, get_size, hex2bin, zeros
Class Method Details
.final(state, blake2b) ⇒ Object
87
88
89
90
91
92
93
|
# File 'lib/crypto/generic_hash.rb', line 87
def final(state, blake2b)
if crypto_generichash_final(state, blake2b, blake2b.bytesize) == -1
raise Sodium::CryptoError
end
blake2b
end
|
.generichash(message, hash_size = BYTES, key = nil) ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/crypto/generic_hash.rb', line 47
def generichash(message, hash_size = BYTES, key = nil)
if key
key_len = get_size(key)
else
key_len = 0
end
blake2b = zeros(hash_size)
key.readonly if key.is_a?(Sodium::SecretBuffer)
if crypto_generichash(blake2b, hash_size, message, get_size(message), key, key_len) == -1
raise Sodium::CryptoError
end
blake2b
ensure
key.noaccess if key.is_a?(Sodium::SecretBuffer)
end
|
.init(key = nil, hash_size = BYTES) ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/crypto/generic_hash.rb', line 65
def init(key = nil, hash_size = BYTES)
if key
key_len = get_size(key)
else
key_len = 0
end
state = State.new
key.readonly if key.is_a?(Sodium::SecretBuffer)
if crypto_generichash_init(state, key, key_len, hash_size) == -1
raise Sodium::CryptoError
end
[state, zeros(hash_size)]
ensure
key.noaccess if key.is_a?(Sodium::SecretBuffer)
end
|
.update(state, message) ⇒ Object
83
84
85
|
# File 'lib/crypto/generic_hash.rb', line 83
def update(state, message)
crypto_generichash_update(state, message, get_size(message))
end
|