Class: CertificateAuthority::Extensions::CrlDistributionPoints

Inherits:
Object
  • Object
show all
Includes:
ExtensionAPI
Defined in:
lib/certificate_authority/extensions.rb

Overview

Specifies where CRL information be be retrieved. This extension isn’t critical, but is recommended for proper CAs. Reference: Section 4.2.1.14 of RFC3280 tools.ietf.org/html/rfc3280#section-4.2.1.14

Constant Summary collapse

OPENSSL_IDENTIFIER =
"crlDistributionPoints"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCrlDistributionPoints

Returns a new instance of CrlDistributionPoints.



108
109
110
111
# File 'lib/certificate_authority/extensions.rb', line 108

def initialize
  @critical = false
  @uris = []
end

Instance Attribute Details

#criticalObject

Returns the value of attribute critical.



105
106
107
# File 'lib/certificate_authority/extensions.rb', line 105

def critical
  @critical
end

#urisObject

Returns the value of attribute uris.



106
107
108
# File 'lib/certificate_authority/extensions.rb', line 106

def uris
  @uris
end

Class Method Details

.parse(value, critical) ⇒ Object



146
147
148
149
150
151
152
153
154
155
# File 'lib/certificate_authority/extensions.rb', line 146

def self.parse(value, critical)
  obj = self.new
  return obj if value.nil?
  obj.critical = critical
  value.split(/,\s*/).each do |v|
    c = v.split(':', 2)
    obj.uris << c.last if c.first == "URI"
  end
  obj
end

Instance Method Details

#==(o) ⇒ Object



142
143
144
# File 'lib/certificate_authority/extensions.rb', line 142

def ==(o)
  o.class == self.class && o.state == state
end

#config_extensionsObject

NB: At this time it seems OpenSSL’s extension handlers don’t support any of the config options the docs claim to support… everything comes back “missing value” on GENERAL NAME. Even if copied verbatim



120
121
122
123
124
125
# File 'lib/certificate_authority/extensions.rb', line 120

def config_extensions
  {
    # "custom_crl_fields" => {"fullname" => "URI:#{fullname}"},
    # "issuer_sect" => {"CN" => "crlissuer.com", "C" => "US", "O" => "shudder"}
  }
end

#openssl_identifierObject



113
114
115
# File 'lib/certificate_authority/extensions.rb', line 113

def openssl_identifier
  OPENSSL_IDENTIFIER
end

#to_sObject



134
135
136
137
138
139
140
# File 'lib/certificate_authority/extensions.rb', line 134

def to_s
  res = []
  @uris.each do |uri|
    res << "URI:#{uri}"
  end
  res.join(',')
end

#uri=(value) ⇒ Object

This is for legacy support. Technically it can (and probably should) be an array. But if someone is calling the old accessor we shouldn’t necessarily break it.



130
131
132
# File 'lib/certificate_authority/extensions.rb', line 130

def uri=(value)
  @uris << value
end