class EaSSL::CertificateAuthority

Author

Paul Nicholson (paul@webpowerdesign.net)

Co-Author

Adam Williams (adam@thewilliams.ws)

Copyright

Copyright © 2006 WebPower Design

License

Distributes under the same terms as Ruby

Attributes

certificate[R]
key[R]
serial[R]

Public Class Methods

load(options) click to toggle source
# File lib/eassl/certificate_authority.rb, line 23
def self.load(options)
  key = Key.load(File.join(options[:ca_path], 'cakey.pem'), options[:ca_password])
  certificate = AuthorityCertificate.load(File.join(options[:ca_path], 'cacert.pem'))
  serial = Serial.load(File.join(options[:ca_path], 'serial.txt'))
  self.new(:key => key, :certificate => certificate, :serial => serial)
end
new(options = {}) click to toggle source
# File lib/eassl/certificate_authority.rb, line 10
def initialize(options = {})
  if options[:key] && options[:certificate] && options[:serial]
    @key = options[:key]
    @certificate = options[:certificate]
    @serial = options[:serial]
  else
    options[:name] ||= {}
    @key = Key.new({:password => 'ca_ssl_password'}.update(options))
    @certificate = AuthorityCertificate.new(:key => @key, :name => options[:name])
    @serial = Serial.new(:next => 1)
  end
end

Public Instance Methods

create_certificate(signing_request, type='server', days_valid=nil, digest=OpenSSL::Digest::SHA512.new) click to toggle source
# File lib/eassl/certificate_authority.rb, line 30
def create_certificate(signing_request, type='server', days_valid=nil, digest=OpenSSL::Digest::SHA512.new)
  options = {
    :signing_request => signing_request,
    :ca_certificate => @certificate,
    :serial => @serial.issue_serial,
    :type => type
  }
  if days_valid
    options[:days_valid] = days_valid
  end
  cert = Certificate.new(options)
  @serial.save!
  cert.sign(@key, digest)
  cert
end