class Aws::S3::Encryption::IOEncrypter
Provides an IO wrapper encrpyting a stream of data. It is possible to use this same object for decrypting. You must initialize it with a decryptiion cipher in that case and the IO object must contain cipher text instead of plain text. @api private
Constants
- ONE_MEGABYTE
@api private
Attributes
size[R]
@return [Integer]
Public Class Methods
new(cipher, io)
click to toggle source
# File lib/aws-sdk-s3/encryption/io_encrypter.rb, line 20 def initialize(cipher, io) @encrypted = io.size <= ONE_MEGABYTE ? encrypt_to_stringio(cipher, io.read) : encrypt_to_tempfile(cipher, io) @size = @encrypted.size end
Public Instance Methods
close()
click to toggle source
@api private
# File lib/aws-sdk-s3/encryption/io_encrypter.rb, line 43 def close @encrypted.close if Tempfile === @encrypted end
read(bytes = nil, output_buffer = nil)
click to toggle source
# File lib/aws-sdk-s3/encryption/io_encrypter.rb, line 30 def read(bytes = nil, output_buffer = nil) if Tempfile === @encrypted && @encrypted.closed? @encrypted.open @encrypted.binmode end @encrypted.read(bytes, output_buffer) end
rewind()
click to toggle source
# File lib/aws-sdk-s3/encryption/io_encrypter.rb, line 38 def rewind @encrypted.rewind end
Private Instance Methods
encrypt_to_stringio(cipher, plain_text)
click to toggle source
# File lib/aws-sdk-s3/encryption/io_encrypter.rb, line 49 def encrypt_to_stringio(cipher, plain_text) if plain_text.empty? StringIO.new(cipher.final) else StringIO.new(cipher.update(plain_text) + cipher.final) end end
encrypt_to_tempfile(cipher, io)
click to toggle source
# File lib/aws-sdk-s3/encryption/io_encrypter.rb, line 57 def encrypt_to_tempfile(cipher, io) encrypted = Tempfile.new(self.object_id.to_s) encrypted.binmode while chunk = io.read(ONE_MEGABYTE) encrypted.write(cipher.update(chunk)) end encrypted.write(cipher.final) encrypted.rewind encrypted end