Class: SSLyze::X509::ExtensionSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/sslyze/x509/extension_set.rb

Overview

Provides a Hash-like interface around an Array of OpenSSL::X5095::Extensions.

Since:

  • 1.0.0

Instance Method Summary collapse

Constructor Details

#initialize(extensions) ⇒ ExtensionSet

Initializes the X509 extension set.

Parameters:

  • extensions (Array<OpenSSL::X509::Extension>)

    The array of extensions.

Since:

  • 1.0.0



23
24
25
26
27
# File 'lib/sslyze/x509/extension_set.rb', line 23

def initialize(extensions)
  @extensions = Hash[extensions.map { |ext|
    [ext.oid, ext]
  }]
end

Instance Method Details

#[](oid) ⇒ OpenSSL::X509::Extension

Looks up the X509 extension with the given name.

Parameters:

  • oid (String)

Returns:

  • (OpenSSL::X509::Extension)

Since:

  • 1.0.0



59
60
61
# File 'lib/sslyze/x509/extension_set.rb', line 59

def [](oid)
  @extensions[oid]
end

#basic_constraintsExtensions::BasicConstraints?

The basicConstraints extension.

Returns:

Since:

  • 1.0.0



77
78
79
80
81
# 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_policiesExtensions::CertificatePolicies?

The certificatePolicies extension.

Returns:

Since:

  • 1.0.0



88
89
90
91
92
# 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_pointsExtensions::CRLDistributionPoints?

The crlDistributionPoints extension.

Returns:

Since:

  • 1.0.0



99
100
101
102
103
# 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 {|extension| ... } ⇒ Enumerator

Enumerates over the X509 extensions in the set.

Yields:

  • (extension)

Yield Parameters:

  • extension (OpenSSL::X509::Extension)

Returns:

  • (Enumerator)

Since:

  • 1.0.0



38
39
40
# File 'lib/sslyze/x509/extension_set.rb', line 38

def each(&block)
  @extensions.each_value(&block)
end

#extended_key_usageExtensions::ExtendedKeyUsage?

The extendedKeyUsage extension.

Returns:

Since:

  • 1.0.0



110
111
112
113
114
# 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) ⇒ Boolean

Determines if the X509 extension exists in the set.

Parameters:

  • oid (String)

Returns:

  • (Boolean)

Since:

  • 1.0.0



49
50
51
# File 'lib/sslyze/x509/extension_set.rb', line 49

def has?(oid)
  @extensions.has_key?(oid)
end

#key_usageExtensions::KeyUsage?

The keyUsage extension.

Returns:

Since:

  • 1.0.0



121
122
123
124
125
# 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_nameExtensions::SubjectAltName?

The subjectAltName extension.

Returns:

Since:

  • 1.0.0



132
133
134
135
136
# 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_aArray<OpenSSL::X509::Extension>

Converts the X509 extension set to an Array.

Returns:

  • (Array<OpenSSL::X509::Extension>)

Since:

  • 1.0.0



68
69
70
# File 'lib/sslyze/x509/extension_set.rb', line 68

def to_a
  @extensions.values
end