class RhEntitlement::Certificate

Constants

OID_TYPE
OID_URLS

Public Class Methods

new(cert) click to toggle source
# File lib/rh_entitlement/certificate.rb, line 8
def initialize(cert)
  @x509 = OpenSSL::X509::Certificate.new(cert)
end

Public Instance Methods

extension(id) click to toggle source
# File lib/rh_entitlement/certificate.rb, line 20
def extension(id)
  extensions = raw_extensions
  return nil unless extensions[id]

  asn1 = OpenSSL::ASN1.decode(extensions[id])
  der_body(asn1.value[1])
end
type() click to toggle source
# File lib/rh_entitlement/certificate.rb, line 16
def type
  extension OID_TYPE
end
urls() click to toggle source
# File lib/rh_entitlement/certificate.rb, line 12
def urls
  @urls ||= RhEntitlement::CertificateUrls.new(extension OID_URLS)
end

Private Instance Methods

der_body(der) click to toggle source
# File lib/rh_entitlement/certificate.rb, line 30
def der_body(der)
  body = nil
  OpenSSL::ASN1.traverse(der) do |depth, offset, header_len, length, constructed, tag_class, tag|
    body = der.value[header_len, length]
  end
  body
end
raw_extensions() click to toggle source
# File lib/rh_entitlement/certificate.rb, line 38
def raw_extensions
  @raw_extensions ||= Hash[@x509.extensions.collect { |ext|
    [ext.oid, ext.to_der]
  }]
end