Class: AppleReceipt::Validator
- Inherits:
-
Object
- Object
- AppleReceipt::Validator
- Defined in:
- lib/apple_receipt/validator.rb
Overview
Validator allows one to check the validity of a receipt.
Instance Method Summary collapse
-
#initialize(receipt) ⇒ Validator
constructor
A new instance of Validator.
- #public_key ⇒ Object
- #signed_data ⇒ Object
- #store ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(receipt) ⇒ Validator
Returns a new instance of Validator.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/apple_receipt/validator.rb', line 8 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 |
Instance Method Details
#public_key ⇒ Object
27 28 29 |
# File 'lib/apple_receipt/validator.rb', line 27 def public_key receipt.cert.public_key end |
#signed_data ⇒ Object
31 32 33 |
# File 'lib/apple_receipt/validator.rb', line 31 def signed_data [receipt.version, receipt.data].pack('CA*') end |
#store ⇒ Object
35 36 37 |
# File 'lib/apple_receipt/validator.rb', line 35 def store @store ||= OpenSSL::X509::Store.new end |
#valid? ⇒ Boolean
21 22 23 24 25 |
# File 'lib/apple_receipt/validator.rb', line 21 def valid? store.verify(receipt.cert) && public_key.verify(OpenSSL::Digest::SHA1.new, receipt.signature, signed_data) end |