Sha256: 66c4a1090eae1da9cc8b4f4e960a8e75dc161a9a0bd84b8ccc74a9b75b69b189

Contents?: true

Size: 1.91 KB

Versions: 1

Compression:

Stored size: 1.91 KB

Contents

require 'r509/cert/extensions/base'

module R509
  class Cert
    module Extensions
      # RFC 2560 Description (see: http://www.ietf.org/rfc/rfc2560.txt)
      #
      # A CA may specify that an OCSP client can trust a responder for the
      # lifetime of the responder's certificate. The CA does so by including
      # the extension id-pkix-ocsp-nocheck. This SHOULD be a non-critical
      # extension. The value of the extension should be NULL. CAs issuing
      # such a certificate should realized that a compromise of the
      # responder's key, is as serious as the compromise of a CA key used to
      # sign CRLs, at least for the validity period of this certificate. CA's
      # may choose to issue this type of certificate with a very short
      # lifetime and renew it frequently.
      #
      # You can use this extension to parse an existing extension for easy access
      # to the contents or create a new one.
      class OCSPNoCheck < OpenSSL::X509::Extension

        # friendly name for OCSP No Check
        OID = "noCheck"
        Extensions.register_class(self)

        # This method takes a hash or an existing Extension object to parse
        #
        # @option arg :ocsp_no_check [Any] Pass any value. It's irrelevant.
        # @option arg :critical [Boolean] (false)
        def initialize(arg)
          if not R509::Cert::Extensions.is_extension?(arg)
            arg = build_extension(arg)
          end
          super(arg)
        end

        # @return [Hash]
        def to_h
          { :critical => self.critical?  }
        end

        # @return [YAML]
        def to_yaml
          self.to_h.to_yaml
        end

        private
        def build_extension(arg)
          ef = OpenSSL::X509::ExtensionFactory.new
          critical = R509::Cert::Extensions.calculate_critical(arg[:critical], false)
          return ef.create_extension("noCheck","yes",critical)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
r509-0.10.0 lib/r509/cert/extensions/ocsp_no_check.rb