一个 KeyProvider
提供密钥
-
一个加密密钥
-
一个可能的解密密钥列表。提供多个解密密钥支持密钥轮换方案,其中添加新密钥,但旧密钥需要继续工作
方法
- D
- E
- N
类公共方法
new(keys) 链接
源代码:显示 | 在 GitHub 上
# File activerecord/lib/active_record/encryption/key_provider.rb, line 11 def initialize(keys) @keys = Array(keys) end
实例公共方法
decryption_keys(encrypted_message) 链接
返回解密密钥列表
当消息包含对加密密钥的引用时,它将返回一个包含该密钥的数组。否则,它将返回密钥列表。
源代码:显示 | 在 GitHub 上
# 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
encryption_key() 链接
返回列表中的最后一个密钥作为执行加密的活动密钥
当 ActiveRecord::Encryption.config.store_key_references
为 true 时,密钥将包含一个引用密钥本身的公共标签。该密钥将存储在加密消息的公共头中
源代码:显示 | 在 GitHub 上
# 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