Method: SecurityObject.signed_certificate

Defined in:
lib/action_mailer_x509/security_object.rb

.signed_certificate(params = {}) ⇒ Object



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/action_mailer_x509/security_object.rb', line 112

def signed_certificate(params = {})
  params.symbolize_keys!
  root_key, root_ca = self_signed_certificate(params)
  key, cert = certificate(params, root_ca)
  cert.serial = 2

  ef = OpenSSL::X509::ExtensionFactory.new
  ef.subject_certificate = cert
  ef.issuer_certificate = root_ca
  cert.add_extension(ef.create_extension('keyUsage', 'digitalSignature', true))
  cert.add_extension(ef.create_extension('subjectKeyIdentifier', 'hash', false))
  cert.sign(root_key, OpenSSL::Digest::SHA256.new)

  [ key, cert ]
end