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