Module: CertMunger::ClassMethods

Defined in:
lib/cert_munger/formatter.rb

Overview

Extended class methods via ‘include CertMunger`

Instance Method Summary collapse

Instance Method Details

#build_cert(raw_cert) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/cert_munger/formatter.rb', line 36

def build_cert(raw_cert)
  tmp_cert = ['-----BEGIN CERTIFICATE-----']
  if raw_cert.lines.count == 1
    cert_contents = one_line_contents(raw_cert)
  else
    cert_contents = multi_line_contents(raw_cert)
  end
  tmp_cert << cert_contents.flatten # put mixed space lines as own elements
  tmp_cert << '-----END CERTIFICATE-----'
  tmp_cert.join("\n").rstrip
end

#loggerObject



21
22
23
24
25
# File 'lib/cert_munger/formatter.rb', line 21

def logger
  return @logger if @logger
  logger = Logging.logger[self] unless @logger
  @logger ||= Kernel.const_defined?('Rails') ? Rails.logger : logger
end

#multi_line_contents(raw_cert) ⇒ Object



55
56
57
58
59
60
# File 'lib/cert_munger/formatter.rb', line 55

def multi_line_contents(raw_cert)
  cert_contents = raw_cert.split(/[-](.*)[-]/)[2]
  cert_contents.lines.map do |line|
    line.lstrip.squeeze(' ').split(' ')
  end
end

#one_line_contents(raw_cert) ⇒ Object



48
49
50
51
52
53
# File 'lib/cert_munger/formatter.rb', line 48

def one_line_contents(raw_cert)
  cert_contents = raw_cert.split('\n')
  cert_contents.pop
  cert_contents.shift
  cert_contents.map! { |el| el.match('\W+[t|n|r](.*)')[1] }
end

#to_cert(raw_cert) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/cert_munger/formatter.rb', line 27

def to_cert(raw_cert)
  logger.debug "CertMunger raw_cert:\n#{raw_cert}"
  new_cert = build_cert(raw_cert)
  logger.debug "CertMunger reformatted_cert:\n#{new_cert}"
  logger.debug 'Returning OpenSSL::X509::Certificate.new on new_cert'

  OpenSSL::X509::Certificate.new new_cert
end