所有类


java.security.cert
类 X509CRL

java.lang.Object
  继承者 java.security.cert.CRL
      继承者 java.security.cert.X509CRL
所有已实现的接口:
X509Extension

public abstract class X509CRL
   
   
   
   
   
extends CRL
implements X509Extension

X.509 证书撤消列表 (CRL) 的抽象类。CRL 是标识已撤消证书的时间戳列表。它由证书颁发机构 (CA) 签署并且可在公共存储库中随意使用。

在 CRL 中,通过每个已撤消证书的证书序列号来标识该证书。当使用证书的系统使用某个证书(例如,用它验证远程用户的数字签名)时,该系统不仅要检查该证书的签名和有效性,而且还要获得一个最近合适的 CRL,并检查该证书序列号在不在该 CRL 中。“最近合适”的含义可能随本地策略的不同而有所不同,但是它通常指的是最近发布的 CRL。CA 定期发布新的 CRL(例如每小时、每日、每周)。当撤消发生时向 CRL 添加一个项,而到达证书的终止日期时,可能会移除一个项。

X.509 v2 CRL 格式的 ASN.1 描述如下:

 CertificateList  ::=  SEQUENCE  {
     tbsCertList          TBSCertList,
     signatureAlgorithm   AlgorithmIdentifier,
     signature            BIT STRING  }
 

