|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security.cert
类 CertPath
java.lang.Object java.security.cert.CertPath
- 所有已实现的接口:
- Serializable
-
public abstract class CertPath
- extends Object
- implements Serializable
不可变的证书序列(证书路径)。
这是一个抽象类,定义了常用于所有 CertPath
的方法。其子类可处理不同类型的证书(X.509、PGP 等等)。
所有 CertPath
对象都包含类型、Certificate
列表及其支持的一种或多种编码。由于 CertPath
类是不可变的,所以构造 CertPath
后无法以任何外部可见的方式更改它。此规定适用于此类的所有公共字段和方法,以及由子类添加或重写的所有公共字段和方法。
类型是标识证书路径中 Certificate
类型的一个 String
。对于证书路径 certPath
中的每个证书 cert
而言,cert.getType().equals(certPath.getType())
必须为 true
。
Certificate
列表是零个或多个 Certificate
的有序 List
。此 List
和其中所包含的所有 Certificate
都必须是不可变的。
每个 CertPath
对象必须支持一种或多种编码方式,这样可将对象转换成字节数组进行存储,或传输给其他方。这些编码最好应该具有记录良好的标准(例如 PKCS#7)。将 CertPath
支持的某种编码视为默认编码。如果没有显式地请求编码(例如,getEncoded()
方法),则使用此编码。
所有 CertPath
对象都是 Serializable
。在序列化期间将 CertPath
对象解析为一个替换的 CertPathRep
对象。这就允许不管 CertPath
对象的基础实现如何,都可以将该对象序列化为等效的表示形式。
可使用 CertificateFactory
创建 CertPath
对象,或者可通过其他类(如 CertPathBuilder
)返回这些对象。
按照惯例,X.509 CertPath
(由 X509Certificate
组成)的顺序按照从目标证书开始,从信任的定位点所发布的证书结束。也就是说,证书的发布方是以下某个主体。表示 TrustAnchor
的证书不应包括在证书路径中。未验证的 X.509 CertPath
可能不遵循这些约定。PKIX CertPathValidator
将检测任何与这些约定的偏差,这些偏差会导致证书路径无效并且抛出 CertPathValidatorException
。
并发访问
所有 CertPath
对象必须是线程安全的。也就是说,多个线程在单个 CertPath
对象(或多个对象)上并发调用此类中所定义的各种方法不会产生坏的影响。对于 CertPath.getCertificates
返回的 List
也应如此。
要求 CertPath
对象是不可变的并且是线程安全的,就允许将其传递到各种代码片断中,而无需担心协调访问。通常提供此种线程安全性并不难,因为相关的 CertPath
和 List
对象都是不可变的。
- 从以下版本开始:
- 1.4
- 另请参见:
-
CertificateFactory
,CertPathBuilder
, 序列化表格
嵌套类摘要 | |
---|---|
protected static class |
CertPath.CertPathRep 用于序列化的替换 CertPath 类。 |
构造方法摘要 | |
---|---|
protected |
CertPath(String type) 创建指定类型的 CertPath 。 |
方法摘要 | |
---|---|
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() 使用 CertPathRep 对象替换要被序列化的 CertPath 。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
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()
-
返回此证书路径支持的编码的迭代,默认编码方式优先。试图修改返回的
Iterator
(通过其remove
方法)会导致抛出UnsupportedOperationException
。 -
-
- 返回:
-
在受支持的编码的名称(以 String 的形式)上进行迭代的
Iterator
equals
public boolean equals(Object other)
-
比较此证书路径与指定对象的相等性。当且仅当两个
CertPath
的类型相等并且其证书List
(通过模拟这些List
中的Certificate
)相等时,这两个 CertPath 才相等。CertPath
不会等于一个非CertPath
对象。此方法实现此种算法。如果重写此方法,则必须维护在此指定的行为。
-
- 参数:
-
other
- 要与此证书路径进行相等性测试的对象 - 返回:
- 如果指定的对象等于此证书路径,则返回 true;否则返回 false
- 另请参见:
-
Object.hashCode()
,Hashtable
hashCode
public int hashCode()
-
返回此证书路径的哈希码。证书路径的哈希码定义为以下计算的结果:
这确保对于任意两个证书路径hashCode = path.getType().hashCode(); hashCode = 31*hashCode + path.getCertificates().hashCode();
path1
和path2
而言,path1.equals(path2)
就意味着path1.hashCode()==path2.hashCode()
,正如Object.hashCode
的常规协定所要求的那样。 -
- 返回:
- 此证书路径的哈希码值
- 另请参见:
-
Object.equals(java.lang.Object)
,Hashtable
toString
public String toString()
getEncoded
public abstract byte[] getEncoded() throws CertificateEncodingException
- 返回此证书路径的编码形式,使用默认的编码。
-
-
- 返回:
- 已编码的字节
- 抛出:
-
CertificateEncodingException
- 如果发生编码错误
getEncoded
public abstract byte[] getEncoded(String encoding) throws CertificateEncodingException
- 返回此证书路径的编码形式,使用指定的编码。
-
-
- 参数:
-
encoding
- 要使用的编码名称 - 返回:
- 已编码的字节
- 抛出:
-
CertificateEncodingException
- 如果发生编码错误或者编码请求不受支持