Sha256: bf459b7076447abfde0f3e04585b8c730edf8720065d09aa063f368f8009caa8
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
require 'base64' require 'plist' module ApplePushCerts class SignedCSR < String def initialize(vendor_p12_path, p12_password, customer_csr) vendor_p12 = OpenSSL::PKCS12.new(File.open(vendor_p12_path).read, p12_password) csr_der = customer_csr.to_der signed_csr_der = vendor_p12.key.sign(OpenSSL::Digest::SHA1.new, csr_der) request = { 'PushCertRequestCSR' => Base64.encode64(csr_der), 'PushCertCertificateChain' => certificate_chain(vendor_p12), 'PushCertSignature' => Base64.encode64(signed_csr_der) } # Apple doesn't like tab characters in the plist plist = Plist::Emit.dump(request).gsub(/\t/,'') signed_csr = Base64.encode64 plist super signed_csr end private def certificate_chain(vendor_p12) apple_root = path_to_pem CONFIG[:apple_root_certificate_path] apple_intermediate = path_to_pem CONFIG[:apple_intermediate_certificate_path] vendor_cert = vendor_p12.certificate.to_pem [apple_root, apple_intermediate, vendor_cert].join end def path_to_pem(path) cert = OpenSSL::X509::Certificate.new File.open(path).read cert.to_pem end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
apple_push_certs-0.0.1 | lib/apple_push_certs/signed_csr.rb |