class R509::Cert::Extensions::SubjectKeyIdentifier

RFC 5280 Description (see: www.ietf.org/rfc/rfc5280.txt)

The subject key identifier extension provides a means of identifying certificates that contain a particular public key.

You can use this extension to parse an existing extension for easy access to the contents or create a new one.

Constants

OID

friendly name for Subject Key Identifier OID

SKI_EXTENSION_DEFAULT

default extension behavior when generating

Public Class Methods

new(arg) click to toggle source

This method takes a hash or an existing Extension object to parse @option arg :public_key [OpenSSL::PKey] (Cert/CSR/PrivateKey return this type from public_key) @option arg :critical [Boolean] (false)

Calls superclass method
# File lib/r509/cert/extensions/subject_key_identifier.rb, line 23
def initialize(arg)
  unless R509::Cert::Extensions.is_extension?(arg)
    arg = build_extension(arg)
  end
  super(arg)
end

Public Instance Methods

key() click to toggle source

@return value of key

# File lib/r509/cert/extensions/subject_key_identifier.rb, line 31
def key
  self.value
end

Private Instance Methods

build_extension(arg) click to toggle source
# File lib/r509/cert/extensions/subject_key_identifier.rb, line 37
def build_extension(arg)
  validate_subject_key_identifier(arg)
  ef = OpenSSL::X509::ExtensionFactory.new
  cert = OpenSSL::X509::Certificate.new
  cert.public_key = arg[:public_key]
  ef.subject_certificate = cert
  critical = R509::Cert::Extensions.calculate_critical(arg[:critical], false)
  ef.create_extension("subjectKeyIdentifier", SKI_EXTENSION_DEFAULT, critical)
end
validate_subject_key_identifier(ski) click to toggle source
# File lib/r509/cert/extensions/subject_key_identifier.rb, line 47
def validate_subject_key_identifier(ski)
  if !ski.is_a?(Hash) || ski[:public_key].nil?
    raise ArgumentError, "You must supply a hash with a :public_key"
  end
  ski
end