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/CertPathValidatorSpi#pubctors) \| [Methods](https://developer.android.com/reference/java/security/cert/CertPathValidatorSpi#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/security/cert/CertPathValidatorSpi#inhmethods)

# CertPathValidatorSpi

` public abstract class CertPathValidatorSpi `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

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

<br />

*** ** * ** ***

The *Service Provider Interface* (**SPI** ) for the `https://developer.android.com/reference/java/security/cert/CertPathValidator` class. All `CertPathValidator` implementations must include a class (the SPI class) that extends this class (`CertPathValidatorSpi`) and implements all of its methods. In general, instances of this class should only be accessed through the `CertPathValidator` class. For details, see the Java Cryptography Architecture.

**Concurrent Access**

Instances of this class need not be protected against concurrent access from multiple threads. Threads that need to access a single `CertPathValidatorSpi` instance concurrently should synchronize amongst themselves and provide the necessary locking before calling the wrapping `CertPathValidator` object.

However, implementations of `CertPathValidatorSpi` may still encounter concurrency issues, since multiple threads each manipulating a different `CertPathValidatorSpi` instance need not synchronize.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/java/security/cert/CertPathValidatorSpi#CertPathValidatorSpi()() ` The default constructor. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/security/cert/CertPathChecker` | ` https://developer.android.com/reference/java/security/cert/CertPathValidatorSpi#engineGetRevocationChecker()() ` Returns a `CertPathChecker` that this implementation uses to check the revocation status of certificates. |
| ` abstract https://developer.android.com/reference/java/security/cert/CertPathValidatorResult` | ` https://developer.android.com/reference/java/security/cert/CertPathValidatorSpi#engineValidate(java.security.cert.CertPath,%20java.security.cert.CertPathParameters)(https://developer.android.com/reference/java/security/cert/CertPath certPath, https://developer.android.com/reference/java/security/cert/CertPathParameters params) ` Validates the specified certification path using the specified algorithm parameter set. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` 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 https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` 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` ` 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` ` 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

### CertPathValidatorSpi

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

```
public CertPathValidatorSpi ()
```

The default constructor.

<br />

## Public methods

### engineGetRevocationChecker

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

```
public CertPathChecker engineGetRevocationChecker ()
```

Returns a `CertPathChecker` that this implementation uses to check the revocation status of certificates. A PKIX implementation returns objects of type `PKIXRevocationChecker`.

The primary purpose of this method is to allow callers to specify additional input parameters and options specific to revocation checking. See the class description of `CertPathValidator` for an example.

This method was added to version 1.8 of the Java Platform Standard Edition. In order to maintain backwards compatibility with existing service providers, this method cannot be abstract and by default throws an `UnsupportedOperationException`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/security/cert/CertPathChecker` | a `CertPathChecker` that this implementation uses to check the revocation status of certificates <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | if this method is not supported |

### engineValidate

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

```
public abstract CertPathValidatorResult engineValidate (CertPath certPath, 
                CertPathParameters params)
```

Validates the specified certification path using the specified algorithm parameter set.

The `CertPath` specified must be of a type that is supported by the validation algorithm, otherwise an `InvalidAlgorithmParameterException` will be thrown. For example, a `CertPathValidator` that implements the PKIX algorithm validates `CertPath` objects of type X.509.

<br />

| Parameters ||
|---|---|
| `certPath` | `CertPath`: the `CertPath` to be validated <br /> |
| `params` | `CertPathParameters`: the algorithm parameters <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/security/cert/CertPathValidatorResult` | the result of the validation algorithm <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/security/InvalidAlgorithmParameterException` | if the specified parameters or the type of the specified `CertPath` are inappropriate for this `CertPathValidator` |
| `https://developer.android.com/reference/java/security/cert/CertPathValidatorException` | if the `CertPath` does not validate |