JavaTM 2 Platform
Standard Ed. 6

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 的建構子。
 
方法摘要
 boolean equals(Object other)
          比較此 CRL 與給定物件的相等性。
abstract  byte[] getEncoded()
          返回此 CRL 的 ASN.1 DER 編碼形式。
abstract  Principal getIssuerDN()
          已過時,由 getIssuerX500Principal() 替代。
 X500Principal getIssuerX500Principal()
          以 X500Principal 的形式返回 CRL 的發佈方(發佈方標識名)值。
abstract  Date getNextUpdate()
          獲取 CRL 的 nextUpdate 日期。
abstract  X509CRLEntry getRevokedCertificate(BigInteger serialNumber)
          獲取具有給定證書 serialNumber 的 CRL 項(如果有)。
 X509CRLEntry getRevokedCertificate(X509Certificate certificate)
          獲取給定證書的 CRL 項(如果有)。
abstract  Set<? extends X509CRLEntry> getRevokedCertificates()
          獲取此 CRL 中的所有項。
abstract  String getSigAlgName()
          獲取 CRL 簽章演算法的簽章演算法名。
abstract  String getSigAlgOID()
          獲取 CRL 的簽章演算法 OID 字元串。
abstract  byte[] getSigAlgParams()
          獲取此 CRL 的簽章演算法中 DER 編碼形式的簽章演算法參數。
abstract  byte[] getSignature()
          獲取 CRL 的 signature 值(原始簽章位)。
abstract  byte[] getTBSCertList()
          從此 CRL 中獲取以 DER 編碼的 CRL 資訊,即 tbsCertList
abstract  Date getThisUpdate()
          獲取 CRL 的 thisUpdate 日期。
abstract  int getVersion()
          獲取 CRL 的 version(版本號)值。
 int hashCode()
          根據此 CRL 的編碼形式返回該 CRL 的雜湊碼值。
abstract  void verify(PublicKey key)
          驗證是否已使用與給定公鑰相應的私鑰簽署了此 CRL。
abstract  void verify(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 物件是一個 instanceof X509CRL,則獲取其編碼形式並且與此 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,其名稱是發佈方的標識名。

getIssuerX500Principal

public X500Principal getIssuerX500Principal()
X500Principal 的形式返回 CRL 的發佈方(發佈方標識名)值。

建議子類別覆寫此方法。

返回:
一個表示發佈方標識名的 X500Principal
從以下版本開始:
1.4

getThisUpdate

public abstract Date getThisUpdate()
獲取 CRL 的 thisUpdate 日期。此內容的 ASN.1 定義如下:
 thisUpdate   ChoiceOfTime
 ChoiceOfTime ::= CHOICE {
     utcTime        UTCTime,
     generalTime    GeneralizedTime }
 

返回:
獲取 CRL 的 thisUpdate 日期。

getNextUpdate

public abstract Date getNextUpdate()
獲取 CRL 的 nextUpdate 日期。

返回:
獲取 CRL 的 nextUpdate 日期,如果不存在,則返回 null。

getRevokedCertificate

public abstract X509CRLEntry getRevokedCertificate(BigInteger serialNumber)
獲取具有給定證書 serialNumber 的 CRL 項(如果有)。

參數:
serialNumber - 要尋找其 CRL 項的證書的序列號
返回:
具有給定序列號的項,如果此 CRL 中沒有該項,則返回 null。
另請參見:
X509CRLEntry

getRevokedCertificate

public X509CRLEntry getRevokedCertificate(X509Certificate certificate)
獲取給定證書的 CRL 項(如果有)。

此方法可用於在間接 CRL 中尋找 CRL 項,間接 CRL 意味著其中包含來自不同於 CRL 發佈方的發佈方的項。預設的實作只返回由 CRL 發佈方所發佈的證書項。希望支持間接 CRL 的子類別應該覆寫此方法。

參數:
certificate - 證書,在 CRL 中尋找此證書的 CRL 項
返回:
給定證書的項,如果此 CRL 中沒有該項,則返回 null。
拋出:
NullPointerException - 如果 certificate 為 null
從以下版本開始:
1.5

getRevokedCertificates

public abstract Set<? extends X509CRLEntry> getRevokedCertificates()
獲取此 CRL 中的所有項。這會返回一個 X509CRLEntry 物件 Set。

返回:
所有項,如果沒有項,則返回 null。
另請參見:
X509CRLEntry

getTBSCertList

public abstract byte[] getTBSCertList()
                               throws CRLException
從此 CRL 中獲取以 DER 編碼的 CRL 資訊,即 tbsCertList。這可用於獨立驗證簽章。

返回:
以 DER 編碼的 CRL 資訊。
拋出:
CRLException - 如果發生編碼錯誤。

getSignature

public abstract byte[] getSignature()
獲取 CRL 的 signature 值(原始簽章位)。此內容的 ASN.1 定義如下:
 signature     BIT STRING
 

返回:
簽章。

getSigAlgName

public abstract String getSigAlgName()
獲取 CRL 簽章演算法的簽章演算法名。例如字元串 "SHA-1/DSA"。此內容的 ASN.1 定義如下:
 signatureAlgorithm   AlgorithmIdentifier

AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value

根據 algorithm OID 字元串確定該演算法名。

返回:
簽章演算法名。

getSigAlgOID

public abstract String getSigAlgOID()
獲取 CRL 的簽章演算法 OID 字元串。OID 由一組句點分隔的非負整數集來表示。例如,按照 RFC 2459 中的規定,字元串 "1.2.840.10040.4.3" 標識使用 DSA 簽章演算法的 SHA-1。

有關相關的 ASN.1 定義,請參見 getSigAlgName

返回:
簽章演算法 OID 字元串。

getSigAlgParams

public abstract byte[] getSigAlgParams()
獲取此 CRL 的簽章演算法中 DER 編碼形式的簽章演算法參數。在大多數情況下,該簽章演算法參數為 null;該參數通常提供公鑰。如果需要存取個別參數值,則使用 AlgorithmParameters 並使用 getSigAlgName 所返回的名稱進行實例化。

有關相關的 ASN.1 定義,請參見 getSigAlgName

返回:
DER 編碼形式的簽章演算法參數,如果沒有該參數,則返回 null。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only