class SSLyze::X509::ExtensionSet

Provides a Hash-like interface around an Array of [OpenSSL::X5095::Extension]s.

[1]: www.rubydoc.info/stdlib/openssl/OpenSSL/X509/Extension

@since 1.0.0

Public Class Methods

new(extensions) click to toggle source

Initializes the X509 extension set.

@param [Array<OpenSSL::X509::Extension>] extensions

The array of extensions.
# File lib/sslyze/x509/extension_set.rb, line 23
def initialize(extensions)
  @extensions = Hash[extensions.map { |ext|
    [ext.oid, ext]
  }]
end

Public Instance Methods

[](oid) click to toggle source

Looks up the X509 extension with the given name. @param [String] oid

@return [OpenSSL::X509::Extension]

# File lib/sslyze/x509/extension_set.rb, line 59
def [](oid)
  @extensions[oid]
end
basic_constraints() click to toggle source

The `basicConstraints` extension.

@return [Extensions::BasicConstraints, nil]

# File lib/sslyze/x509/extension_set.rb, line 77
def basic_constraints
  @basic_constraints ||= if (ext = self['basicConstraints'])
                           Extensions::BasicConstraints.new(ext)
                         end
end
certificate_policies() click to toggle source

The `certificatePolicies` extension.

@return [Extensions::CertificatePolicies, nil]

# File lib/sslyze/x509/extension_set.rb, line 88
def certificate_policies
  @certificate_policies ||= if (ext = self['certificatePolicies'])
                              Extensions::CertificatePolicies.new(ext)
                            end
end
crl_distribution_points() click to toggle source

The `crlDistributionPoints` extension.

@return [Extensions::CRLDistributionPoints, nil]

# File lib/sslyze/x509/extension_set.rb, line 99
def crl_distribution_points
  @crl_distribution_points ||= if (ext = self['crlDistributionPoints'])
                                 Extensions::CRLDistributionPoints.new(ext)
                               end
end
each(&block) click to toggle source

Enumerates over the X509 extensions in the set.

@yield [extension]

@yieldparam [OpenSSL::X509::Extension] extension

@return [Enumerator]

# File lib/sslyze/x509/extension_set.rb, line 38
def each(&block)
  @extensions.each_value(&block)
end
extended_key_usage() click to toggle source

The `extendedKeyUsage` extension.

@return [Extensions::ExtendedKeyUsage, nil]

# File lib/sslyze/x509/extension_set.rb, line 110
def extended_key_usage
  @extended_key_usage ||= if (ext = self['extendedKeyUsage'])
                            Extensions::ExtendedKeyUsage.new(ext)
                          end
end
has?(oid) click to toggle source

Determines if the X509 extension exists in the set.

@param [String] oid

@return [Boolean]

# File lib/sslyze/x509/extension_set.rb, line 49
def has?(oid)
  @extensions.has_key?(oid)
end
key_usage() click to toggle source

The `keyUsage` extension.

@return [Extensions::KeyUsage, nil]

# File lib/sslyze/x509/extension_set.rb, line 121
def key_usage
  @key_usage ||= if (ext = self['keyUsage'])
                   Extensions::KeyUsage.new(ext)
                 end
end
subject_alt_name() click to toggle source

The `subjectAltName` extension.

@return [Extensions::SubjectAltName, nil]

# File lib/sslyze/x509/extension_set.rb, line 132
def subject_alt_name
  @subject_alt_name ||= if (ext = self['subjectAltName'])
                          Extensions::SubjectAltName.new(ext)
                        end
end
to_a() click to toggle source

Converts the X509 extension set to an Array.

@return [Array<OpenSSL::X509::Extension>]

# File lib/sslyze/x509/extension_set.rb, line 68
def to_a
  @extensions.values
end