Sha256: 1b52efe6adf93aaa641c700dae093b147efd4b85218d37b21c66761657f54c5f
Contents?: true
Size: 1003 Bytes
Versions: 1
Compression:
Stored size: 1003 Bytes
Contents
# frozen_string_literal: true require 'openssl' module AppleReceipt # Validator allows one to check the validity of a receipt. class Validator def initialize(receipt) root_cert_pem = File.read('./certificates/AppleIncRootCertificate.cer') root_cert = OpenSSL::X509::Certificate.new(root_cert_pem) intermediate_cert_pem = File.read('./certificates/AppleWWDRCA.cer') intermediate_cert = OpenSSL::X509::Certificate.new(intermediate_cert_pem) store.add_cert(root_cert) store.add_cert(intermediate_cert) @receipt = receipt end def valid? store.verify(receipt.cert) && public_key.verify(OpenSSL::Digest::SHA1.new, receipt.signature, signed_data) end def public_key receipt.cert.public_key end def signed_data [receipt.version, receipt.data].pack('CA*') end def store @store ||= OpenSSL::X509::Store.new end private attr_reader :receipt end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
apple_receipt-0.1.1 | lib/apple_receipt/validator.rb |