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