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();