class Aws::S3::Encryption::DefaultCipherProvider
@api private
Public Class Methods
new(options = {})
click to toggle source
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 9 def initialize(options = {}) @key_provider = options[:key_provider] end
Public Instance Methods
decryption_cipher(envelope)
click to toggle source
@return [Cipher] Given an encryption envelope, returns a
decryption cipher.
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 27 def decryption_cipher(envelope) master_key = @key_provider.key_for(envelope['x-amz-matdesc']) key = Utils.decrypt(master_key, decode64(envelope['x-amz-key'])) iv = decode64(envelope['x-amz-iv']) Utils.aes_decryption_cipher(:CBC, key, iv) end
encryption_cipher()
click to toggle source
@return [Array<Hash,Cipher>] Creates an returns a new encryption
envelope and encryption cipher.
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 15 def encryption_cipher cipher = Utils.aes_encryption_cipher(:CBC) envelope = { 'x-amz-key' => encode64(encrypt(envelope_key(cipher))), 'x-amz-iv' => encode64(envelope_iv(cipher)), 'x-amz-matdesc' => materials_description, } [envelope, cipher] end
Private Instance Methods
decode64(str)
click to toggle source
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 56 def decode64(str) Base64.decode64(str) end
encode64(str)
click to toggle source
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 52 def encode64(str) Base64.encode64(str).split("\n") * "" end
encrypt(data)
click to toggle source
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 44 def encrypt(data) Utils.encrypt(@key_provider.encryption_materials.key, data) end
envelope_iv(cipher)
click to toggle source
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 40 def envelope_iv(cipher) cipher.iv = cipher.random_iv end
envelope_key(cipher)
click to toggle source
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 36 def envelope_key(cipher) cipher.key = cipher.random_key end
materials_description()
click to toggle source
# File lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb, line 48 def materials_description @key_provider.encryption_materials.description end