略過至內容 略過至搜尋

KeyProvider提供金鑰

  • 加密金鑰

  • 潛在解密金鑰清單。提供多個解密金鑰支援輪替機制,其中會新增新金鑰,但需要舊金鑰持續運作

方法
D
E
N

類別公開方法

new(keys)

# File activerecord/lib/active_record/encryption/key_provider.rb, line 11
def initialize(keys)
  @keys = Array(keys)
end

執行個體公開方法

decryption_keys(encrypted_message)

傳回解密金鑰清單

當訊息儲存對應加密金鑰的參考時,將會傳回包含該金鑰的陣列。若否,會傳回金鑰清單。

# 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為真時,金鑰將包括參考金鑰本身的公開標籤。該金鑰將儲存在加密訊息的公開標頭中

# 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