class RbNaCl::PasswordHash::Argon2
def digest(password, salt, algo = nil)
-
(String)
- scrypt digest of the string as raw bytes
Parameters:
-
digest
(Symbol
) -- algorithm to use (may be :argon2i or :argon2id) -
salt
(String
) -- to make the digest unique -
password
(String
) -- to be hashed
def digest(password, salt, algo = nil) raise ArgumentError, "digest_size is required" unless @digest_size digest = Util.zeros(@digest_size) salt = Util.check_string(salt, SALTBYTES, "salt") if algo.nil? algorithm = ALG_DEFAULT elsif algo == :argon2i algorithm = ALG_ARGON2I13 elsif algo == :argon2id && Sodium::Version::ARGON2ID_SUPPORTED algorithm = ALG_ARGON2ID13 else raise ArgumentError, "digest algorithm is not supported" end status = self.class.pwhash( digest, @digest_size, password, password.bytesize, salt, @opslimit, @memlimit, algorithm ) raise CryptoError, ARGON_ERROR_CODES[status] if status.nonzero? digest end