3.5.6 X509CRL
X509CRL类作为CRL类的子类,已标明了类型为X.509的CRL。
/X.509证书撤销列表(CRL)的抽象类。CRL是标识已撤销证书的时间戳列表。它由证书颁发机构(CA)签署并且可在公共存储库中随意使用。/
public abstract class X509CRL
extends CRL
implements X509Extension
❑方法详述
X509CRL类覆盖了以下两个方法:
//比较此CRL与给定对象的相等性。
public boolean equals(Object other)
//根据此CRL的编码形式返回该CRL的散列码值。
public int hashCode()
在获得X509CRL实例化对象后,我们可以通过以下方法获得相应属性。
我们可以通过如下方法获得版本信息:
//获取CRL的version(版本号)值。
public abstract int getVersion()
可以通过如下方法获得DER编码的二进制信息:
//返回此CRL的ASN.1 DER编码形式。
public abstract byte[]getEncoded()
//从此CRL中获取以DER编码的CRL信息,即tbsCertList。
public abstract byte[]getTBSCertList()
以下是和时间信息有关的方法:
//获取CRL的thisUpdate日期。
public abstract Date getThisUpdate()
//获取CRL的nextUpdate日期。
public abstract Date getNextUpdate()
以下是和签名相关的方法:
//获取CRL签名算法的签名算法名。
public abstract String getSigAlgName()
//获取CRL的签名算法OID字符串。
public abstract String getSigAlgOID()
//获取此CRL的签名算法中DER编码形式的签名算法参数。
public abstract byte[]getSigAlgParams()
通过上述方法,我们能够构建一个数字签名对象。
我们可以通过如下方法获得数字签名值:
//获取CRL的signature值(原始签名位)。
public abstract byte[]getSignature()
可以通过以下方法获得X509CRLEntry的实例:
//获取具有给定证书serialNumber的CRL项(如果有)。
public abstract X509CRLEntry getRevokedCertificate(BigInteger serialNumber)
//获取此CRL中的所有项。
public abstract Set<?extends X509CRLEntry>getRevokedCertificates()
在Java 5中,X509CRL类实现了以下方法,用以获得X509CRLEntry的实例:
//获取给定证书的CRL项(如果有)。
public X509CRLEntry getRevokedCertificate(X509Certificate certificate)
同时,我们可以通过以下方法校验CRL:
//验证是否已使用与给定公钥相应的私钥签署了此CRL。
public abstract void verify(PublicKey key)
//验证是否已使用与给定公钥相应的私钥签署了此CRL。
public abstract void verify(PublicKey key, String sigProvider)
此外,X509CRL类还提供了以下方法:
//以X500Principal的形式返回CRL的发布方(发布方标识名)值。
public X500Principal getIssuerX500Principal()
❑实现示例
我和可以通过代码清单3-24获得证书撤销列表实体。
代码清单3-24 获得证书撤销列表实体
//实例化,并指明证书类型为"X.509"。
CertificateFactory certificateFactory=CertificateFactory.getInstance("X.509");
//获得证书输入流
FileInputStream in=new FileInputStream("D:\x.keystore");
//获得证书
X509Certificate certificate=(X509Certificate)certificateFactory.generateCertificate(in);
//获得证书撤销列表
X509CRL x509CRL=(X509CRL)certificateFactory.generateCRL(in);
//获得证书撤销列表实体
X509CRLEntry x509CRLEntry=x509CRL.getRevokedCertificate(certificate);
//关闭流
in.close();