Module: AppleReceipt::ReceiptParser

Defined in:
lib/apple_receipt/receipt_parser.rb

Overview

ReceiptParser contains helper methods to parse receipt data structures.

Class Method Summary collapse

Class Method Details

.bla(input) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/apple_receipt/receipt_parser.rb', line 14

def bla(input)
  receipt_hash = NextStepParser.parse(input)
  signature_decoded = Base64.decode64(receipt_hash['signature'])
  data = Base64.decode64(receipt_hash['purchase-info'])

  sig = StringIO.new(signature_decoded)
  [sig, data]
end

.parse(input) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/apple_receipt/receipt_parser.rb', line 23

def parse(input)
  sig, data = bla(input)

  version = sig.read(1).unpack('C').first # 8-bit unsigned (unsigned char)
  signature = sig.read(256)
  cert_size = sig.read(4).unpack('L>')[0] # 32-bit unsigned, big-endian
  receipt_cert = OpenSSL::X509::Certificate.new(sig.read(cert_size))

  [version, signature, receipt_cert, data]
end