class Ant::SSL::Certificate

Stores a X509 certificate.

Attributes

cert[R]
key[R]

Public Class Methods

new(config, inventory) click to toggle source
# File lib/ant/ssl/certificate.rb, line 11
def initialize(config, inventory)
  @config = config
  @inventory = inventory
  @key = OpenSSL::PKey::RSA.new(@config['key_size'])
  @cert = OpenSSL::X509::Certificate.new
  @cert.public_key = @key.public_key
  @extensions = OpenSSL::X509::ExtensionFactory.new
  @extensions.subject_certificate = @cert
end

Public Instance Methods

ca_name() click to toggle source
# File lib/ant/ssl/certificate.rb, line 50
def ca_name
  @config['ca']
end
configure_details!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 31
def configure_details!
  @config.configure_cert_details!(@cert)
end
configure_extensions!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 35
def configure_extensions!
  @extensions.issuer_certificate = @ca.cert
  @config.configure_extensions!(@cert, @extensions)
end
create!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 21
def create!
  return if File.file?(@config.key_path)

  @ca = @inventory.ca(@config['parent'])
  configure_details!
  configure_extensions!
  sign!
  save!
end
save!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 45
def save!
  File.write(@config.key_path, @key.to_s)
  File.write(@config.crt_path, @cert.to_s)
end
sign!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 40
def sign!
  @cert.issuer = @ca.cert.subject
  @cert.sign(@ca.key, OpenSSL::Digest::SHA256.new)
end