class AWS::Core::Signers::Version2

@api private

Attributes

credentials[R]

@return [CredentialProviders::Provider]

Public Class Methods

new(credentials) click to toggle source

@param [CredentialProviders::Provider] credentials

# File lib/aws/core/signers/version_2.rb, line 23
def initialize credentials
  @credentials = credentials
end

Public Instance Methods

sign_request(req) click to toggle source

@param [Http::Request] req @return [Http::Request]

# File lib/aws/core/signers/version_2.rb, line 32
def sign_request req
  req.add_param('AWSAccessKeyId', credentials.access_key_id)
  if token = credentials.session_token
    req.add_param("SecurityToken", token)
  end
  req.add_param('SignatureVersion', '2')
  req.add_param('SignatureMethod', 'HmacSHA256')
  req.add_param('Signature', signature(req))
  req.body = req.url_encoded_params
  req
end

Private Instance Methods

signature(req) click to toggle source

@param [Http::Request] req

# File lib/aws/core/signers/version_2.rb, line 47
def signature req
  sign(credentials.secret_access_key, string_to_sign(req))
end
string_to_sign(req) click to toggle source

@param [Http::Request] req

# File lib/aws/core/signers/version_2.rb, line 52
def string_to_sign req

  host =
    case req.port
    when 80, 443 then req.host
    else "#{req.host}:#{req.port}"
    end

  [
    req.http_method,
    host.to_s.downcase,
    req.path,
    req.url_encoded_params,
  ].join("\n")

end