- 所有已实现的接口:
-
Serializable
这是一个抽象类,定义了所有CertPath
通用的方法。子类可以处理不同类型的证书(X.509、PGP等)。
所有CertPath
对象都有一个类型、一个Certificate
列表和一个或多个支持的编码。因为CertPath
类是不可变的,一个CertPath
在构造后不能以任何外部可见的方式更改。这个规定适用于这个类的所有公共字段和方法,以及子类添加或重写的任何字段或方法。
类型是一个String
,用于标识认证路径中的Certificate
类型。对于认证路径certPath
中的每个证书cert
,必须满足cert.getType().equals(certPath.getType())
为true
。
Certificate
列表是一个有序的零个或多个Certificate
的List
。这个List
和其中包含的所有Certificate
必须是不可变的。
每个CertPath
对象必须支持一个或多个编码,以便将对象转换为字节数组,以便存储或传输给其他方。最好,这些编码应该是有文档记录的标准(如PKCS#7)。CertPath
支持的编码之一被视为默认编码。如果没有明确请求编码(例如对于getEncoded()
方法),则使用此编码。
所有CertPath
对象也都是Serializable
的。在序列化期间,CertPath
对象会被解析为一个替代的CertPathRep
对象。这允许将CertPath
对象序列化为等效表示,而不考虑其底层实现。
CertPath
对象可以使用CertificateFactory
创建,也可以由其他类返回,例如CertPathBuilder
。
按照惯例,X.509 CertPath
(由X509Certificate
组成)的顺序从目标证书开始,以信任锚点颁发的证书结束。也就是说,一个证书的颁发者是下一个证书的主题。不应在认证路径中包含代表TrustAnchor
的证书。未经验证的X.509 CertPath
可能不遵循这些约定。PKIX CertPathValidator
将检测任何违反这些约定导致认证路径无效的情况,并抛出CertPathValidatorException
。
Java平台的每个实现都必须支持以下标准CertPath
编码:
PKCS7
PkiPath
并发访问
所有CertPath
对象必须是线程安全的。也就是说,多个线程可以同时在单个CertPath
对象(或多个对象)上调用此类中定义的方法,而不会产生任何不良影响。对于CertPath.getCertificates
返回的List
也是如此。
要求CertPath
对象是不可变的和线程安全的,允许它们传递给各种代码片段而无需担心协调访问。提供这种线程安全通常并不困难,因为涉及的CertPath
和List
对象都是不可变的。
- 自从:
- 1.4
- 参见:
-
Nested Class Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
将此认证路径与指定对象进行相等性比较。abstract List
<? extends Certificate> 返回此认证路径中的证书列表。abstract byte[]
返回此认证路径的编码形式,使用默认编码。abstract byte[]
getEncoded
(String encoding) 返回此认证路径的编码形式,使用指定的编码。返回此认证路径支持的编码的迭代器,首先是默认编码。getType()
返回此认证路径中的Certificate
类型。int
hashCode()
返回此认证路径的哈希码。toString()
返回此认证路径的字符串表示形式。protected Object
用包含Certificate
类型和CertPath
的编码字节的CertPathRep
对象替换要序列化的CertPath
。
-
Constructor Details
-
CertPath
创建指定类型的CertPath
。此构造函数是受保护的,因为大多数用户应该使用
CertificateFactory
来创建CertPath
。- 参数:
-
type
- 此路径中Certificate
类型的标准名称
-
-
Method Details
-
getType
返回此认证路径中的Certificate
类型。这与认证路径中所有Certificate
的cert.getType()
返回的字符串相同。- 返回:
-
此认证路径中的
Certificate
类型(永不为null)
-
getEncodings
返回此认证路径支持的编码的迭代器,首先是默认编码。尝试通过其remove
方法修改返回的Iterator
会导致UnsupportedOperationException
。- 返回:
-
支持的编码名称(作为字符串)的
Iterator
-
equals
将此认证路径与指定对象进行相等性比较。当且仅当它们的类型相等且它们的证书List
(以及由此推断出的List
中的Certificate
)相等时,两个CertPath
才相等。一个CertPath
永远不会等于不是CertPath
的对象。此算法由此方法实现。如果被覆盖,必须保持此处指定的行为。
-
hashCode
public int hashCode()返回此认证路径的哈希码。认证路径的哈希码定义为以下计算结果:
这确保了hashCode = path.getType().hashCode(); hashCode = 31*hashCode + path.getCertificates().hashCode();
path1.equals(path2)
意味着对于任何两个认证路径path1
和path2
,path1.hashCode()==path2.hashCode()
,这是Object.hashCode
的一般契约所要求的。 -
toString
返回此认证路径的字符串表示形式。这会调用路径中每个Certificate
的toString
方法。 -
getEncoded
返回此认证路径的编码形式,使用默认编码。- 返回:
- 编码字节
- 抛出:
-
CertificateEncodingException
- 如果发生编码错误
-
getEncoded
返回此认证路径的编码形式,使用指定的编码。- 参数:
-
encoding
- 要使用的编码名称 - 返回:
- 编码字节
- 抛出:
-
CertificateEncodingException
- 如果发生编码错误或不支持请求的编码
-
getCertificates
返回此认证路径中的证书列表。返回的List
必须是不可变的和线程安全的。- 返回:
-
一个不可变的
List
,包含Certificate
(可能为空,但不为null)
-
writeReplace
用包含Certificate
类型和CertPath
的编码字节的CertPathRep
对象替换要序列化的CertPath
。- 返回:
-
一个包含
Certificate
类型和CertPath
编码字节的CertPathRep
- 抛出:
-
ObjectStreamException
- 如果无法创建代表此认证路径的CertPathRep
对象
-