Class: RbNaCl::Hash::Blake2b
- Inherits:
-
Object
- Object
- RbNaCl::Hash::Blake2b
- Extended by:
- Sodium
- Defined in:
- lib/rbnacl/hash/blake2b.rb
Overview
The Blake2b hash function
Blake2b is based on Blake, a SHA3 finalist which was snubbed in favor of Keccak, a much slower hash function but one sufficiently different from SHA2 to let the SHA3 judges panel sleep easy. Back in the real world, it'd be great if we can calculate hashes quickly if possible.
Blake2b provides for up to 64-bit digests and also supports a keyed mode similar to HMAC
Instance Method Summary collapse
-
#digest(message) ⇒ String
Calculate a Blake2b digest.
-
#initialize(opts = {}) ⇒ RbNaCl::Hash::Blake2b
constructor
Create a new Blake2b hash object.
Methods included from Sodium
primitive, sodium_constant, sodium_function, sodium_primitive, sodium_type
Constructor Details
#initialize(opts = {}) ⇒ RbNaCl::Hash::Blake2b
Create a new Blake2b hash object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/rbnacl/hash/blake2b.rb', line 36 def initialize(opts = {}) @key = opts.fetch(:key, nil) if @key @key_size = @key.bytesize raise LengthError, "key too short" if @key_size < KEYBYTES_MIN raise LengthError, "key too long" if @key_size > KEYBYTES_MAX else @key_size = 0 end @digest_size = opts.fetch(:digest_size, BYTES_MAX) raise LengthError, "digest size too short" if @digest_size < BYTES_MIN raise LengthError, "digest size too long" if @digest_size > BYTES_MAX end |
Instance Method Details
#digest(message) ⇒ String
Calculate a Blake2b digest
57 58 59 60 61 |
# File 'lib/rbnacl/hash/blake2b.rb', line 57 def digest() digest = Util.zeros(@digest_size) self.class.generichash_blake2b(digest, @digest_size, , .bytesize, @key, @key_size) || raise(CryptoError, "Hashing failed!") digest end |