class Simplepay::Signature
Public Class Methods
new(uri, params, secret_key = Simplepay.aws_secret_access_key)
click to toggle source
# File lib/simplepay/signature.rb, line 10 def initialize(uri, params, secret_key = Simplepay.aws_secret_access_key) @uri = uri @params = params @secret_key = secret_key end
Public Instance Methods
sign()
click to toggle source
# File lib/simplepay/signature.rb, line 16 def sign make_canonical_string compute_signature end
Private Instance Methods
compute_signature()
click to toggle source
# File lib/simplepay/signature.rb, line 23 def compute_signature digest = OpenSSL::Digest.new('sha256') Base64.encode64(OpenSSL::HMAC.digest(digest, @secret_key, @canonical)).chomp end
make_canonical_string()
click to toggle source
# File lib/simplepay/signature.rb, line 28 def make_canonical_string @canonical = "POST\n#{@uri.host}\n#{@uri.path}\n" params = @params.reject{|k,v| v.blank? }.inject({}) { |a, (k,v)| a[k.to_s] = v; a } params = params.sort.inject([]) { |a, v| a << urlencode(v[0]) + '=' + urlencode(v[1]) }.join('&') @canonical += params end
urlencode(plaintext)
click to toggle source
# File lib/simplepay/signature.rb, line 35 def urlencode(plaintext) CGI.escape(plaintext.to_s).gsub('+', '%20').gsub('%7E', '~') end