module Certificates

Utilities for parsing PEM-encoded certificates.

Definitions

CERTIFICATE_PATTERN = /-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----/m

Matches individual certificates in a PEM bundle.

def self.parse(certificate_bundle)

Parse a PEM-encoded certificate bundle into individual certificates.

Signature

parameter certificate_bundle String

One or more certificates encoded as PEM.

returns Array(String)

The individual PEM-encoded certificates in their original order.

raises ArgumentError

If the bundle does not contain any certificates.

raises TypeError

If the bundle is not a string.

Implementation

def self.parse(certificate_bundle)
	unless certificate_bundle.is_a?(String)
		raise TypeError, "The certificate bundle must be provided as a string!"
	end
	
	certificates = certificate_bundle.scan(CERTIFICATE_PATTERN)
	
	unless certificates.any?
		raise ArgumentError, "The certificate bundle does not contain any certificates!"
	end
	
	return certificates
end