lib/rbnacl/hash/blake2b.rb in rbnacl-5.0.0 vs lib/rbnacl/hash/blake2b.rb in rbnacl-6.0.0
- old
+ new
@@ -24,23 +24,23 @@
sodium_constant :SALTBYTES
sodium_constant :PERSONALBYTES
sodium_function :generichash_blake2b,
:crypto_generichash_blake2b_salt_personal,
- [:pointer, :size_t, :pointer, :ulong_long, :pointer, :size_t, :pointer, :pointer]
+ %i[pointer size_t pointer ulong_long pointer size_t pointer pointer]
sodium_function :generichash_blake2b_init,
:crypto_generichash_blake2b_init_salt_personal,
- [:pointer, :pointer, :size_t, :size_t, :pointer, :pointer]
+ %i[pointer pointer size_t size_t pointer pointer]
sodium_function :generichash_blake2b_update,
:crypto_generichash_blake2b_update,
- [:pointer, :pointer, :ulong_long]
+ %i[pointer pointer ulong_long]
sodium_function :generichash_blake2b_final,
:crypto_generichash_blake2b_final,
- [:pointer, :pointer, :size_t]
+ %i[pointer pointer size_t]
EMPTY_PERSONAL = ("\0" * PERSONALBYTES).freeze
EMPTY_SALT = ("\0" * SALTBYTES).freeze
# Calculate a Blake2b digest
@@ -91,10 +91,11 @@
opts[:key_size] = key_size
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
+
opts[:digest_size] = digest_size
personal = opts.fetch(:personal, EMPTY_PERSONAL)
opts[:personal] = Util.zero_pad(PERSONALBYTES, personal)
@@ -159,9 +160,10 @@
#
# @return [String] Blake2b digest of the string as raw bytes
def digest
raise(CryptoError, "No message to hash yet!") unless @incycle
return @digest if @digest
+
@digest = Util.zeros(@digest_size)
self.class.generichash_blake2b_final(@instate.pointer, @digest, @digest_size) ||
raise(CryptoError, "Hash finalization failed!")
@digest
end