Skip to Content Skip to Search
Methods
A
H
N
P
V

Class Public methods

new()

# File activemodel/lib/active_model/secure_password/argon2_password.rb, line 6
def initialize
  # Load argon2 gem only when has_secure_password with :argon2 is used.
  # This is to avoid Active Model (and by extension the entire framework)
  # being dependent on a binary library.
  require "argon2"
rescue LoadError
  warn "You don't have argon2 installed in your application. Please add it to your Gemfile and run bundle install."
  raise
end

Instance Public methods

algorithm_name()

Returns the algorithm name.

# File activemodel/lib/active_model/secure_password/argon2_password.rb, line 41
def algorithm_name
  :argon2
end

hash_password(unencrypted_password)

Hashes the unencrypted password using Argon2.

# File activemodel/lib/active_model/secure_password/argon2_password.rb, line 17
def hash_password(unencrypted_password)
  if ActiveModel::SecurePassword.min_cost
    ::Argon2::Password.new(profile: :unsafe_cheapest).create(unencrypted_password)
  else
    ::Argon2::Password.create(unencrypted_password)
  end
end

password_salt(digest)

Generates the salt from the password digest.

# File activemodel/lib/active_model/secure_password/argon2_password.rb, line 31
def password_salt(digest)
  ::Argon2::HashFormat.new(digest).salt
end

validate(_record, _attribute)

Validates the password and adds error to the record in the given attribute. Argon2 has no maximum input size, no validation needed.

# File activemodel/lib/active_model/secure_password/argon2_password.rb, line 37
def validate(_record, _attribute)
end

verify_password(password, digest)

Verifies if the password matches the digest.

# File activemodel/lib/active_model/secure_password/argon2_password.rb, line 26
def verify_password(password, digest)
  ::Argon2::Password.verify_password(password, digest)
end