Class: Aws::Plugins::ChecksumAlgorithm Private

Inherits:
Seahorse::Client::Plugin show all
Defined in:
lib/aws-sdk-core/plugins/checksum_algorithm.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

API:

  • private

Defined Under Namespace

Classes: AwsChunkedTrailerDigestIO, ChecksumHandler, Digest, OptionHandler

Constant Summary collapse

CHECKSUM_CHUNK_SIZE =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

one MB

API:

  • private

1 * 1024 * 1024
DEFAULT_TRAILER_CHUNK_SIZE =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

16 KB

API:

  • private

16_384
CLIENT_ALGORITHMS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

determine the set of supported client side checksum algorithms CRC32c requires aws-crt (optional sdk dependency) for support

API:

  • private

begin
  supported = %w[SHA256 SHA1 CRC32]
  begin
    require 'aws-crt'
    supported << 'CRC32C'
    supported << 'CRC64NVME' if Aws::Crt::GEM_VERSION >= '0.3.0'
  rescue LoadError
    # Ignored
  end
  supported
end.freeze
CRT_ALGORITHMS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

API:

  • private

%w[CRC32C CRC64NVME].freeze
DEFAULT_CHECKSUM =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

API:

  • private

'CRC32'
CHECKSUM_ALGORITHM_PRIORITIES =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Priority order of checksum algorithms to validate responses against. Remove any algorithms not supported by client (ie, depending on CRT availability). This list was chosen based on average performance.

API:

  • private

%w[CRC32 CRC32C CRC64NVME SHA1 SHA256] & CLIENT_ALGORITHMS
CHECKSUM_SIZE =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

byte size of checksums, used in computing the trailer length

API:

  • private

{
  'CRC32' => 9,
  'CRC32C' => 9,
  'CRC64NVME' => 13,
  # SHA functions need 1 byte padding because of how they are encoded
  'SHA1' => 28 + 1,
  'SHA256' => 44 + 1
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Seahorse::Client::Plugin

#add_options, #after_initialize, after_initialize, after_initialize_hooks, before_initialize, #before_initialize, before_initialize_hooks, handlers, literal, option, options

Methods included from Seahorse::Client::HandlerBuilder

#handle, #handle_request, #handle_response, #handler_for, #new_handler

Class Method Details

.digest_for_algorithm(algorithm) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/aws-sdk-core/plugins/checksum_algorithm.rb', line 78

def digest_for_algorithm(algorithm)
  case algorithm
  when 'CRC32'
    Digest.new(Zlib.method(:crc32), 'N')
  when 'CRC32C'
    Digest.new(Aws::Crt::Checksums.method(:crc32c), 'N')
  when 'CRC64NVME'
    Digest.new(Aws::Crt::Checksums.method(:crc64nvme), 'Q>')
  when 'SHA1'
    ::Digest::SHA1.new
  when 'SHA256'
    ::Digest::SHA256.new
  else
    raise ArgumentError,
          "#{algorithm} is not a supported checksum algorithm."
  end
end

.trailer_length(algorithm, location_name) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

The trailer size (in bytes) is the overhead (0, r, n) + the trailer name + the bytesize of the base64 encoded checksum.

API:

  • private



98
99
100
# File 'lib/aws-sdk-core/plugins/checksum_algorithm.rb', line 98

def trailer_length(algorithm, location_name)
  7 + location_name.size + CHECKSUM_SIZE[algorithm]
end

Instance Method Details

#add_handlers(handlers, _config) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



153
154
155
156
157
158
# File 'lib/aws-sdk-core/plugins/checksum_algorithm.rb', line 153

def add_handlers(handlers, _config)
  handlers.add(OptionHandler, step: :initialize)
  # Priority is set low to ensure the checksum is computed AFTER the
  # request is built but before it is signed.
  handlers.add(ChecksumHandler, priority: 15, step: :build)
end