class Dubai::Passbook::Pass
Constants
- TYPES
Attributes
assets[R]
pass[R]
Public Class Methods
new(directory)
click to toggle source
# File lib/dubai/pass.rb, line 48 def initialize(directory) @assets = Dir[File.join(directory, '*')] @pass = File.read(@assets.delete(@assets.detect { |file| File.basename(file) == 'pass.json' })) end
Public Instance Methods
manifest()
click to toggle source
# File lib/dubai/pass.rb, line 53 def manifest checksums = {} checksums['pass.json'] = Digest::SHA1.hexdigest(@pass) @assets.each do |file| checksums[File.basename(file)] = Digest::SHA1.file(file).hexdigest end checksums.to_json end
pkpass()
click to toggle source
# File lib/dubai/pass.rb, line 64 def pkpass Zip::OutputStream.write_buffer do |zip| zip.put_next_entry('pass.json') && zip.write(@pass) zip.put_next_entry('manifest.json') && zip.write(manifest) zip.put_next_entry('signature') && zip.write(signature(manifest)) @assets.each do |file| zip.put_next_entry(File.basename(file)) && zip.print(IO.read(file)) end end end
Private Instance Methods
p12()
click to toggle source
# File lib/dubai/pass.rb, line 89 def p12 OpenSSL::PKCS12.new(File.read(Passbook.certificate), Passbook.password) end
signature(manifest)
click to toggle source
# File lib/dubai/pass.rb, line 78 def signature(manifest) pk7 = OpenSSL::PKCS7.sign(p12.certificate, p12.key, manifest, [wwdr], OpenSSL::PKCS7::BINARY | OpenSSL::PKCS7::DETACHED) data = OpenSSL::PKCS7.write_smime(pk7) start = %(filename=\"smime.p7s"\n\n) finish = "\n\n------" data = data[(data.index(start) + start.length)...(data.rindex(finish) + finish.length)] Base64.decode64(data) end
wwdr()
click to toggle source
# File lib/dubai/pass.rb, line 93 def wwdr OpenSSL::X509::Certificate.new(WWDR_CERTIFICATE) end