class GpWebpay::Verification

Public Class Methods

new(payment_attributes, verification_attrs = nil) click to toggle source
# File lib/gp_webpay/verification.rb, line 5
def initialize(payment_attributes, verification_attrs = nil)
  @payment_attributes = payment_attributes
  GpWebpay.logger.info "Payment Attrs: #{@payment_attributes}"
  @verification_attrs = verification_attrs
  GpWebpay.logger.info "Verification Attrs: #{@verification_attrs}" if @verification_attrs
end

Public Instance Methods

digest() click to toggle source
# File lib/gp_webpay/verification.rb, line 21
def digest
  sign = merchant_key.sign(OpenSSL::Digest::SHA1.new, digest_text)
  Base64.encode64(sign).gsub("\n", "")
end
payment_attributes_with_digest() click to toggle source
# File lib/gp_webpay/verification.rb, line 17
def payment_attributes_with_digest
  PaymentAttributes.map_to_keys(@payment_attributes).merge("DIGEST" => digest)
end
verified_response?(params) click to toggle source
# File lib/gp_webpay/verification.rb, line 12
def verified_response?(params)
  verify_digest(params["DIGEST"], digest_verification(params)) &&
    verify_digest(params["DIGEST1"], digest1_verification(params))
end

Private Instance Methods

config() click to toggle source
# File lib/gp_webpay/verification.rb, line 28
def config
  GpWebpay.config
end
digest1_verification(params) click to toggle source
# File lib/gp_webpay/verification.rb, line 40
def digest1_verification(params)
  digest_verification(params) + "|#{config.merchant_number}"
end
digest_text() click to toggle source
# File lib/gp_webpay/verification.rb, line 32
def digest_text
  @payment_attributes.values.join("|")
end
digest_verification(params) click to toggle source
# File lib/gp_webpay/verification.rb, line 36
def digest_verification(params)
  @verification_attrs.map { |key| params[key] }.join("|")
end
gpe_key() click to toggle source
# File lib/gp_webpay/verification.rb, line 55
def gpe_key
  @gpe_key ||= begin
      pem = File.read config.gpe_pem_path
      OpenSSL::X509::Certificate.new(pem).public_key
    end
end
merchant_key() click to toggle source
# File lib/gp_webpay/verification.rb, line 48
def merchant_key
  @merchant_key ||= begin
      pem = config.merchant_pem || File.read(config.merchant_pem_path)
      OpenSSL::PKey::RSA.new(pem, config.merchant_password)
    end
end
verify_digest(signature, data) click to toggle source
# File lib/gp_webpay/verification.rb, line 44
def verify_digest(signature, data)
  gpe_key.verify(OpenSSL::Digest::SHA1.new, Base64.decode64(signature), data)
end