此类使用基于提供程序的架构。要创建一个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
ConstructorsModifierConstructorDescriptionprotectedCertPathValidator(CertPathValidatorSpi validatorSpi, Provider provider, String algorithm) 创建给定算法的CertPathValidator对象,并将给定的提供程序实现(SPI对象)封装在其中。 -
Method Summary
Modifier and TypeMethodDescriptionfinal String返回此CertPathValidator的算法名称。static final String返回由certpathvalidator.type安全属性指定的默认CertPathValidator类型,如果不存在此类属性,则返回字符串"PKIX"。static CertPathValidatorgetInstance(String algorithm) 返回实现指定算法的CertPathValidator对象。static CertPathValidatorgetInstance(String algorithm, String provider) 返回实现指定算法的CertPathValidator对象。static CertPathValidatorgetInstance(String algorithm, Provider provider) 返回实现指定算法的CertPathValidator对象。final Provider返回此CertPathValidator的Provider。final CertPathChecker返回封装的CertPathValidatorSpi实现用于检查证书吊销状态的CertPathChecker。final CertPathValidatorResultvalidate(CertPath certPath, CertPathParameters params) 使用指定的算法参数集验证指定的认证路径。
-
Constructor Details
-
CertPathValidator
创建给定算法的CertPathValidator对象,并将给定的提供程序实现(SPI对象)封装在其中。- 参数:
-
validatorSpi- 提供程序实现 -
provider- 提供程序 -
algorithm- 算法名称
-
-
Method Details
-
getInstance
返回实现指定算法的CertPathValidator对象。此方法遍历注册的安全提供程序列表,从最优先的提供程序开始。返回封装来自支持指定算法的第一个提供程序的CertPathValidatorSpi实现的新CertPathValidator对象。
请注意,可以通过
Security.getProviders()方法检索注册的提供程序列表。- 实现注意:
-
JDK参考实现另外使用
jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供程序顺序。这可能与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
-