JavaTM 2 Platform
Standard Ed. 6

java.security.cert
類別 CertPath

java.lang.Object
  繼承者 java.security.cert.CertPath
所有已實作的介面:
Serializable

public abstract class CertPath
extends Object
implements Serializable

不可變的證書序列(證書路徑)。

這是一個抽象類別,定義了常用於所有 CertPath 的方法。其子類別可處理不同型別的證書(X.509、PGP 等等)。

所有 CertPath 物件都包含型別、Certificate 列表及其支持的一種或多種編碼。由於 CertPath 類別是不可變的,所以建構 CertPath 後無法以任何外部可見的方式更改它。此規定適用於此類別的所有公共欄位和方法,以及由子類別添加或覆寫的所有公共欄位和方法。

型別是標識證書路徑中 Certificate 型別的一個 String。對於證書路徑 certPath 中的每個證書 cert 而言,cert.getType().equals(certPath.getType()) 必須為 true

Certificate 列表是零個或多個 Certificate 的有序 List。此 List 和其中所包含的所有 Certificate 都必須是不可變的。

每個 CertPath 物件必須支持一種或多種編碼方式,這樣可將物件轉換成 byte 陣列進行存儲,或傳輸給其他方。這些編碼最好應該具有記錄良好的標準(例如 PKCS#7)。將 CertPath 支持的某種編碼視為預設編碼。如果沒有顯式地請求編碼(例如,getEncoded() 方法),則使用此編碼。

所有 CertPath 物件都是 Serializable。在序列化期間將 CertPath 物件解析為一個替換的 CertPathRep 物件。這就允許不管 CertPath 物件的基礎實作如何,都可以將該物件序列化為等效的表示形式。

可使用 CertificateFactory 創建 CertPath 物件,或者可通過其他類別(如 CertPathBuilder)返回這些物件。

按照慣例,X.509 CertPath(由 X509Certificate 組成)的順序按照從目標證書開始,從信任的定位點所發佈的證書結束。也就是說,證書的發佈方是以下某個主體。表示 TrustAnchor 的證書不應包括在證書路徑中。未驗證的 X.509 CertPath 可能不遵循這些約定。PKIX CertPathValidator 將檢測任何與這些約定的偏差,這些偏差會導致證書路徑無效並且拋出 CertPathValidatorException

共時存取

所有 CertPath 物件必須是執行緒安全的。也就是說,多個執行緒在單個 CertPath 物件(或多個物件)上共時調用此類別中所定義的各種方法不會產生壞的影響。對於 CertPath.getCertificates 返回的 List 也應如此。

要求 CertPath 物件是不可變的並且是執行緒安全的,就允許將其傳遞到各種程式碼片斷中,而無需擔心協調存取。通常提供此種執行緒安全性並不難,因為相關的 CertPathList 物件都是不可變的。

從以下版本開始:
1.4
另請參見:
CertificateFactory, CertPathBuilder, 序列化表格

巢狀類別摘要
protected static class CertPath.CertPathRep
          用於序列化的替換 CertPath 類別。
 
建構子摘要
protected CertPath(String type)
          創建指定型別的 CertPath
 
方法摘要
 boolean equals(Object other)
          比較此證書路徑與指定物件的相等性。
abstract  List<? extends Certificate> getCertificates()
          返回此證書路徑中的證書列表。
abstract  byte[] getEncoded()
          返回此證書路徑的編碼形式,使用預設的編碼。
abstract  byte[] getEncoded(String encoding)
          返回此證書路徑的編碼形式,使用指定的編碼。
abstract  Iterator<String> getEncodings()
          返回此證書路徑支持的編碼的迭代,預設編碼方式優先。
 String getType()
          返回此證書路徑中的 Certificate 型別。
 int hashCode()
          返回此證書路徑的雜湊碼。
 String toString()
          返回此證書路徑的字元串表示形式。
protected  Object writeReplace()
          使用 CertPathRep 物件替換要被序列化的 CertPath
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

CertPath

protected CertPath(String type)
創建指定型別的 CertPath

此建構子是受保護的,因為大多數使用者應該使用 CertificateFactory 來創建 CertPath

參數:
type - 此路徑中 Certificate 型別的標準名稱
方法詳細資訊

getType

public String getType()
返回此證書路徑中的 Certificate 型別。這與 cert.getType() 為證書路徑中的所有 Certificate 所返回的字元串相同。

返回:
此證書路徑中的 Certificate 型別(從不為 null)

getEncodings

public abstract Iterator<String> getEncodings()
返回此證書路徑支持的編碼的迭代,預設編碼方式優先。試圖修改返回的 Iterator(通過其 remove 方法)會導致拋出 UnsupportedOperationException

返回:
在受支持的編碼的名稱(以 String 的形式)上進行迭代的 Iterator

equals

public boolean equals(Object other)
比較此證書路徑與指定物件的相等性。當且僅當兩個 CertPath 的型別相等並且其證書 List(通過模擬這些 List 中的 Certificate)相等時,這兩個 CertPath 才相等。CertPath 不會等於一個非 CertPath 物件。

此方法實作此種演算法。如果覆寫此方法,則必須維護在此指定的行為。

覆寫:
類別 Object 中的 equals
參數:
other - 要與此證書路徑進行相等性測試的物件
返回:
如果指定的物件等於此證書路徑,則返回 true;否則返回 false
另請參見:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此證書路徑的雜湊碼。證書路徑的雜湊碼定義為以下計算的結果:

  hashCode = path.getType().hashCode();
  hashCode = 31*hashCode + path.getCertificates().hashCode();
 
這確保對於任意兩個證書路徑 path1path2 而言,path1.equals(path2) 就意味著 path1.hashCode()==path2.hashCode(),正如 Object.hashCode 的常規協定所要求的那樣。

覆寫:
類別 Object 中的 hashCode
返回:
此證書路徑的雜湊碼值
另請參見:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
返回此證書路徑的字元串表示形式。這會在路徑中的每個 Certificate 上調用 toString 方法。

覆寫:
類別 Object 中的 toString
返回:
此證書路徑的字元串表示形式

getEncoded

public abstract byte[] getEncoded()
                           throws CertificateEncodingException
返回此證書路徑的編碼形式,使用預設的編碼。

返回:
已編碼的位元組
拋出:
CertificateEncodingException - 如果發生編碼錯誤

getEncoded

public abstract byte[] getEncoded(String encoding)
                           throws CertificateEncodingException
返回此證書路徑的編碼形式,使用指定的編碼。

參數:
encoding - 要使用的編碼名稱
返回:
已編碼的位元組
拋出:
CertificateEncodingException - 如果發生編碼錯誤或者編碼請求不受支持

getCertificates

public abstract List<? extends Certificate> getCertificates()
返回此證書路徑中的證書列表。返回的 List 必須是不可變的和執行緒安全的。

返回:
一個不可變的 Certificate List(可以為空,但是不能為 null)

writeReplace

protected Object writeReplace()
                       throws ObjectStreamException
使用 CertPathRep 物件替換要被序列化的 CertPath

返回:
要被序列化的 CertPathRep
拋出:
ObjectStreamException - 如果不能創建表示此證書路徑的 CertPathRep 物件

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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