此类使用基于提供程序的架构。要创建一个CertPathValidator
,请调用其中一个静态getInstance
方法,传入所需的CertPathValidator
的算法名称,可选地传入所需的提供程序的名称。
创建了CertPathValidator
对象后,可以通过调用validate
方法并传入要验证的CertPath
和特定于算法的参数集来验证认证路径。如果成功,结果将以实现CertPathValidatorResult
接口的对象返回。
getRevocationChecker()
方法允许应用程序指定CertPathValidator
在检查证书吊销状态时使用的附加特定于算法的参数和选项。以下是演示如何与PKIX算法一起使用的示例:
CertPathValidator cpv = CertPathValidator.getInstance("PKIX"); PKIXRevocationChecker rc = (PKIXRevocationChecker)cpv.getRevocationChecker(); rc.setOptions(EnumSet.of(Option.SOFT_FAIL)); params.addCertPathChecker(rc); CertPathValidatorResult cpvr = cpv.validate(path, params);
Java平台的每个实现都必须支持以下标准CertPathValidator
算法:
PKIX
并发访问
此类的静态方法保证是线程安全的。多个线程可以同时调用此类中定义的静态方法而不会产生任何不良影响。
但是,对于此类定义的非静态方法来说并非如此。除非特定提供程序另有说明,需要同时访问单个CertPathValidator
实例的线程应在彼此之间同步并提供必要的锁定。每个操作不同CertPathValidator
实例的多个线程无需同步。
- 自版本:
- 1.4
- 参见:
-
Constructor Summary
ModifierConstructorDescriptionprotected
CertPathValidator
(CertPathValidatorSpi validatorSpi, Provider provider, String algorithm) 创建给定算法的CertPathValidator
对象,并将给定的提供程序实现(SPI对象)封装在其中。 -
Method Summary
Modifier and TypeMethodDescriptionfinal String
返回此CertPathValidator
的算法名称。static final String
返回由certpathvalidator.type
安全属性指定的默认CertPathValidator
类型,如果不存在此类属性,则返回字符串"PKIX"。static CertPathValidator
getInstance
(String algorithm) 返回实现指定算法的CertPathValidator
对象。static CertPathValidator
getInstance
(String algorithm, String provider) 返回实现指定算法的CertPathValidator
对象。static CertPathValidator
getInstance
(String algorithm, Provider provider) 返回实现指定算法的CertPathValidator
对象。final Provider
返回此CertPathValidator
的Provider
。final CertPathChecker
返回封装的CertPathValidatorSpi
实现用于检查证书吊销状态的CertPathChecker
。final CertPathValidatorResult
validate
(CertPath certPath, CertPathParameters params) 使用指定的算法参数集验证指定的认证路径。
-
Constructor Details
-
CertPathValidator
创建给定算法的CertPathValidator
对象,并将给定的提供程序实现(SPI对象)封装在其中。- 参数:
-
validatorSpi
- 提供程序实现 -
provider
- 提供程序 -
algorithm
- 算法名称
-
-
Method Details
-
getInstance
返回实现指定算法的CertPathValidator
对象。此方法遍历注册的安全提供程序列表,从最优先的提供程序开始。返回封装来自支持指定算法的第一个提供程序的CertPathValidatorSpi实现的新CertPathValidator对象。
请注意,可以通过
Security.getProviders()
方法检索注册的提供程序列表。- 实现注意:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供程序顺序。这可能与Security.getProviders()
返回的提供程序顺序不同。 - 参数:
-
algorithm
- 请求的CertPathValidator
算法的名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的CertPathValidator部分。 - 返回:
-
实现指定算法的
CertPathValidator
对象 - 抛出:
-
NoSuchAlgorithmException
- 如果没有Provider
支持指定算法的CertPathValidatorSpi
实现 -
NullPointerException
- 如果algorithm
为null
- 参见:
-
getInstance
public static CertPathValidator getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 返回实现指定算法的CertPathValidator
对象。返回封装来自指定提供程序的CertPathValidatorSpi实现的新CertPathValidator对象。指定的提供程序必须在安全提供程序列表中注册。
请注意,可以通过
Security.getProviders()
方法检索注册的提供程序列表。- 参数:
-
algorithm
- 请求的CertPathValidator
算法的名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的CertPathValidator部分。 -
provider
- 提供程序的名称。 - 返回:
-
实现指定算法的
CertPathValidator
对象 - 抛出:
-
IllegalArgumentException
- 如果provider
为null
或为空 -
NoSuchAlgorithmException
- 如果指定提供程序中不可用指定算法的CertPathValidatorSpi
实现 -
NoSuchProviderException
- 如果指定提供程序未在安全提供程序列表中注册 -
NullPointerException
- 如果algorithm
为null
- 参见:
-
getInstance
public static CertPathValidator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 返回实现指定算法的CertPathValidator
对象。返回封装来自指定Provider对象的CertPathValidatorSpi实现的新CertPathValidator对象。请注意,指定的Provider对象不必在提供程序列表中注册。
- 参数:
-
algorithm
- 请求的CertPathValidator
算法的名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的CertPathValidator部分。 -
provider
- 提供程序。 - 返回:
-
实现指定算法的
CertPathValidator
对象 - 抛出:
-
IllegalArgumentException
- 如果provider
为null
-
NoSuchAlgorithmException
- 如果指定Provider对象中不可用指定算法的CertPathValidatorSpi
实现 -
NullPointerException
- 如果algorithm
为null
- 参见:
-
getProvider
返回此CertPathValidator
的Provider
。- 返回:
-
此
CertPathValidator
的Provider
-
getAlgorithm
返回此CertPathValidator
的算法名称。- 返回:
-
此
CertPathValidator
的算法名称
-
validate
public final CertPathValidatorResult validate(CertPath certPath, CertPathParameters params) throws CertPathValidatorException, InvalidAlgorithmParameterException 使用指定的算法参数集验证指定的认证路径。指定的
CertPath
必须是验证算法支持的类型,否则将抛出InvalidAlgorithmParameterException
。例如,实现PKIX算法的CertPathValidator
验证X.509类型的CertPath
对象。- 参数:
-
certPath
- 要验证的CertPath
-
params
- 算法参数 - 返回值:
- 验证算法的结果
- 抛出:
-
CertPathValidatorException
- 如果CertPath
无法验证 -
InvalidAlgorithmParameterException
- 如果指定的参数或指定的CertPath
的类型不适用于此CertPathValidator
-
getDefaultType
返回由certpathvalidator.type
安全属性指定的默认CertPathValidator
类型,如果不存在此类属性,则返回字符串"PKIX"。默认
CertPathValidator
类型可供不希望在调用getInstance
方法时使用硬编码类型,并希望在用户未指定自己的类型时提供默认类型的应用程序使用。可以通过将
certpathvalidator.type
安全属性的值设置为所需的类型来更改默认CertPathValidator
类型。- 返回值:
-
由
certpathvalidator.type
安全属性指定的默认CertPathValidator
类型,如果不存在此类属性,则返回字符串"PKIX"。 - 参见:
-
getRevocationChecker
返回一个CertPathChecker
,封装的CertPathValidatorSpi
实现用于检查证书的吊销状态。PKIX实现返回PKIXRevocationChecker
类型的对象。每次调用此方法都会返回一个新的CertPathChecker
实例。此方法的主要目的是允许调用者指定与吊销检查特定的额外输入参数和选项。请参阅类描述以获取示例。
- 返回值:
-
一个
CertPathChecker
- 抛出:
-
UnsupportedOperationException
- 如果服务提供程序不支持此方法 - 自版本:
- 1.8
-