module Crypto::GenericHash

Constants

BYTES
BYTES_MAX
BYTES_MIN
KEYBYTES
KEYBYTES_MAX
KEYBYTES_MIN
PRIMITIVE

Public Instance Methods

final(state, blake2b) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/crypto/generic_hash.rb, line 83
def update(state, message)
  crypto_generichash_update(state, message, get_size(message))
end