在 RFC 2459,即 "Internet X.509 Public Key Infrastructure Certificate and CRL Profile"(位于 http://www.ietf.org/rfc/rfc2459.txt )中可找到更多信息。

tbsCertList 的 ASN.1 定义是:

 TBSCertList  ::=  SEQUENCE  {
     version                 Version OPTIONAL,
                             -- if present, must be v2
     signature               AlgorithmIdentifier,
     issuer                  Name,
     thisUpdate              ChoiceOfTime,
     nextUpdate              ChoiceOfTime OPTIONAL,
     revokedCertificates     SEQUENCE OF SEQUENCE  {
         userCertificate         CertificateSerialNumber,
         revocationDate          ChoiceOfTime,
         crlEntryExtensions      Extensions OPTIONAL
                                 -- if present, must be v2
         }  OPTIONAL,
     crlExtensions           [0]  EXPLICIT Extensions OPTIONAL
                                  -- if present, must be v2
     }
 

CRL 是使用证书工厂进行实例化的。下面的示例演示了如何实例化一个 X.509 CRL:

 
 InputStream inStream = new FileInputStream("fileName-of-crl");
 CertificateFactory cf = CertificateFactory.getInstance("X.509");
 X509CRL crl = (X509CRL)cf.generateCRL(inStream);
 inStream.close();
 

另请参见:
CRL, CertificateFactory, X509Extension

构造方法摘要
protected X509CRL()
          X.509 CRL 的构造方法。
 
方法摘要
 booleanequals(Object other)
          比较此 CRL 与给定对象的相等性。
abstract  byte[]getEncoded()
          返回此 CRL 的 ASN.1 DER 编码形式。
abstract  PrincipalgetIssuerDN()
          已过时,由 getIssuerX500Principal() 替代。
 X500PrincipalgetIssuerX500Principal()
          以 X500Principal 的形式返回 CRL 的发布方(发布方标识名)值。
abstract  DategetNextUpdate()
          获得 CRL 的 nextUpdate 日期。
abstract  X509CRLEntrygetRevokedCertificate(BigInteger serialNumber)
          获得具有给定证书 serialNumber 的 CRL 项(如果有)。
 X509CRLEntrygetRevokedCertificate(X509Certificate certificate)
          获得给定证书的 CRL 项(如果有)。
abstract  Set<? extends X509CRLEntry>getRevokedCertificates()
          获得此 CRL 中的所有项。
abstract  StringgetSigAlgName()
          获得 CRL 签名算法的签名算法名。
abstract  StringgetSigAlgOID()
          获得 CRL 的签名算法 OID 字符串。
abstract  byte[]getSigAlgParams()
          获得此 CRL 的签名算法中 DER 编码形式的签名算法参数。
abstract  byte[]getSignature()
          获得 CRL 的 signature 值(原始签名位)。
abstract  byte[]getTBSCertList()
          从此 CRL 中获得以 DER 编码的 CRL 信息,即 tbsCertList
abstract  DategetThisUpdate()
          获得 CRL 的 thisUpdate 日期。
abstract  intgetVersion()
          获得 CRL 的 version(版本号)值。
 inthashCode()
          根据此 CRL 的编码形式返回该 CRL 的哈希码值。
abstract  voidverify(PublicKey key)
          验证是否已使用与给定公钥相应的私钥签署了此 CRL。
abstract  voidverify(PublicKey key, String sigProvider)
          验证是否已使用与给定公钥相应的私钥签署了此 CRL。
 
从类 java.security.cert.CRL 继承的方法
getType, isRevoked, toString
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
从接口 java.security.cert.X509Extension 继承的方法
getCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtension
 

构造方法详细信息

X509CRL

protected X509CRL()
X.509 CRL 的构造方法。

方法详细信息

equals

public boolean equals(Object other)
比较此 CRL 与给定对象的相等性。如果 other 对象是一个 instanceofX509CRL,则检索其编码形式并且与此 CRL 的编码形式进行比较。

覆盖:
Object 中的 equals
参数:
other - 要与此 CRL 进行相等性测试的对象。
返回:
当且仅当两个 CRL 的编码形式匹配时才返回 true;否则返回 false。
另请参见:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
根据此 CRL 的编码形式返回该 CRL 的哈希码值。

覆盖:
Object 中的 hashCode
返回:
哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

getEncoded

public abstract byte[] getEncoded()
                           throws CRLException
返回此 CRL 的 ASN.1 DER 编码形式。

返回:
此证书的编码形式
抛出:
CRLException - 如果发生编码错误。

verify

public abstract void verify(PublicKey key)
                     throws CRLException,
                            NoSuchAlgorithmException,
                            InvalidKeyException,
                            NoSuchProviderException,
                            SignatureException
验证是否已使用与给定公钥相应的私钥签署了此 CRL。

参数:
key - 用于进行验证的 PublicKey。
抛出:
NoSuchAlgorithmException - 如果签名算法不受支持。
InvalidKeyException - 如果密钥不正确。
NoSuchProviderException - 如果没有默认的提供程序。
SignatureException - 如果发生签名错误。
CRLException - 如果发生编码错误。

verify

public abstract void verify(PublicKey key,
                            String sigProvider)
                     throws CRLException,
                            NoSuchAlgorithmException,
                            InvalidKeyException,
                            NoSuchProviderException,
                            SignatureException
验证是否已使用与给定公钥相应的私钥签署了此 CRL。此方法使用给定提供程序所提供的签名验证引擎。

参数:
key - 用于进行验证的 PublicKey。
sigProvider - 签名提供程序的名称。
抛出:
NoSuchAlgorithmException - 如果签名算法不受支持。
InvalidKeyException - 如果密钥不正确。
NoSuchProviderException - 如果提供程序不正确。
SignatureException - 如果发生签名错误。
CRLException - 如果发生编码错误。

getVersion

public abstract int getVersion()
获得 CRL 的 version(版本号)值。此内容的 ASN.1 定义如下:
 version    Version OPTIONAL,
             -- if present, must be v2

Version ::= INTEGER { v1(0), v2(1), v3(2) } -- v3 does not apply to CRLs but appears for consistency -- with definition of Version for certs

返回:
版本号,比如 1 或 2。

getIssuerDN

public abstract Principal getIssuerDN()
已过时,由 getIssuerX500Principal() 替代。此方法返回作为特定 Principal 对象实现的 issuer,可移植的代码不应依靠该对象。

获得 CRL 的 issuer(发布方的标识名)。发布方名称标识了签署(并发布)该 CRL 的实体。

发布方名称字段包含一个 X.500 标识名 (DN)。此内容的 ASN.1 定义如下:

 issuer    Name

 Name ::= CHOICE { RDNSequence }
 RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
 RelativeDistinguishedName ::=
     SET OF AttributeValueAssertion

 AttributeValueAssertion ::= SEQUENCE {
                               AttributeType,
                               AttributeValue }
 AttributeType ::= OBJECT IDENTIFIER
 AttributeValue ::= ANY
 
Name 描述了一个层次结构名,由属性(如国家/地区名)和相应值(如 US)组成。AttributeValue 组件的类型由 AttributeType 来确定;一般是 directoryStringdirectoryString 通常是 PrintableStringTeletexStringUniversalString 之一。

返回:
一个 Principal,其名称是发布方的标识名。