3.5.7 CertPath
CertPath类是一个抽象类,定义了常用于所有CertPath的方法。其子类可处理不同类型的证书(X.509、PGP等)。
所有CertPath对象都包含类型、Certificate列表及其支持的一种或多种编码。由于CertPath类是不可变的,所以构造CertPath后无法以任何外部可见的方式更改它。此规定适用于此类的所有公共字段和方法,以及由子类添加或重写的所有公共字段和方法。
//不可变的证书序列(证书路径)。
public abstract class CertPath
extends Object
implements Serializable
❑方法详述
CertPath类要求子类实现如下方法。
我们可以通过以下方法获得该证书路径的证书列表:
//返回此证书路径中的证书列表。
public abstract List<?extends Certificate>getCertificates()
以下方法可以获得证书路径二进制信息和编码信息:
//返回此证书路径的编码形式,使用默认的编码。
public abstract byte[]getEncoded()
//返回此证书路径的编码形式,使用指定的编码。
public abstract byte[]getEncoded(String encoding)
//返回此证书路径支持的编码的迭代,默认编码方式优先。
public abstract Iterator<String>getEncodings()
CertPath类实现了以下方法获得证书类型:
//返回此证书路径中的Certificate类型,如X.509。
public String getType()
此外,CertPath类覆盖了以下方法:
//比较此证书路径与指定对象的相等性。
public boolean equals(Object other)
//返回此证书路径的散列码。
public int hashCode()
//返回此证书路径的字符串表示形式。
public String toString()
❑实现示例
我们可以通过代码清单3-25获得证书链。
代码清单3-25 获得证书链
//实例化CertificateFactory对象,并指明证书类型为"X.509"。
CertificateFactory certificateFactory=CertificateFactory.getInstance("X.509");
//获得证书输入流
FileInputStream in=new FileInputStream("D:\x.keystore");
//获得CertPath对象
CertPath certPath=certificateFactory.generateCertPath(in);
//关闭流
in.close();
CertPath类作为证书链,它的操作离不开CertPathBuilder类和CertPathValidator类。有兴趣的读者请参考相应的Java API内容。