- 所有已实现的接口:
-
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编码:
PKCS7PkiPath
并发访问
所有CertPath对象必须是线程安全的。也就是说,多个线程可以同时在单个CertPath对象(或多个对象)上调用此类中定义的方法,而不会产生任何不良影响。对于CertPath.getCertificates返回的List也是如此。
要求CertPath对象是不可变的和线程安全的,允许它们传递给各种代码片段而无需担心协调访问。提供这种线程安全通常并不困难,因为涉及的CertPath和List对象都是不可变的。
- 自从:
- 1.4
- 参见:
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean将此认证路径与指定对象进行相等性比较。abstract List<? extends Certificate> 返回此认证路径中的证书列表。abstract byte[]返回此认证路径的编码形式,使用默认编码。abstract byte[]getEncoded(String encoding) 返回此认证路径的编码形式,使用指定的编码。返回此认证路径支持的编码的迭代器,首先是默认编码。getType()返回此认证路径中的Certificate类型。inthashCode()返回此认证路径的哈希码。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对象
-