- java.lang.Object
-
- java.security.cert.CertPath
-
- All Implemented Interfaces:
-
Serializable
public abstract class CertPath extends Object implements Serializable
证书的不可变序列(认证路径)。这是一个抽象类,它定义了所有
CertPath
的共同方法。 子类可以处理不同类型的证书(X.509,PGP等)。所有
CertPath
对象都有一个类型,一个Certificate
s的列表,以及一个或多个支持的编码。 因为CertPath
类是不可变的,所以在CertPath
,CertPath
不能以任何外部可见的方式改变。 这个规定适用于这个类的所有公共领域和方法,以及任何由子类添加或覆盖的规则。类型是
String
标识的类型Certificate
S IN的证书路径。 对于每个证书cert
证书路径certPath
,cert.getType().equals(certPath.getType())
必须是true
。Certificate
的列表是List
的零或多个Certificate
的有序List
。 这个List
和Certificate
包含的所有List
都必须是不可变的。每个
CertPath
对象必须支持一个或多个编码,以便将对象转换为字节数组以存储或传输给其他方。 优选地,这些编码应该是有良好记录的标准(例如PKCS#7)。CertPath
支持的编码CertPath
被认为是默认编码。 如果没有显式请求编码,则使用此编码(例如,对于getEncoded()
方法)。全部
CertPath
对象也是Serializable
。CertPath
对象在序列化期间被解析为备用的CertPathRep
对象。 这允许将CertPath
对象序列化为等效表示,而不管其底层实现。可以使用
CertificateFactory
创建CertPath
对象,或者可以由其他类返回,如CertPathBuilder
。按照惯例,X.509
CertPath
S(由X509Certificate
S),是有序开头的目标,证书和与信任锚颁发的证书结束。 也就是说,一个证书的颁发者是下面的一个证书的主题。 代表TrustAnchor
的证书不应包含在认证路径中。 未验证X.509CertPath
可能不遵循这些约定。 PKIXCertPathValidator
将检测到这些约定的任何偏离,导致认证路径无效并抛出一个CertPathValidatorException
。Java平台的每个实现都需要支持以下标准
CertPath
编码:-
PKCS7
-
PkiPath
并发访问
所有
CertPath
对象必须是线程安全的。 也就是说,多个线程可以在单个CertPath
对象(或多个)上同时调用此类中定义的方法,而不会产生不良影响。 对于List
返回的CertPath.getCertificates
也是如此。要求
CertPath
对象是不可变的和线程安全的,可以让它们传递到各种代码,而不用担心协调访问。 提供这种线程安全性通常并不困难,因为所CertPath
和List
对象是不可变的。- 从以下版本开始:
- 1.4
- 另请参见:
-
CertificateFactory
,CertPathBuilder
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 protected static class
CertPath.CertPathRep
替代CertPath
类用于序列化。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 boolean
equals(Object other)
将此认证路径与指定的对象进行比较。abstract List<? extends Certificate>
getCertificates()
返回此认证路径中的证书列表。abstract byte[]
getEncoded()
使用默认编码返回此认证路径的编码形式。abstract byte[]
getEncoded(String encoding)
使用指定的编码返回此认证路径的编码形式。abstract Iterator<String>
getEncodings()
返回此认证路径支持的编码的迭代,并使用默认编码。String
getType()
返回此认证路径中的Certificate
的类型。int
hashCode()
返回此认证路径的哈希码。String
toString()
返回此认证路径的字符串表示形式。protected Object
writeReplace()
替换CertPath
以使用CertPathRep
对象进行序列化。
-
-
-
构造方法详细信息
-
CertPath
protected CertPath(String type)
创建指定类型的CertPath
。此构造函数受到保护,因为大多数用户应使用
CertificateFactory
创建CertPath
。- 参数
-
type
- 此路径中Certificate
的类型的标准名称
-
-
方法详细信息
-
getType
public String getType()
返回此认证路径中的Certificate
的类型。 这是cert.getType()
对于认证路径中所有Certificate
都将返回的字符串。- 结果
-
该认证路径中的类型为
Certificate
(从不为null)
-
getEncodings
public abstract Iterator<String> getEncodings()
返回此认证路径支持的编码的迭代,并使用默认编码。 尝试通过其remove
方法修改返回的Iterator
产生一个UnsupportedOperationException
。- 结果
-
一个
Iterator
的支持编码的名称(作为字符串)
-
equals
public boolean equals(Object other)
将此认证路径与指定的对象进行比较。 两个CertPath
在相同的情况下是相等的,如果他们的类型相同,并且他们的证书List
(并且暗示Certificate
的List
)相等。 ACertPath
从不等于不是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
在每个方法Certificate
S 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
的Certificate
s(可能为空,但不为null)
-
writeReplace
protected Object writeReplace() throws ObjectStreamException
将CertPath
替换为CertPathRep
对象进行序列化。- 结果
-
CertPathRep
要序列化 - 异常
-
ObjectStreamException
- 如果无法创建表示此认证路径的对象CertPathRep
-
-