Sha256: 4b1d9bab0aaa9f93c58872eef14a440439b8b25070a2f12977e97136ae7c1db7

Contents?: true

Size: 1.37 KB

Versions: 894

Compression:

Stored size: 1.37 KB

Contents

require 'openssl'
require 'tempfile'

module Aws
  # @api private
  module Checksums

    CHUNK_SIZE = 1 * 1024 * 1024 # one MB

    class << self

      # @param [File, Tempfile, IO#read, String] value
      # @return [String<SHA256 Hexdigest>]
      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

      # @param [File, Tempfile, IO#read, String] value
      # @return [String<MD5>]
      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

      private

      def update_in_chunks(digest, io)
        while chunk = io.read(CHUNK_SIZE)
          digest.update(chunk)
        end
        io.rewind
      end

    end
  end
end

Version data entries

894 entries across 894 versions & 1 rubygems

Version Path
aws-sdk-core-2.11.632 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.631 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.630 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.629 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.628 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.627 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.626 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.625 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.624 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.623 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.622 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.621 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.620 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.619 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.618 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.617 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.616 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.615 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.614 lib/aws-sdk-core/checksums.rb
aws-sdk-core-2.11.613 lib/aws-sdk-core/checksums.rb