class Passbook::Signer
Attributes
certificate[RW]
key[RW]
key_hash[RW]
p12_cert[RW]
password[RW]
wwdc_cert[RW]
Public Class Methods
new(params = {})
click to toggle source
# File lib/passbook/signer.rb, line 8 def initialize(params = {}) @certificate = params[:certificate] || Passbook.p12_certificate @password = params[:password] || Passbook.p12_password @key = params[:key] || (params.empty? ? Passbook.p12_key : nil) @wwdc_cert = params[:wwdc_cert] || Passbook.wwdc_cert compute_cert end
Public Instance Methods
compute_cert()
click to toggle source
# File lib/passbook/signer.rb, line 29 def compute_cert @key_hash = {} if key @key_hash[:key] = OpenSSL::PKey::RSA.new File.read(key), password @key_hash[:cert] = OpenSSL::X509::Certificate.new File.read(certificate) else p12 = OpenSSL::PKCS12.new File.read(certificate), password @key_hash[:key], @key_hash[:cert] = p12.key, p12.certificate end end
sign(data)
click to toggle source
# File lib/passbook/signer.rb, line 16 def sign(data) wwdc = OpenSSL::X509::Certificate.new File.read(wwdc_cert) pk7 = OpenSSL::PKCS7.sign key_hash[:cert], key_hash[:key], data.to_s, [wwdc], OpenSSL::PKCS7::BINARY | OpenSSL::PKCS7::DETACHED data = OpenSSL::PKCS7.write_smime pk7 str_debut = "filename=\"smime.p7s\"\n\n" data = data[data.index(str_debut)+str_debut.length..data.length-1] str_end = "\n\n------" data = data[0..data.index(str_end)-1] Base64.decode64(data) end