class CertificateChecker::CertificateParser

Attributes

certificates[R]

Public Class Methods

new(filename) click to toggle source
# File lib/certificate-checker/certificate_parser.rb, line 9
def initialize(filename)
  @filename = filename
  @certificates = {}
  @lineno = 0

  @f = File.open(@filename, 'rb')
  begin
    read_random_data
  ensure
    @f.close
  end
end

Private Instance Methods

add_certificate() click to toggle source
# File lib/certificate-checker/certificate_parser.rb, line 50
def add_certificate
  certificates[@data_start_lineno] = OpenSSL::X509::Certificate.new(@data)
rescue OpenSSL::X509::CertificateError => e
  warn "Error parsing certificate at #{@filename}:#{@data_start_lineno}: #{e.message}"
end
read_certificate() click to toggle source
# File lib/certificate-checker/certificate_parser.rb, line 36
def read_certificate
  until @f.eof?
    line = @f.readline
    @lineno += 1
    @data += line
    if line.match(/^-----END CERTIFICATE-----/)
      add_certificate
      return
    end
  end

  raise "#{@filename}:#{@lineno}: Unexpected end of file"
end
read_random_data() click to toggle source
# File lib/certificate-checker/certificate_parser.rb, line 24
def read_random_data
  until @f.eof?
    line = @f.readline
    @lineno += 1
    next unless line.match(/^-----BEGIN CERTIFICATE-----/)

    @data_start_lineno = @lineno
    @data = line
    read_certificate
  end
end