# CertStoreSpi

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Ctors](https://developer.android.com/reference/java/security/cert/CertStoreSpi#pubctors)\|[Methods](https://developer.android.com/reference/java/security/cert/CertStoreSpi#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/java/security/cert/CertStoreSpi#inhmethods)  

# CertStoreSpi

`
public


abstract
class
CertStoreSpi
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


`

|---|---------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | java.security.cert.CertStoreSpi |

<br />

*** ** * ** ***

The*Service Provider Interface* (**SPI** ) for the[CertStore](https://developer.android.com/reference/java/security/cert/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.

## Summary

|                                                                                                                                   ### Public constructors                                                                                                                                   ||
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[CertStoreSpi](https://developer.android.com/reference/java/security/cert/CertStoreSpi#CertStoreSpi(java.security.cert.CertStoreParameters))`(`[CertStoreParameters](https://developer.android.com/reference/java/security/cert/CertStoreParameters)` params) ` The sole constructor. |

|                                                                                                                                                                                                                                                           ### Public methods                                                                                                                                                                                                                                                            ||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract `[Collection](https://developer.android.com/reference/java/util/Collection)`<? extends `[CRL](https://developer.android.com/reference/java/security/cert/CRL)`>`                 | ` `[engineGetCRLs](https://developer.android.com/reference/java/security/cert/CertStoreSpi#engineGetCRLs(java.security.cert.CRLSelector))`(`[CRLSelector](https://developer.android.com/reference/java/security/cert/CRLSelector)` selector) ` Returns a`Collection`of`CRL`s that match the specified selector.                            |
| ` abstract `[Collection](https://developer.android.com/reference/java/util/Collection)`<? extends `[Certificate](https://developer.android.com/reference/java/security/cert/Certificate)`>` | ` `[engineGetCertificates](https://developer.android.com/reference/java/security/cert/CertStoreSpi#engineGetCertificates(java.security.cert.CertSelector))`(`[CertSelector](https://developer.android.com/reference/java/security/cert/CertSelector)` selector) ` Returns a`Collection`of`Certificate`s that match the specified selector. |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed.                   | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||

## Public constructors

### CertStoreSpi

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public CertStoreSpi (CertStoreParameters params)
```

The sole constructor.

<br />

|                                      Parameters                                      ||
|----------|----------------------------------------------------------------------------|
| `params` | `CertStoreParameters`: the initialization parameters (may be`null`) <br /> |

|                                                                                                  Throws                                                                                                   ||
|--------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------|
| [InvalidAlgorithmParameterException](https://developer.android.com/reference/java/security/InvalidAlgorithmParameterException) | if the initialization parameters are inappropriate for this`CertStoreSpi` |

## Public methods

### engineGetCRLs

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public abstract Collection<? extends CRL> engineGetCRLs (CRLSelector selector)
```

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.

<br />

|                                                                   Parameters                                                                    ||
|------------|-------------------------------------------------------------------------------------------------------------------------------------|
| `selector` | `CRLSelector`: A`CRLSelector`used to select which`CRL`s should be returned. Specify`null`to return all`CRL`s (if supported). <br /> |

|                                                                                                                    Returns                                                                                                                    ||
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| [Collection](https://developer.android.com/reference/java/util/Collection)`<? extends `[CRL](https://developer.android.com/reference/java/security/cert/CRL)`>` | A`Collection`of`CRL`s that match the specified selector (never`null`) <br /> |

|                                                           Throws                                                            ||
|-----------------------------------------------------------------------------------------------------|------------------------|
| [CertStoreException](https://developer.android.com/reference/java/security/cert/CertStoreException) | if an exception occurs |

### engineGetCertificates

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public abstract Collection<? extends Certificate> engineGetCertificates (CertSelector selector)
```

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.

<br />

|                                                                            Parameters                                                                             ||
|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
| `selector` | `CertSelector`: A`CertSelector`used to select which`Certificate`s should be returned. Specify`null`to return all`Certificate`s (if supported). <br /> |

|                                                                                                                                Returns                                                                                                                                ||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
| [Collection](https://developer.android.com/reference/java/util/Collection)`<? extends `[Certificate](https://developer.android.com/reference/java/security/cert/Certificate)`>` | A`Collection`of`Certificate`s that match the specified selector (never`null`) <br /> |

|                                                           Throws                                                            ||
|-----------------------------------------------------------------------------------------------------|------------------------|
| [CertStoreException](https://developer.android.com/reference/java/security/cert/CertStoreException) | if an exception occurs |