класс ActiveRecord::Encryption::KeyProvider
Служит для предоставления ключей:
-
Ключ шифрования
-
Список потенциальных ключей расшифрования. Поддержка множества ключей расшифрования поддерживает схемы ротации, где добавляются новые ключи, но старые ключи должны продолжать работать
Открытые методы класса
# File activerecord/lib/active_record/encryption/key_provider.rb, line 11 def initialize(keys) @keys = Array(keys) end
Открытые методы экземпляра
# File activerecord/lib/active_record/encryption/key_provider.rb, line 32
def decryption_keys(encrypted_message)
if encrypted_message.headers.encrypted_data_key_id
keys_grouped_by_id[encrypted_message.headers.encrypted_data_key_id]
else
@keys
end
end Возвращает список ключей расшифрования
Если сообщение содержит ссылку на ключ шифрования, возвращается массив с этим ключом. В противном случае возвращается список всех ключей.
# File activerecord/lib/active_record/encryption/key_provider.rb, line 20
def encryption_key
@encryption_key ||= @keys.last.tap do |key|
key.public_tags.encrypted_data_key_id = key.id if ActiveRecord::Encryption.config.store_key_references
end
@encryption_key
end Возвращает первый ключ в списке в качестве активного ключа для выполнения шифрования
Если ActiveRecord::Encryption.config.store_key_references имеет значение true, ключ будет включать публичный тег, ссылающийся на сам ключ. Этот ключ будет сохранен в заголовках сообщения, зашифрованного с помощью этого ключа.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.