Module java.base
Package java.security.cert

# Class CertStoreSpi

java.lang.Object
java.security.cert.CertStoreSpi

    public abstract class CertStoreSpi
    extends Object

The Service Provider Interface (SPI) for the `CertStore` class. All `CertStore` implementations must include a class (the SPI class) that extends this class (`CertStoreSpi`), provides a constructor with a single argument of type `CertStoreParameters`, and implements all of its methods. In general, instances of this class should only be accessed through the `CertStore` class. For details, see the Java Cryptography Architecture.

Concurrent Access

The public methods of all `CertStoreSpi` objects must be thread-safe. That is, multiple threads may concurrently invoke these methods on a single `CertStoreSpi` object (or more than one) with no ill effects. This allows a `CertPathBuilder` to search for a CRL while simultaneously searching for further certificates, for instance.

Simple `CertStoreSpi` implementations will probably ensure thread safety by adding a `synchronized` keyword to their `engineGetCertificates` and `engineGetCRLs` methods. More sophisticated ones may allow truly concurrent access.

Since:
  1.4

## Constructor Summary

Constructors
Constructor | Description
--- | ---
`CertStoreSpi​(CertStoreParameters params)` | The sole constructor.

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---
`abstract Collection<? extends Certificate>` | `engineGetCertificates​(CertSelector selector)` | Returns a `Collection` of `Certificate`s that match the specified selector.
`abstract Collection<? extends CRL>` | `engineGetCRLs​(CRLSelector selector)` | Returns a `Collection` of `CRL`s that match the specified selector.

### Methods declared in class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### CertStoreSpi

public CertStoreSpi​(CertStoreParameters params) throws InvalidAlgorithmParameterException
The sole constructor.

Parameters:
  `params` - the initialization parameters (may be `null`)
Throws:
  `InvalidAlgorithmParameterException` - if the initialization parameters are inappropriate for this `CertStoreSpi`

## Method Details

### engineGetCertificates

public abstract Collection<? extends Certificate> engineGetCertificates​(CertSelector selector) throws CertStoreException
Returns a `Collection` of `Certificate`s that match the specified selector. If no `Certificate`s match the selector, an empty `Collection` will be returned.

For some `CertStore` types, the resulting `Collection` may not contain all of the `Certificate`s that match the selector. For instance, an LDAP `CertStore` may not search all entries in the directory. Instead, it may just search entries that are likely to contain the `Certificate`s it is looking for.

Some `CertStore` implementations (especially LDAP `CertStore`s) may throw a `CertStoreException` unless a non-null `CertSelector` is provided that includes specific criteria that can be used to find the certificates. Issuer and/or subject names are especially useful criteria.

Parameters:
  `selector` - A `CertSelector` used to select which `Certificate`s should be returned. Specify `null` to return all `Certificate`s (if supported).
Returns:
  A `Collection` of `Certificate`s that match the specified selector (never `null`)
Throws:
  `CertStoreException` - if an exception occurs

### engineGetCRLs

public abstract Collection<? extends CRL> engineGetCRLs​(CRLSelector selector) throws CertStoreException
Returns a `Collection` of `CRL`s that match the specified selector. If no `CRL`s match the selector, an empty `Collection` will be returned.

For some `CertStore` types, the resulting `Collection` may not contain all of the `CRL`s that match the selector. For instance, an LDAP `CertStore` may not search all entries in the directory. Instead, it may just search entries that are likely to contain the `CRL`s it is looking for.

Some `CertStore` implementations (especially LDAP `CertStore`s) may throw a `CertStoreException` unless a non-null `CRLSelector` is provided that includes specific criteria that can be used to find the CRLs. Issuer names and/or the certificate to be checked are especially useful.

Parameters:
  `selector` - A `CRLSelector` used to select which `CRL`s should be returned. Specify `null` to return all `CRL`s (if supported).
Returns:
  A `Collection` of `CRL`s that match the specified selector (never `null`)
Throws:
  `CertStoreException` - if an exception occurs