- java.lang.Object
-
- java.security.cert.CertPath
-
- 实现的所有接口
-
Serializable
public abstract class CertPath extends Object implements Serializable
不可变的证书序列(证书路径)。这是一个抽象类,它定义了所有
CertPath的方法。 子类可以处理不同类型的证书(X.509,PGP等)。所有
CertPath对象都有一个类型,一个Certificate的列表,以及一个或多个支持的编码。 因为CertPath类是不可变的,所以CertPath在构造之后不能以任何外部可见的方式改变。 此规定适用于此类的所有公共字段和方法以及由子类添加或重写的任何公共字段和方法。类型为
String,用于标识证书路径中Certificate的类型。 对于每个证书cert证书路径certPath,cert.getType().equals(certPath.getType())必须是true。Certificate的列表是零或更多Certificate的订购List。List及其中包含的所有Certificate必须是不可变的。每个
CertPath对象必须支持一个或多个编码,以便可以将对象转换为字节数组,以便存储或传输给其他方。 优选地,这些编码应该是充分记录的标准(例如PKCS#7)。CertPath支持的编码CertPath被认为是默认编码。 如果未明确请求编码,则使用此编码(例如,对于getEncoded()方法)。所有
CertPath项目也是Serializable。 在序列化期间,CertPath对象被解析为备用CertPathRep对象。 这允许将CertPath对象序列化为等效表示,而不管其底层实现如何。CertPath对象可以使用CertificateFactory创建,也可以由其他类返回,例如CertPathBuilder。按照惯例,X.509
CertPathS(由X509CertificateS),是有序开头的目标,证书和与信任锚颁发的证书结束。 也就是说,一个证书的发行者是下一个证书的主题。 代表TrustAnchor的证书不应包含在认证路径中。 未经验证的X.509CertPath可能不遵循这些约定。 PKIXCertPathValidators将检测导致认证路径无效的这些约定的任何偏离并抛出CertPathValidatorException。Java平台的每个实现都需要支持以下标准
CertPath编码:-
PKCS7 -
PkiPath
并发访问
所有
CertPath对象必须是线程安全的。 也就是说,多个线程可以同时在单个CertPath对象(或多个)上调用此类中定义的方法,而不会产生任何不良影响。List返回的CertPath.getCertificates也是如此。要求
CertPath对象是不可变的和线程安全的,允许它们传递给各种代码而不必担心协调访问。 提供这种线程安全性通常并不困难,因为所CertPath和List对象是不可变的。- 从以下版本开始:
- 1.4
- 另请参见:
-
CertificateFactory,CertPathBuilder, Serialized Form
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 protected static classCertPath.CertPathRep替代CertPath类进行序列化。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 booleanequals(Object other)将此证书路径与指定对象进行相等性比较。abstract List<? extends Certificate>getCertificates()返回此证书路径中的证书列表。abstract byte[]getEncoded()使用默认编码返回此证书路径的编码形式。abstract byte[]getEncoded(String encoding)使用指定的编码返回此证书路径的编码形式。abstract Iterator<String>getEncodings()返回此证书路径支持的编码的迭代,首先使用默认编码。StringgetType()返回此证书路径中Certificate的类型。inthashCode()返回此证书路径的哈希码。StringtoString()返回此证书路径的字符串表示形式。protected ObjectwriteReplace()替换CertPath成与被序列CertPathRep对象。
-
-
-
构造方法详细信息
-
CertPath
protected CertPath(String type)
创建指定类型的CertPath。此构造函数受到保护,因为大多数用户应使用
CertificateFactory创建CertPath。- 参数
-
type- 此路径中Certificate类型的标准名称
-
-
方法详细信息
-
getType
public String getType()
返回此证书路径中Certificate的类型。 这与cert.getType()为证书路径中的所有Certificate返回的字符串相同。- 结果
-
此证书路径中
Certificate的类型(永不为空)
-
getEncodings
public abstract Iterator<String> getEncodings()
返回此证书路径支持的编码的迭代,首先使用默认编码。 尝试通过其remove方法修改返回的Iterator,结果为UnsupportedOperationException。- 结果
-
一个
Iterator在支持的编码的名称上(作为字符串)
-
equals
public boolean equals(Object other)
将此证书路径与指定对象进行相等性比较。 两个CertPath是相等的,当且仅当它们的类型相等且它们的证书Lists(并暗示Certificates中的Lists)相等时。CertPath永远不会等于不是CertPath的对象。该算法由该方法实现。 如果被覆盖,则必须维护此处指定的行为。
- 重写:
-
equals在类Object - 参数
-
other- 要测试与此证书路径是否相等的对象 - 结果
- 如果指定的对象等于此证书路径,则返回true,否则返回false
- 另请参见:
-
Object.hashCode(),HashMap
-
hashCode
public int hashCode()
返回此证书路径的哈希码。 证书路径的哈希码被定义为以下计算的结果:这确保hashCode = path.getType().hashCode(); hashCode = 31*hashCode + path.getCertificates().hashCode();path1.equals(path2)暗示path1.hashCode()==path2.hashCode()用于任何两个认证路径path1和path2,如path2的一般合同所Object.hashCode。- 重写:
-
hashCode类Object - 结果
- 此证书路径的哈希码值
- 另请参见:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
toString
public String toString()
返回此证书路径的字符串表示形式。 这将调用toString在每个方法CertificateS IN的路径。
-
getEncoded
public abstract byte[] getEncoded() throws CertificateEncodingException使用默认编码返回此证书路径的编码形式。- 结果
- 编码的字节
- 异常
-
CertificateEncodingException- 如果发生编码错误
-
getEncoded
public abstract byte[] getEncoded(String encoding) throws CertificateEncodingException
使用指定的编码返回此证书路径的编码形式。- 参数
-
encoding- 要使用的编码的名称 - 结果
- 编码的字节
- 异常
-
CertificateEncodingException- 如果发生编码错误或不支持所请求的编码
-
getCertificates
public abstract List<? extends Certificate> getCertificates()
返回此证书路径中的证书列表。 返回的List必须是不可变的和线程安全的。- 结果
-
一个不可变的
List的Certificates(可能是空的,但不是null)
-
writeReplace
protected Object writeReplace() throws ObjectStreamException
将CertPath替换为CertPathRep对象的序列化。- 结果
-
要序列化的
CertPathRep - 异常
-
ObjectStreamException- 如果无法创建表示此证书路径的CertPathRep对象
-
-