diff options
| author | Luke Kanies <luke@madstop.com> | 2008-03-10 10:37:57 -0700 |
|---|---|---|
| committer | Luke Kanies <luke@madstop.com> | 2008-04-15 21:34:04 -0500 |
| commit | ec5bdf3b2d089d53f1f8fd986df83768564e79ac (patch) | |
| tree | f2246b87471efe1f4b2689afb2a4abc1d2319843 /lib/puppet/ssl | |
| parent | bb87464f75cf3ea2e17bb660e7d1880bc36e141f (diff) | |
The basics for the certificate and certificate request
indirection terminii are done. I need to move most of
the test code to a shared behaviour now.
Diffstat (limited to 'lib/puppet/ssl')
| -rw-r--r-- | lib/puppet/ssl/base.rb | 40 | ||||
| -rw-r--r-- | lib/puppet/ssl/certificate.rb | 14 | ||||
| -rw-r--r-- | lib/puppet/ssl/certificate_request.rb | 13 | ||||
| -rw-r--r-- | lib/puppet/ssl/key.rb | 13 |
4 files changed, 53 insertions, 27 deletions
diff --git a/lib/puppet/ssl/base.rb b/lib/puppet/ssl/base.rb new file mode 100644 index 000000000..87cbea4b5 --- /dev/null +++ b/lib/puppet/ssl/base.rb @@ -0,0 +1,40 @@ +require 'puppet/ssl' + +# The base class for wrapping SSL instances. +class Puppet::SSL::Base + def self.wraps(klass) + @wrapped_class = klass + end + + def self.wrapped_class + raise(Puppet::DevError, "%s has not declared what class it wraps" % self) unless defined?(@wrapped_class) + @wrapped_class + end + + attr_accessor :name, :content + + def generate + raise Puppet::DevError, "%s did not override 'generate'" % self.class + end + + def initialize(name) + @name = name + end + + # Read content from disk appropriately. + def read(path) + @content = wrapped_class.new(File.read(path)) + end + + # Convert our thing to pem. + def to_s + return "" unless content + content.to_pem + end + + private + + def wrapped_class + self.class.wrapped_class + end +end diff --git a/lib/puppet/ssl/certificate.rb b/lib/puppet/ssl/certificate.rb index 7a5f97452..9a89b4530 100644 --- a/lib/puppet/ssl/certificate.rb +++ b/lib/puppet/ssl/certificate.rb @@ -1,19 +1,15 @@ -require 'puppet/ssl' +require 'puppet/ssl/base' # The class that manages all aspects of our SSL certificates -- # private keys, public keys, requests, etc. -class Puppet::SSL::Certificate - extend Puppet::Indirector +class Puppet::SSL::Certificate < Puppet::SSL::Base + # This is defined from the base class + wraps OpenSSL::X509::Certificate + extend Puppet::Indirector indirects :certificate #, :terminus_class => :file - attr_accessor :name, :content - def generate raise Puppet::DevError, "Cannot generate certificates directly; they must be generated during signing" end - - def initialize(name) - @name = name - end end diff --git a/lib/puppet/ssl/certificate_request.rb b/lib/puppet/ssl/certificate_request.rb index ce3aff477..67f0f23c6 100644 --- a/lib/puppet/ssl/certificate_request.rb +++ b/lib/puppet/ssl/certificate_request.rb @@ -1,13 +1,12 @@ -require 'puppet/ssl' +require 'puppet/ssl/base' # This constant just exists for us to use for adding our request terminii. -class Puppet::SSL::CertificateRequest # :nodoc: - extend Puppet::Indirector +class Puppet::SSL::CertificateRequest < Puppet::SSL::Base + wraps OpenSSL::X509::Request + extend Puppet::Indirector indirects :certificate_request #, :terminus_class => :file - attr_reader :name, :content - # How to create a certificate request with our system defaults. def generate(key) Puppet.info "Creating a new SSL certificate request for %s" % name @@ -20,8 +19,4 @@ class Puppet::SSL::CertificateRequest # :nodoc: @content = csr end - - def initialize(name) - @name = name - end end diff --git a/lib/puppet/ssl/key.rb b/lib/puppet/ssl/key.rb index 0a207f320..18bf2a4cb 100644 --- a/lib/puppet/ssl/key.rb +++ b/lib/puppet/ssl/key.rb @@ -1,21 +1,16 @@ -require 'puppet/ssl' +require 'puppet/ssl/base' require 'puppet/indirector' # Manage private and public keys as a pair. -class Puppet::SSL::Key - extend Puppet::Indirector +class Puppet::SSL::Key < Puppet::SSL::Base + wraps OpenSSL::PKey::RSA + extend Puppet::Indirector indirects :key #, :terminus_class => :file - attr_accessor :name, :content - # Knows how to create keys with our system defaults. def generate Puppet.info "Creating a new SSL key for %s" % name @content = OpenSSL::PKey::RSA.new(Puppet[:keylength]) end - - def initialize(name) - @name = name - end end |
