public class CertPathBuilder extends Object
这个类使用基于提供者的架构。 要创建一个CertPathBuilder
,请调用静态getInstance
方法之一,传递所需的算法名称为CertPathBuilder
,并可选地提供所需的提供者的名称。
一旦创建了一个CertPathBuilder
对象,就可以通过调用build
方法并传递一个算法特定的参数集来构建认证路径。 如果成功,结果(包括构建的CertPath
)在实现CertPathBuilderResult
接口的对象中返回。
getRevocationChecker()
方法允许应用CertPathBuilder
在检查证书的撤销状态时指定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
实例不需要同步。
CertPath
Modifier | Constructor and Description |
---|---|
protected |
CertPathBuilder(CertPathBuilderSpi builderSpi, Provider provider, String algorithm)
创建给定算法的
CertPathBuilder 对象,并将给定的提供者实现(SPI对象)封装在其中。
|
Modifier and Type | Method and Description |
---|---|
CertPathBuilderResult |
build(CertPathParameters params)
尝试使用指定的算法参数集构建认证路径。
|
String |
getAlgorithm()
返回此
CertPathBuilder 的名称。
|
static String |
getDefaultType()
返回
certpathbuilder.type 安全属性指定的默认值
CertPathBuilder ,否则不存在此类属性的字符串“PKIX”。
|
static CertPathBuilder |
getInstance(String algorithm)
返回实现
CertPathBuilder 对象。
|
static CertPathBuilder |
getInstance(String algorithm, Provider provider)
返回实现
CertPathBuilder 对象。
|
static CertPathBuilder |
getInstance(String algorithm, String provider)
返回实现
CertPathBuilder 对象。
|
Provider |
getProvider()
返回此
CertPathBuilder 的提供者。
|
CertPathChecker |
getRevocationChecker()
返回
CertPathChecker ,该封装
CertPathBuilderSpi 实现使用检查证书的吊销状态。
|
protected CertPathBuilder(CertPathBuilderSpi builderSpi, Provider provider, String algorithm)
CertPathBuilder
对象,并将给定的提供者实现(SPI对象)封装在其中。
builderSpi
- 提供者实现
provider
- 提供商
algorithm
- 算法名称
public static CertPathBuilder getInstance(String algorithm) throws NoSuchAlgorithmException
CertPathBuilder
对象。
此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装CertPathBuilderSpi实现的新CertPathBuilder对象。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
algorithm
- 所请求的CertPathBuilder
算法的名称。
看到的CertPathBuilder部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
CertPathBuilder
指定算法的CertPathBuilder对象。
NoSuchAlgorithmException
- 如果没有提供者支持指定算法的CertPathBuilderSpi实现。
Provider
public static CertPathBuilder getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
CertPathBuilder
对象。
返回从指定提供程序封装CertPathBuilderSpi实现的新CertPathBuilder对象。 指定的提供者必须在安全提供程序列表中注册。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
algorithm
- 所请求的CertPathBuilder
算法的名称。
看到的CertPathBuilder部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
provider
- 提供者的名称。
CertPathBuilder
指定算法的CertPathBuilder对象。
NoSuchAlgorithmException
- 如果指定算法的CertPathBuilderSpi实现不能从指定的提供程序获得。
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册。
IllegalArgumentException
- 如果
provider
为空或为空。
Provider
public static CertPathBuilder getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
CertPathBuilder
对象。
返回从指定的Provider对象封装CertPathBuilderSpi实现的新的CertPathBuilder对象。 请注意,指定的Provider对象不必在提供者列表中注册。
algorithm
- 所请求的CertPathBuilder
算法的名称。
看到的CertPathBuilder部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
provider
- 提供商。
CertPathBuilder
指定算法的CertPathBuilder对象。
NoSuchAlgorithmException
- 如果指定的算法的CertPathBuilderSpi实现从指定的Provider对象不可用。
IllegalArgumentException
- 如果
provider
为空。
Provider
public final Provider getProvider()
CertPathBuilder
的提供者。
CertPathBuilder
的提供者
public final String getAlgorithm()
CertPathBuilder
的名称。
CertPathBuilder
的名称就是这个
CertPathBuilder
public final CertPathBuilderResult build(CertPathParameters params) throws CertPathBuilderException, InvalidAlgorithmParameterException
params
- 算法参数
CertPathBuilderException
- 如果构建器不能构造满足指定参数的认证路径
InvalidAlgorithmParameterException
- 如果指定的参数不适合此
CertPathBuilder
public static final String getDefaultType()
certpathbuilder.type
安全属性指定的默认CertPathBuilder
类型,如果不存在此属性,则返回字符串“PKIX”。
当调用getInstance
方法之一时,默认的CertPathBuilder
类型可以被不想使用硬编码类型的getInstance
程序使用,并且要提供默认类型,以防用户没有指定自己的类型。
通过将certpathbuilder.type
安全属性的值设置为CertPathBuilder
类型,可以更改默认值CertPathBuilder
类型。
CertPathBuilder
类型由
certpathbuilder.type
安全属性,或字符串“PKIX”,如果没有这样的属性存在。
security properties
public final CertPathChecker getRevocationChecker()
CertPathChecker
,该封装CertPathBuilderSpi
实现使用检查证书的吊销状态。
PKIX实现返回PKIXRevocationChecker
类型的PKIXRevocationChecker
。
此方法的每次调用返回一个新的实例CertPathChecker
。
此方法的主要目的是允许调用者指定额外的输入参数和特定于撤销检查的选项。 参见课程说明一个例子。
CertPathChecker
UnsupportedOperationException
- 如果服务提供商不支持此方法