module AWS::Core::Signature::Version2

def self.included base

def self.included base
  base.send(:include, Signer)
end

def add_authorization! credentials

def add_authorization! credentials
  add_param('AWSAccessKeyId', credentials.access_key_id)
  if token = credentials.session_token
    add_param("SecurityToken", token)
  end
  add_param('SignatureVersion', '2')
  add_param('SignatureMethod', 'HmacSHA256')
  add_param('Signature', sign(credentials.secret_access_key, string_to_sign))
end

def string_to_sign

def string_to_sign
  host = 
    case port
    when 80, 443 then self.host
    else "#{self.host}:#{port}"
    end
  [
    http_method,
    host,
    path,
    params.sort.collect { |p| p.encoded }.join('&'),
  ].join("\n")
end