mirror of
https://github.com/heartcombo/devise.git
synced 2022-11-09 12:18:31 -05:00
Creating stretches to force encrypting password as many times as possible.
This commit is contained in:
parent
5c210d725f
commit
3cc61e4a96
2 changed files with 8 additions and 3 deletions
|
@ -2,9 +2,11 @@ module Devise
|
||||||
module Authenticable
|
module Authenticable
|
||||||
require 'digest/sha1'
|
require 'digest/sha1'
|
||||||
|
|
||||||
|
mattr_accessor :pepper, :stretches
|
||||||
# Pepper for encrypting password
|
# Pepper for encrypting password
|
||||||
mattr_accessor :pepper
|
|
||||||
self.pepper = '23c64df433d9b08e464db5c05d1e6202dd2823f0'
|
self.pepper = '23c64df433d9b08e464db5c05d1e6202dd2823f0'
|
||||||
|
# Encrypt password as many times as possible
|
||||||
|
self.stretches = 10
|
||||||
|
|
||||||
def self.included(base)
|
def self.included(base)
|
||||||
base.class_eval do
|
base.class_eval do
|
||||||
|
@ -52,7 +54,9 @@ module Devise
|
||||||
# incoming password
|
# incoming password
|
||||||
#
|
#
|
||||||
def password_digest(password_to_digest)
|
def password_digest(password_to_digest)
|
||||||
secure_digest(password_salt, @@pepper, password_to_digest)
|
digest = pepper
|
||||||
|
stretches.times { digest = secure_digest(password_salt, digest, password_to_digest, pepper)}
|
||||||
|
digest
|
||||||
end
|
end
|
||||||
|
|
||||||
# Generate a SHA1 digest joining args. Generated token is something like
|
# Generate a SHA1 digest joining args. Generated token is something like
|
||||||
|
|
|
@ -92,8 +92,9 @@ class AuthenticableTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
test 'should encrypt password using a sha1 hash' do
|
test 'should encrypt password using a sha1 hash' do
|
||||||
Devise::Authenticable.pepper = 'pepper'
|
Devise::Authenticable.pepper = 'pepper'
|
||||||
|
Devise::Authenticable.stretches = 1
|
||||||
user = create_user
|
user = create_user
|
||||||
expected_password = ::Digest::SHA1.hexdigest("--#{user.password_salt}--pepper--123456--")
|
expected_password = ::Digest::SHA1.hexdigest("--#{user.password_salt}--pepper--123456--pepper--")
|
||||||
assert_equal expected_password, user.encrypted_password
|
assert_equal expected_password, user.encrypted_password
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue