class Rails::Auth::X509::SubjectAltNameExtension

Provides convenience methods for subjectAltName extension of X.509 certificates

Constants

DNS_REGEX
IP_REGEX
URI_REGEX

Attributes

dns_names[R]
ips[R]
uris[R]

Public Class Methods

new(certificate) click to toggle source
# File lib/rails/auth/x509/subject_alt_name_extension.rb, line 14
def initialize(certificate)
  unless certificate.is_a?(OpenSSL::X509::Certificate)
    raise TypeError, "expecting OpenSSL::X509::Certificate, got #{certificate.class}"
  end

  extension = certificate.extensions.detect { |ext| ext.oid == "subjectAltName" }
  values = (extension&.value&.split(",") || []).map(&:strip)

  @dns_names = values.grep(DNS_REGEX) { |v| v.sub(DNS_REGEX, "") }.freeze
  @ips = values.grep(IP_REGEX) { |v| v.sub(IP_REGEX, "") }.freeze
  @uris = values.grep(URI_REGEX) { |v| v.sub(URI_REGEX, "") }.freeze
end