Sha256: 810d0b156d589bef700fc573a9dd1f768a8d86d725ca4a95e5c15dcab31041b8
Contents?: true
Size: 1.66 KB
Versions: 3
Compression:
Stored size: 1.66 KB
Contents
require 'logging' class UnparsableCertError < TypeError; end # # CertMunger accepts an input string and attempts to return a valid X509 # formatted certificate. # module CertMunger def self.included(base) base.extend(ClassMethods) end def to_cert(raw_cert) self.class.send(:to_cert, raw_cert) end # # Extended class methods via `include CertMunger` # module ClassMethods def logger return @logger if @logger logger = Logging.logger[self] unless @logger @logger ||= Kernel.const_defined?('Rails') ? Rails.logger : logger end 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 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 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 def multi_line_contents(raw_cert) cert_contents = raw_cert.split(/[-](.*)[-]/)[2] cert_contents.lines.map do |line| line.lstrip.squeeze(' ').split(' ') end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
cert_munger-0.1.0 | lib/cert_munger/formatter.rb |
cert_munger-0.0.2 | lib/cert_munger/formatter.rb |
cert_munger-0.0.1 | lib/cert_munger/formatter.rb |