module Px::Service::Client::HmacSigning::ClassMethods

Public Instance Methods

generate_signature(method, uri, query, body, timestamp) click to toggle source

Generate a nonce that's used to expire message after keyspan seconds

# File lib/px/service/client/hmac_signing.rb, line 29
def generate_signature(method, uri, query, body, timestamp)
  secret = self.config.hmac_secret
  keyspan = self.config.hmac_keyspan
  nonce = (timestamp - (timestamp % keyspan)) + keyspan
  data = "#{method.capitalize},#{uri},#{query},#{body},#{nonce.to_s}"
  digest = OpenSSL::Digest.new('sha256')
  digest = OpenSSL::HMAC.digest(digest, secret, data)
  return Base64.urlsafe_encode64(digest).strip()
end