Sha256: d115511a9ad25d4b95dd8a7f9659541d440ea038b13c7c460d681d4f49f8a834

Contents?: true

Size: 1.78 KB

Versions: 4

Compression:

Stored size: 1.78 KB

Contents

require 'sslyze/certificate'

module SSLyze
  #
  # Represents the `<certificateChain>` XML element.
  #
  class CertificateChain

    include Enumerable

    #
    # Initializes the certificate chain.
    #
    # @param [Nokogiri::XML::Node] node
    #   The `<certificateChain>` XML element.
    #
    def initialize(node)
      @node = node
    end

    #
    # Enumerates over each certificate in the chain.
    #
    # @yield [certificate]
    # 
    # @yieldparam [Certificate] certificate
    #
    # @return [Enumerator]
    #
    def each
      return enum_for(__method__) unless block_given?

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

    #
    # The leaf certificate in the chain.
    #
    # @return [Certificate, nil]
    #
    def leaf
      @leaf ||= if (certificate = @node.at('certificate[@position="leaf"]'))
                  Certificate.new(certificate)
                end
    end

    #
    # Enumerates over the intermediate certificates in the chain.
    #
    # @yield [certificate]
    #
    # @yieldparam [Certificate] certificate
    #
    # @return [Enumerator]
    #
    def each_intermediate
      return enum_for(__method__) unless block_given?

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

    #
    # The intermediate certificates.
    #
    # @return [Array<Certificate>]
    #
    # @see #each_intermediate
    #
    def intermediate
      each_intermediate.to_a
    end

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

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ruby-sslyze-0.2.1 lib/sslyze/certificate_chain.rb
ruby-sslyze-0.2.0 lib/sslyze/certificate_chain.rb
ruby-sslyze-0.1.1 lib/sslyze/certificate_chain.rb
ruby-sslyze-0.1.0 lib/sslyze/certificate_chain.rb