class Aws::S3::Plugins::SseCpk::Handler

Public Instance Methods

call(context) click to toggle source
# File lib/aws-sdk-s3/plugins/sse_cpk.rb, line 22
def call(context)
  compute_key_md5(context) if context.params.is_a?(Hash)
  @handler.call(context)
end

Private Instance Methods

base64(str) click to toggle source
# File lib/aws-sdk-s3/plugins/sse_cpk.rb, line 59
def base64(str)
  Base64.encode64(str).strip
end
compute_key_md5(context) click to toggle source
# File lib/aws-sdk-s3/plugins/sse_cpk.rb, line 29
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-s3/plugins/sse_cpk.rb, line 55
def md5(str)
  OpenSSL::Digest::MD5.digest(str)
end
require_https(context) click to toggle source
# File lib/aws-sdk-s3/plugins/sse_cpk.rb, line 43
          def require_https(context)
            unless URI::HTTPS === context.config.endpoint
              msg = <<-MSG.strip.gsub("\n", ' ')
                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`
              MSG
              raise ArgumentError, msg
            end
          end