in gems/aws-sigv4/lib/aws-sigv4/signer.rb [442:459]
def sha256_hexdigest(value)
if (value.is_a?(File) || value.is_a?(Tempfile)) && !value.path.nil? && File.exist?(value.path)
OpenSSL::Digest::SHA256.file(value).hexdigest
elsif value.respond_to?(:read)
sha256 = OpenSSL::Digest.new('SHA256')
loop do
chunk = value.read(1024 * 1024)
break unless chunk
sha256.update(chunk)
end
value.rewind
sha256.hexdigest
else
OpenSSL::Digest::SHA256.hexdigest(value)
end
end