Class PKIXRevocationChecker

java.lang.Object
java.security.cert.PKIXCertPathChecker
java.security.cert.PKIXRevocationChecker
All Implemented Interfaces:
Cloneable, CertPathChecker

public abstract class PKIXRevocationChecker extends PKIXCertPathChecker
A PKIXCertPathChecker for checking the revocation status of certificates with the PKIX algorithm.

A PKIXRevocationChecker checks the revocation status of certificates with the Online Certificate Status Protocol (OCSP) or Certificate Revocation Lists (CRLs). OCSP is described in RFC 2560 and is a network protocol for determining the status of a certificate. A CRL is a time-stamped list identifying revoked certificates, and RFC 5280 describes an algorithm for determining the revocation status of certificates using CRLs.

Each PKIXRevocationChecker must be able to check the revocation status of certificates with OCSP and CRLs. By default, OCSP is the preferred mechanism for checking revocation status, with CRLs as the fallback mechanism. However, this preference can be switched to CRLs with the PREFER_CRLS option. In addition, the fallback mechanism can be disabled with the NO_FALLBACK option.

A PKIXRevocationChecker is obtained by calling the getRevocationChecker method of a PKIX CertPathValidator. Additional parameters and options specific to revocation can be set (by calling the setOcspResponder method for instance). The PKIXRevocationChecker is added to a PKIXParameters object using the addCertPathChecker or setCertPathCheckers method, and then the PKIXParameters is passed along with the CertPath to be validated to the validate method of a PKIX CertPathValidator. When supplying a revocation checker in this manner, it will be used to check revocation irrespective of the setting of the RevocationEnabled flag, and will override the default revocation checking mechanism of the PKIX service provider. Similarly, a PKIXRevocationChecker may be added to a PKIXBuilderParameters object for use with a PKIX CertPathBuilder.

Note that when a PKIXRevocationChecker is added to PKIXParameters, it clones the PKIXRevocationChecker; thus any subsequent modifications to the PKIXRevocationChecker have no effect.

Any parameter that is not set (or is set to null) will be set to the default value for that parameter.

Concurrent Access

Unless otherwise specified, the methods defined in this class are not thread-safe. Multiple threads that need to access a single object concurrently should synchronize amongst themselves and provide the necessary locking. Multiple threads each manipulating separate objects need not synchronize.

