class Passifier::Signing

Class for Pass signing functionality

Public Class Methods

new(key_pem, pass_phrase, certificate_pem, wwdr_pem) click to toggle source

@param [String] key_pem The key pem file location @param [String] pass_phrase The key pass phrase @param [String] certificate_pem The certificate pem file location @param [String] wwdr_pem The WWDR certificate pem file location

# File lib/passifier/signing.rb, line 12
def initialize(key_pem, pass_phrase, certificate_pem, wwdr_pem)
  @key = File.read(key_pem)
  @pass_phrase = pass_phrase
  @certificate = File.read(certificate_pem)
  @wwdr = File.read(wwdr_pem)
end

Public Instance Methods

sha(content) click to toggle source

Generate a digest of the given content @param [String] content The content to generate a digest from @return [String] The resulting digest

# File lib/passifier/signing.rb, line 22
def sha(content)
  signed_contents = sign(content)
  Digest::SHA1.hexdigest(signed_contents)
end
sign(content) click to toggle source

Sign the given content @param [String] content The content to generate a signing of @return [String] The resulting signing

# File lib/passifier/signing.rb, line 30
def sign(content)
  key = OpenSSL::PKey::RSA.new(@key, @pass_phrase)
  certificate = OpenSSL::X509::Certificate.new(@certificate)
  wwdr = OpenSSL::X509::Certificate.new(@wwdr)
  OpenSSL::PKCS7.sign(certificate, key, content, [wwdr], OpenSSL::PKCS7::BINARY | OpenSSL::PKCS7::NOATTR | OpenSSL::PKCS7::DETACHED).to_der
end