class Aws::Plugins::S3SseCpk::Handler

Public Instance Methods

call(context) click to toggle source
# File lib/aws-sdk-core/plugins/s3_sse_cpk.rb, line 16
def call(context)
  compute_key_md5(context)
  @handler.call(context)
end

Private Instance Methods

base64(str) click to toggle source
# File lib/aws-sdk-core/plugins/s3_sse_cpk.rb, line 53
def base64(str)
  Base64.encode64(str).strip
end
compute_key_md5(context) click to toggle source
# File lib/aws-sdk-core/plugins/s3_sse_cpk.rb, line 23
def compute_key_md5(context)
  params = context.params
  if key = params[:sse_customer_key]
    require_https(context)
    params[:sse_customer_key] = base64(key)
    params[:sse_customer_key_md5] = base64(md5(key))
  end
  if key = params[:copy_source_sse_customer_key]
    require_https(context)
    params[:copy_source_sse_customer_key] = base64(key)
    params[:copy_source_sse_customer_key_md5] = base64(md5(key))
  end
end
md5(str) click to toggle source
# File lib/aws-sdk-core/plugins/s3_sse_cpk.rb, line 49
def md5(str)
  OpenSSL::Digest::MD5.digest(str)
end
require_https(context) click to toggle source
# File lib/aws-sdk-core/plugins/s3_sse_cpk.rb, line 37
        def require_https(context)
          unless URI::HTTPS === context.config.endpoint
            msg = "              Attempting to send customer-provided-keys for S3
              server-side-encryption over HTTP; Please configure a HTTPS
              endpoint. If you are attempting to use a test endpoint,
              you can disable this check via `:require_https_for_sse_cpk`
".strip.gsub("\n", ' ')
            raise ArgumentError, msg
          end
        end