Spec-Zone.ru › Ruby on Rails 7.0

класс ActiveRecord::Encryption::EnvelopeEncryptionKeyProvider

Родитель:
Object

Реализует простой подход к шифрованию оболочкой, где:

  • Он генерирует случайный ключ шифрования данных для каждой операции шифрования

  • Он хранит сгенерированный ключ вместе с зашифрованной полезной нагрузкой. Он шифрует этот ключ с помощью основного ключа, указанного в credential +active_record.encryption.master key+

Этот поставщик может работать с несколькими основными ключами. Он будет использовать последний для шифрования.

Когда `config.store_key_references` имеет значение true, он также будет хранить ссылку на конкретный основной ключ, который использовался для шифрования ключа шифрования данных. Если не задано, он будет перебирать все настроенные основные ключи, чтобы найти нужный и вернуть соответствующий ключ расшифрования.

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

active_primary_key() Показать исходный код
# File activerecord/lib/active_record/encryption/envelope_encryption_key_provider.rb, line 31
def active_primary_key
  @active_primary_key ||= primary_key_provider.encryption_key
end
decryption_keys(encrypted_message) Показать исходный код
# File activerecord/lib/active_record/encryption/envelope_encryption_key_provider.rb, line 26
def decryption_keys(encrypted_message)
  secret = decrypt_data_key(encrypted_message)
  secret ? [ActiveRecord::Encryption::Key.new(secret)] : []
end
encryption_key() Показать исходный код
# File activerecord/lib/active_record/encryption/envelope_encryption_key_provider.rb, line 18
def encryption_key
  random_secret = generate_random_secret
  ActiveRecord::Encryption::Key.new(random_secret).tap do |key|
    key.public_tags.encrypted_data_key = encrypt_data_key(random_secret)
    key.public_tags.encrypted_data_key_id = active_primary_key.id if ActiveRecord::Encryption.config.store_key_references
  end
end

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

Spec-Zone.ru

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