Spec-Zone.ru › Ruby on Rails 7.0

класс ActiveSupport::KeyGenerator

Родитель:
Object

KeyGenerator — это простой обертка над реализацией PBKDF2 OpenSSL. Он может использоваться для вывода ряда ключей для различных целей из заданного секрета. Это позволяет приложениям Rails иметь один безопасный секрет, но избегать повторного использования этого ключа в нескольких несовместимых контекстах.

Публичные методы класса

hash_digest_class() Показать исходный код
# File activesupport/lib/active_support/key_generator.rb, line 21
def hash_digest_class
  @hash_digest_class ||= OpenSSL::Digest::SHA1
end
hash_digest_class=(klass) Показать исходный код
# File activesupport/lib/active_support/key_generator.rb, line 13
def hash_digest_class=(klass)
  if klass.kind_of?(Class) && klass < OpenSSL::Digest
    @hash_digest_class = klass
  else
    raise ArgumentError, "#{klass} is expected to be an OpenSSL::Digest subclass"
  end
end
new(secret, options = {}) Показать исходный код
# File activesupport/lib/active_support/key_generator.rb, line 26
def initialize(secret, options = {})
  @secret = secret
  # The default iterations are higher than required for our key derivation uses
  # on the off chance someone uses this for password storage
  @iterations = options[:iterations] || 2**16
  # Also allow configuration here so people can use this to build a rotation
  # scheme when switching the digest class.
  @hash_digest_class = options[:hash_digest_class] || self.class.hash_digest_class
end

Публичные методы экземпляра

generate_key(salt, key_size = 64) Показать исходный код
# File activesupport/lib/active_support/key_generator.rb, line 39
def generate_key(salt, key_size = 64)
  OpenSSL::PKCS5.pbkdf2_hmac(@secret, salt, @iterations, key_size, @hash_digest_class.new)
end

Возвращает производный ключ, подходящий для использования. Значение по умолчанию для key_size выбрано совместимым с настройками по умолчанию ActiveSupport::MessageVerifier. т.е. OpenSSL::Digest::SHA1#block_length

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API