class ApplePay::PaymentToken::Signature

Attributes

application_data[RW]
data[RW]
ephemeral_public_key[RW]
signature[RW]
transaction_id[RW]
wrapped_key[RW]

Public Class Methods

new(signature, data:, ephemeral_public_key: nil, wrapped_key: nil, transaction_id:, application_data: nil) click to toggle source
# File lib/apple_pay/payment_token/signature.rb, line 8
def initialize(signature, data:, ephemeral_public_key: nil, wrapped_key: nil, transaction_id:, application_data: nil)
  self.signature = signature
  self.data = data
  self.ephemeral_public_key = ephemeral_public_key
  self.wrapped_key = wrapped_key
  self.transaction_id = transaction_id
  self.application_data = application_data
end

Public Instance Methods

verify!() click to toggle source
# File lib/apple_pay/payment_token/signature.rb, line 17
def verify!
  chain = CertificateChain.new signature
  signature_base_string = [
    Base64.decode64(ephemeral_public_key || wrapped_key),
    Base64.decode64(data),
    [transaction_id].pack('H*'),
    [application_data].pack('H*')
  ].join
  chain.verify(
    signature_base_string
  ) or raise VerificationFailed
end