class CertCheck::CLI
Cert-check's command line interface
Public Instance Methods
info(*files)
click to toggle source
# File lib/cert_check/cli.rb, line 8 def info(*files) if files.empty? say_status :error, 'Pass one or more certificate file paths as arguments.', :red exit(1) end files.each do |file| puts "CertFile: #{file}" begin @cert = OpenSSL::X509::Certificate.new File.read file rescue OpenSSL::X509::CertificateError => e say_status :error, "Certificate file is incorrect. (#{e.class}: #{e.message})\n\n", :red next rescue StandardError => e say_status :error, "#{e.class}: #{e.message}\n\n", :red next end resources puts template end end
Private Instance Methods
array_to_hash(arr)
click to toggle source
# File lib/cert_check/cli.rb, line 46 def array_to_hash(arr) Hash[*arr.flatten.reject { |a| a.is_a?(Integer) }] end
resources()
click to toggle source
# File lib/cert_check/cli.rb, line 38 def resources @subject = array_to_hash(@cert.subject.to_a) @issuer = array_to_hash(@cert.issuer.to_a) @not_before = @cert.not_before.getlocal @not_after = @cert.not_after.getlocal @sans = sans_to_array end
sans_to_array()
click to toggle source
# File lib/cert_check/cli.rb, line 50 def sans_to_array @cert.to_text.scan(/Subject Alternative Name:\s*([^\n\r]*)/).join(',') .scan(/DNS:([^,]*)/).flatten end
template()
click to toggle source
# File lib/cert_check/cli.rb, line 55 def template <<~OUT Issuer: #{@issuer['CN']} NotBefore: #{@not_before} NotAfter: #{@not_after} CommonName: #{@subject['CN']} SANs: [#{@sans.join(' ')}]\n OUT end