class TrustPayRails::Signature

Public Class Methods

new(key) click to toggle source
# File lib/trust_pay_rails/signature.rb, line 14
def initialize(key)
  @key = key
end
sign(data={}) click to toggle source
# File lib/trust_pay_rails/signature.rb, line 6
def self.sign(data={})
  new(TrustPayRails.key).sign(data)
end
signature_match?(data) click to toggle source
# File lib/trust_pay_rails/signature.rb, line 10
def self.signature_match?(data)
  new(TrustPayRails.key).signature_match?(data)
end

Public Instance Methods

sign(data={}) click to toggle source

FIXME: use ruby 2.1 required arguments when we switch

# File lib/trust_pay_rails/signature.rb, line 19
def sign(data={})
  hmac_sha_256(@key, data.slice(:aid, :typ, :amt, :cur, :ref, :res, :tid, :oid, :tss).values.join).upcase
end
signature_match?(data={}) click to toggle source
# File lib/trust_pay_rails/signature.rb, line 23
def signature_match?(data={})
  sign(data) == data[:sig]
end

Private Instance Methods

hmac_sha_256(key, data) click to toggle source
# File lib/trust_pay_rails/signature.rb, line 29
def hmac_sha_256(key, data)
  unpack_hex_string(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), key, data))
end
unpack_hex_string(data) click to toggle source
# File lib/trust_pay_rails/signature.rb, line 33
def unpack_hex_string(data)
  data.unpack("H*").first
end