module Aws::Checksums

@api private

Constants

CHUNK_SIZE

Public Class Methods

md5(value) click to toggle source

@param [File, Tempfile, IO#read, String] value @return [String<MD5>]

# File lib/aws-sdk-core/checksums.rb, line 28
def md5(value)
  if (File === value || Tempfile === value) && !value.path.nil? && File.exist?(value.path)
    Base64.encode64(OpenSSL::Digest::MD5.file(value).digest).strip
  elsif value.respond_to?(:read)
    md5 = OpenSSL::Digest::MD5.new
    update_in_chunks(md5, value)
    Base64.encode64(md5.digest).strip
  else
    Base64.encode64(OpenSSL::Digest::MD5.digest(value)).strip
  end
end
sha256_hexdigest(value) click to toggle source

@param [File, Tempfile, IO#read, String] value @return [String<SHA256 Hexdigest>]

# File lib/aws-sdk-core/checksums.rb, line 14
def sha256_hexdigest(value)
  if (File === value || Tempfile === value) && !value.path.nil? && File.exist?(value.path)
    OpenSSL::Digest::SHA256.file(value).hexdigest
  elsif value.respond_to?(:read)
    sha256 = OpenSSL::Digest::SHA256.new
    update_in_chunks(sha256, value)
    sha256.hexdigest
  else
    OpenSSL::Digest::SHA256.hexdigest(value)
  end
end

Private Class Methods

update_in_chunks(digest, io) click to toggle source
# File lib/aws-sdk-core/checksums.rb, line 42
def update_in_chunks(digest, io)
  while chunk = io.read(CHUNK_SIZE)
    digest.update(chunk)
  end
  io.rewind
end