Class: Sequel::Plugins::Password::BCryptSHA256Hasher

Inherits:
Hasher
  • Object
show all
Defined in:
lib/sequel_password.rb

Direct Known Subclasses

BCryptHasher

Instance Attribute Summary

Attributes inherited from Hasher

#algorithm

Instance Method Summary collapse

Methods inherited from Hasher

#must_update

Constructor Details

#initializeBCryptSHA256Hasher

Returns a new instance of BCryptSHA256Hasher.



135
136
137
138
139
# File 'lib/sequel_password.rb', line 135

def initialize
  @algorithm = :bcrypt_sha256
  @cost = 12
  @digest = OpenSSL::Digest::SHA256.new
end

Instance Method Details

#encode(password, salt) ⇒ Object



145
146
147
148
149
# File 'lib/sequel_password.rb', line 145

def encode(password, salt)
  password = @digest.digest(password) unless @digest.nil?
  hash = BCrypt::Engine.hash_secret(password, salt)
  "#{@algorithm}$#{hash}"
end

#saltObject



141
142
143
# File 'lib/sequel_password.rb', line 141

def salt
  BCrypt::Engine.generate_salt(@cost)
end

#verify(password, encoded) ⇒ Object



151
152
153
154
155
156
# File 'lib/sequel_password.rb', line 151

def verify(password, encoded)
  algorithm, data = encoded.split('$', 2)
  password = @digest.digest(password) unless @digest.nil?
  hash = BCrypt::Engine.hash_secret(password, data)
  constant_time_compare(data, hash)
end