Sha256: 8f855148b24bd9d0f92bc4acd99d83d1bcca967a7a34280ca94f0d9a831fdebf

Contents?: true

Size: 1.09 KB

Versions: 4

Compression:

Stored size: 1.09 KB

Contents

require "digest/sha2"
require "base64"

module Devise

  # Declare encryptors length which are used in migrations.
  #ENCRYPTORS_LENGTH = {
  #  :dovecot_ssha512 => 72
  #}

  # Used to define the password encryption algorithm.
  #mattr_accessor :encryptor
  #@@encryptor = nil

  module Encryptable
    module Encryptors
      class DovecotSsha512 < Base
        # Generates a default password digest based on salt, pepper and the
        # incoming password.
        def self.digest(password, stretches, salt, pepper)
          digest = password #[password, salt].flatten.join('')
          stretches.times { digest = Digest::SHA512.digest(digest) }
          '{SHA512}'+ Base64.encode64(digest).chomp # + salt)
        end
        def self.compare(encrypted_password, password, stretches, salt, pepper)
          Devise.secure_compare(encrypted_password, digest(password, stretches, salt, pepper))
        end
        def self.salt(stretches)
          Devise.friendly_token[0,20]
        end
      end
    end
  end
end

#Devise.add_module(:encryptable, :model => './model')
#Devise.add_module( :encryptable)

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rmails-0.2.5 config/initializers/devise_encryptable.rb
rmails-0.2.4 config/initializers/devise_encryptable.rb
rmails-0.2.3 config/initializers/devise_encryptable.rb
rmails-0.2.2 config/initializers/devise_encryptable.rb