Class: SSLyze::CertificateChain

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

Overview

Represents the <certificateChain> XML element.

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ CertificateChain

Initializes the certificate chain.

Parameters:

  • node (Nokogiri::XML::Node)

    The <certificateChain> XML element.



17
18
19
# File 'lib/sslyze/certificate_chain.rb', line 17

def initialize(node)
  @node = node
end

Instance Method Details

#each {|certificate| ... } ⇒ Enumerator

Enumerates over each certificate in the chain.

Yields:

  • (certificate)

Yield Parameters:

Returns:

  • (Enumerator)


30
31
32
33
34
35
36
# File 'lib/sslyze/certificate_chain.rb', line 30

def each
  return enum_for(__method__) unless block_given?

  @node.search('certificate').each do |certificate|
    yield Certificate.new(certificate)
  end
end

#each_intermediate {|certificate| ... } ⇒ Enumerator

Enumerates over the intermediate certificates in the chain.

Yields:

  • (certificate)

Yield Parameters:

Returns:

  • (Enumerator)


58
59
60
61
62
63
64
# File 'lib/sslyze/certificate_chain.rb', line 58

def each_intermediate
  return enum_for(__method__) unless block_given?

  @node.search('certificate[@position="intermediate"]').each do |certificate|
    yield Certificate.new(certificate)
  end
end

#intermediateArray<Certificate>

The intermediate certificates.

Returns:

See Also:



73
74
75
# File 'lib/sslyze/certificate_chain.rb', line 73

def intermediate
  each_intermediate.to_a
end

#leafCertificate?

The leaf certificate in the chain.

Returns:



43
44
45
46
47
# File 'lib/sslyze/certificate_chain.rb', line 43

def leaf
  @leaf ||= if (certificate = @node.at('certificate[@position="leaf"]'))
              Certificate.new(certificate)
            end
end

#rootCertificate?

The root certificate.

Returns:



82
83
84
85
86
# File 'lib/sslyze/certificate_chain.rb', line 82

def root
  if (certificate = @node.at('certificate[@position="intermediate"]:last-child'))
    Certificate.new(certificate)
  end
end