Since:
1.8
External Specifications
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    Various revocation options that can be specified for the revocation checking mechanism.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Default constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns a clone of this object.
    Gets the optional OCSP request extensions.
    Gets the URI that identifies the location of the OCSP responder.
    Gets the OCSP responder's certificate.
    Gets the OCSP responses.
    Gets the revocation options.
    Returns a list containing the exceptions that are ignored by the revocation checker when the SOFT_FAIL option is set.
    void
    Sets the optional OCSP request extensions.
    void
    Sets the URI that identifies the location of the OCSP responder.
    void
    Sets the OCSP responder's certificate.
    void
    setOcspResponses(Map<X509Certificate, byte[]> responses)
    Sets the OCSP responses.
    void
    Sets the revocation options.

    Methods declared in class PKIXCertPathChecker

    check, check, getSupportedExtensions, init, isForwardCheckingSupported
    Modifier and Type
    Method
    Description
    void
    Performs the check(s) on the specified certificate using its internal state.
    abstract void
    check(Certificate cert, Collection<String> unresolvedCritExts)
    Performs the check(s) on the specified certificate using its internal state and removes any critical extensions that it processes from the specified collection of OID strings that represent the unresolved critical extensions.
    abstract Set<String>
    Returns an immutable Set of X.509 certificate extensions that this PKIXCertPathChecker supports (i.e. recognizes, is able to process), or null if no extensions are supported.
    abstract void
    init(boolean forward)
    Initializes the internal state of this PKIXCertPathChecker.
    abstract boolean
    Indicates if forward checking is supported.

    Methods declared in class Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    Modifier and Type
    Method
    Description
    boolean
    Compares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.
    protected void
    Deprecated, for removal: This API element is subject to removal in a future version.
    May cause performance issues, deadlocks and hangs.
    final Class<? extends Object>
    Answers the unique instance of java.lang.Class which represents the class of the receiver.
    int
    Answers an integer hash code for the receiver.
    final void
    Causes one thread which is waiting on the receiver to be made ready to run.
    final void
    Causes all threads which are waiting on the receiver to be made ready to run.
    Answers a string containing a concise, human-readable description of the receiver.
    final void
    Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated by notify or notifyAll).
    final void
    wait(long time)
    Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated by notify or notifyAll) or the expiration of the timeout.
    final void
    wait(long time, int frac)
    Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated by notify or notifyAll) or the expiration of the timeout.
  • Constructor Details

    • PKIXRevocationChecker

      protected PKIXRevocationChecker()
      Default constructor.
  • Method Details

    • setOcspResponder

      public void setOcspResponder(URI uri)
      Sets the URI that identifies the location of the OCSP responder. This overrides the ocsp.responderURL security property and any responder specified in a certificate's Authority Information Access Extension, as defined in RFC 5280.
      Parameters:
      uri - the responder URI
    • getOcspResponder

      public URI getOcspResponder()
      Gets the URI that identifies the location of the OCSP responder. This overrides the ocsp.responderURL security property. If this parameter or the ocsp.responderURL property is not set, the location is determined from the certificate's Authority Information Access Extension, as defined in RFC 5280.
      Returns:
      the responder URI, or null if not set
    • setOcspResponderCert

      public void setOcspResponderCert(X509Certificate cert)
      Sets the OCSP responder's certificate. This overrides the ocsp.responderCertSubjectName, ocsp.responderCertIssuerName, and ocsp.responderCertSerialNumber security properties.
      Parameters:
      cert - the responder's certificate
    • getOcspResponderCert

      public X509Certificate getOcspResponderCert()
      Gets the OCSP responder's certificate. This overrides the ocsp.responderCertSubjectName, ocsp.responderCertIssuerName, and ocsp.responderCertSerialNumber security properties. If this parameter or the aforementioned properties are not set, then the responder's certificate is determined as specified in RFC 2560.
      Returns:
      the responder's certificate, or null if not set
    • setOcspExtensions

      public void setOcspExtensions(List<Extension> extensions)
      Sets the optional OCSP request extensions.
      Parameters:
      extensions - a list of extensions. The list is copied to protect against subsequent modification.
    • getOcspExtensions

      public List<Extension> getOcspExtensions()
      Gets the optional OCSP request extensions.
      Returns:
      an unmodifiable list of extensions. The list is empty if no extensions have been specified.
    • setOcspResponses

      public void setOcspResponses(Map<X509Certificate, byte[]> responses)
      Sets the OCSP responses. These responses are used to determine the revocation status of the specified certificates when OCSP is used.
      Parameters:
      responses - a map of OCSP responses. Each key is an X509Certificate that maps to the corresponding DER-encoded OCSP response for that certificate. A deep copy of the map is performed to protect against subsequent modification.
    • getOcspResponses

      public Map<X509Certificate, byte[]> getOcspResponses()
      Gets the OCSP responses. These responses are used to determine the revocation status of the specified certificates when OCSP is used.
      Returns:
      a map of OCSP responses. Each key is an X509Certificate that maps to the corresponding DER-encoded OCSP response for that certificate. A deep copy of the map is returned to protect against subsequent modification. Returns an empty map if no responses have been specified.
    • setOptions

      public void setOptions(Set<PKIXRevocationChecker.Option> options)
      Sets the revocation options.
      Parameters:
      options - a set of revocation options. The set is copied to protect against subsequent modification.
    • getOptions

      public Set<PKIXRevocationChecker.Option> getOptions()
      Gets the revocation options.
      Returns:
      an unmodifiable set of revocation options. The set is empty if no options have been specified.
    • getSoftFailExceptions

      public abstract List<CertPathValidatorException> getSoftFailExceptions()
      Returns a list containing the exceptions that are ignored by the revocation checker when the SOFT_FAIL option is set. The list is cleared each time init is called. The list is ordered in ascending order according to the certificate index returned by getIndex method of each entry.

      An implementation of PKIXRevocationChecker is responsible for adding the ignored exceptions to the list.

      Returns:
      an unmodifiable list containing the ignored exceptions. The list is empty if no exceptions have been ignored.
    • clone

      public PKIXRevocationChecker clone()
      Description copied from class: PKIXCertPathChecker
      Returns a clone of this object. Calls the Object.clone() method. All subclasses which maintain state must support and override this method, if necessary.
      Overrides:
      clone in class PKIXCertPathChecker
      Returns:
      a copy of this PKIXCertPathChecker