JavaTM 2 Platform
Standard Ed. 6

javax.xml.crypto.dsig.keyinfo
類別 KeyInfoFactory

java.lang.Object
  繼承者 javax.xml.crypto.dsig.keyinfo.KeyInfoFactory

public abstract class KeyInfoFactory
extends Object

用於從頭創建 KeyInfo 物件或從相應的 XML 表示形式解組 KeyInfo 物件的處理器。

每個 KeyInfoFactory 實例都支持一個特定的 XML 機制型別。要創建 KeyInfoFactory,則需要調用一個靜態 getInstance 方法,並傳入所需的 XML 機制型別,例如:

KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");

此處理器產生的物件將基於 DOM 並遵守 DOM 互操作性要求,正如 API 概觀的 DOM Mechanism Requirements 部分所定義的。有關標準機制型別列表,請參閱 API 概觀的 Service Providers 部分。

使用 Provider 機制來註冊和載入 KeyInfoFactory 實作。例如,支持 DOM 機制的服務提供者將在 Provider 子類別中指定,如下所示:

   put("KeyInfoFactory.DOM", "org.example.DOMKeyInfoFactory");
 

同時,由此處理器創建的 XMLStructure 可能包含特定於 KeyInfo 的狀態,並且該狀態是不可重用的。

實作至少必須支持預設的機制型別:DOM。

注意,調用者必須使用相同的 KeyInfoFactory 實例來創建特定 KeyInfo 物件的 XMLStructure。如果同時使用來自不同提供者或不同機制型別的 XMLStructure,則行為是不明確的。

共時存取

可保證此類別的靜態方法是執行緒安全的。多個執行緒可以共時調用此類別中所定義的靜態方法,而不會產生不良效果。

但是,對於此類別所定義的非靜態方法並非如此。除非具體的提供者另行指定,否則需要共時存取單個 KeyInfoFactory 實例的多個執行緒應該在它們之間實作同步並提供所需的鎖定。對於每個執行緒都操作一個不同 KeyInfoFactory 實例的多個執行緒而言,無需實作同步。

從以下版本開始:
1.6

建構子摘要
protected KeyInfoFactory()
          預設的建構子,由子類別調用。
 
方法摘要
static KeyInfoFactory getInstance()
          返回支持預設 XML 處理機制和表示形式型別(“DOM”) 的 KeyInfoFactory
static KeyInfoFactory getInstance(String mechanismType)
          返回 KeyInfoFactory,它支持指定的 XML 處理機制和表示形式型別(比如:“DOM”)。
static KeyInfoFactory getInstance(String mechanismType, Provider provider)
          返回支持所需的 XML 處理機制和表示形式型別(比如:“DOM”)的 KeyInfoFactory,由指定提供者提供。
static KeyInfoFactory getInstance(String mechanismType, String provider)
          返回支持所需的 XML 處理機制和表示形式型別(比如:“DOM”)的 KeyInfoFactory,由指定提供者提供。
 String getMechanismType()
          返回此 KeyInfoFactory 支持的 XML 處理機制型別和表示形式型別(比如:“DOM”)。
 Provider getProvider()
          返回此 KeyInfoFactory 的提供者。
abstract  URIDereferencer getURIDereferencer()
          返回對 URIDereferencer 的參考,預設情況下用於取消參考 RetrievalMethod 物件中的 URI。
abstract  boolean isFeatureSupported(String feature)
          指示是否支持指定的功能。
abstract  KeyInfo newKeyInfo(List content)
          創建包含指定的密鑰資訊型別列表的 KeyInfo
abstract  KeyInfo newKeyInfo(List content, String id)
          創建包含指定的密鑰資訊型別列表和可選 id 的 KeyInfo
abstract  KeyName newKeyName(String name)
          根據指定的名稱創建 KeyName
abstract  KeyValue newKeyValue(PublicKey key)
          根據指定的公鑰創建 KeyValue
abstract  PGPData newPGPData(byte[] keyId)
          根據指定的 PGP 公鑰標識符創建 PGPData
abstract  PGPData newPGPData(byte[] keyId, byte[] keyPacket, List other)
          根據指定的 PGP 公鑰標識符、可選的密鑰材料包和外部元素的列表,創建 PGPData
abstract  PGPData newPGPData(byte[] keyPacket, List other)
          根據指定的 PGP 密鑰材料包和可選的外部元素列表創建 PGPData
abstract  RetrievalMethod newRetrievalMethod(String uri)
          根據指定的 URI 創建 RetrievalMethod
abstract  RetrievalMethod newRetrievalMethod(String uri, String type, List transforms)
          根據指定的參數創建 RetrievalMethod
abstract  X509Data newX509Data(List content)
          創建包含指定的 X.509 內容列表的 X509Data
abstract  X509IssuerSerial newX509IssuerSerial(String issuerName, BigInteger serialNumber)
          根據指定的 X.500 發佈方標識名和序列號創建 X509IssuerSerial
abstract  KeyInfo unmarshalKeyInfo(XMLStructure xmlStructure)
          根據特定於機制的 XMLStructure(比如:DOMStructure)實例解組新的 KeyInfo 實例。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

KeyInfoFactory

protected KeyInfoFactory()
預設的建構子,由子類別調用。

方法詳細資訊

getInstance

public static KeyInfoFactory getInstance(String mechanismType)
返回 KeyInfoFactory,它支持指定的 XML 處理機制和表示形式型別(比如:“DOM”)。

此方法使用標準的 JCA 提供者尋找機制來尋找並實例化所需機制型別的 KeyInfoFactory 實作。它將從首選的 Provider 開始,遍歷已註冊的安全 Provider 的列表。返回取自第一個支持指定機制的 Provider 中的新 KeyInfoFactory 物件。

注意,已註冊提供者的列表可以通過 Security.getProviders() 方法獲得。

參數:
mechanismType - XML 處理機制和表示形式的型別。有關標準機制型別列表,請參閱 API 概觀的 Service Providers 部分。
返回:
新的 KeyInfoFactory
拋出:
NullPointerException - 如果 mechanismTypenull
NoSuchMechanismException - 如果沒有任何 Provider 支持指定機制的 KeyInfoFactory 實作
另請參見:
Provider

getInstance

public static KeyInfoFactory getInstance(String mechanismType,
                                         Provider provider)
返回支持所需的 XML 處理機制和表示形式型別(比如:“DOM”)的 KeyInfoFactory,由指定提供者提供。注意,指定的 Provider 物件不必已經在提供者列表中註冊。

參數:
mechanismType - XML 處理機制和表示形式的型別。有關標準機制型別列表,請參閱 API 概觀的 Service Providers 部分。
provider - Provider 物件
返回:
新的 KeyInfoFactory
拋出:
NullPointerException - 如果 mechanismTypeprovidernull
NoSuchMechanismException - 如果不能從指定的 Provider 物件使用指定機制的 KeyInfoFactory 實作
另請參見:
Provider

getInstance

public static KeyInfoFactory getInstance(String mechanismType,
                                         String provider)
                                  throws NoSuchProviderException
返回支持所需的 XML 處理機制和表示形式型別(比如:“DOM”)的 KeyInfoFactory,由指定提供者提供。指定的提供者必須已在安全提供者列表中註冊。

注意,已註冊提供者的列表可以通過 Security.getProviders() 方法獲得。

參數:
mechanismType - XML 處理機制和表示形式的型別。有關標準機制型別列表,請參閱 API 概觀的 Service Providers 部分。
provider - 提供者的字元串名稱
返回:
新的 KeyInfoFactory
拋出:
NoSuchProviderException - 如果指定的提供者沒有在安全提供者列表中註冊
NullPointerException - 如果 mechanismTypeprovidernull
NoSuchMechanismException - 如果從指定的提供者不能使用指定機制的 KeyInfoFactory 實作
另請參見:
Provider

getInstance

public static KeyInfoFactory getInstance()
返回支持預設 XML 處理機制和表示形式型別(“DOM”) 的 KeyInfoFactory

此方法使用標準的 JCA 提供者尋找機制來尋找並實例化預設機制型別的 KeyInfoFactory 實作。它將從首選的 Provider 開始,遍歷已註冊的安全 Provider 的列表。返回取自第一個支持 DOM 機制的 Provider 中的新 KeyInfoFactory 物件。

注意,已註冊提供者的列表可以通過 Security.getProviders() 方法獲得。

返回:
新的 KeyInfoFactory
拋出:
NoSuchMechanismException - 如果沒有任何 Provider 支持 DOM 機制的 KeyInfoFactory 實作
另請參見:
Provider

getMechanismType

public final String getMechanismType()
返回此 KeyInfoFactory 支持的 XML 處理機制型別和表示形式型別(比如:“DOM”)。

返回:
KeyInfoFactory 支持的 XML 處理機制型別

getProvider

public final Provider getProvider()
返回此 KeyInfoFactory 的提供者。

返回:
KeyInfoFactory 的提供者

newKeyInfo

public abstract KeyInfo newKeyInfo(List content)
創建包含指定的密鑰資訊型別列表的 KeyInfo

參數:
content - 一個列表,由一個或多個表示密鑰資訊型別的 XMLStructure 組成。需要複製該列表,以防止隨後被修改。
返回:
KeyInfo
拋出:
NullPointerException - 如果 contentnull
IllegalArgumentException - 如果 content 為空
ClassCastException - 如果 content 套件含任何不是型別 XMLStructure 的條目

newKeyInfo

public abstract KeyInfo newKeyInfo(List content,
                                   String id)
創建包含指定的密鑰資訊型別列表和可選 id 的 KeyInfoid 參數表示 XML ID 屬性值,對於從其他 XML 結構參考 KeyInfo 很有用。

參數:
content - 一個列表,由一個或多個表示密鑰資訊型別的 XMLStructure 組成。需要複製該列表,以防止隨後被修改。
id - XML ID 的值(可以為 null
返回:
KeyInfo
拋出:
NullPointerException - 如果 contentnull
IllegalArgumentException - 如果 content 為空
ClassCastException - 如果 content 套件含任何不是型別 XMLStructure 的條目

newKeyName

public abstract KeyName newKeyName(String name)
根據指定的名稱創建 KeyName

參數:
name - 標識密鑰的名稱
返回:
KeyName
拋出:
NullPointerException - 如果 namenull

newKeyValue

public abstract KeyValue newKeyValue(PublicKey key)
                              throws KeyException
根據指定的公鑰創建 KeyValue

參數:
key - 公鑰
返回:
KeyValue
拋出:
KeyException - 如果 key 的演算法不可識別或不受 KeyInfoFactory 的支持
NullPointerException - 如果 keynull

newPGPData

public abstract PGPData newPGPData(byte[] keyId)
根據指定的 PGP 公鑰標識符創建 PGPData

參數:
keyId - RFC 2440 第 11.2 節定義的 PGP 公鑰標識符。複製該陣列,以防止隨後被修改。
返回:
PGPData
拋出:
NullPointerException - 如果 keyIdnull
IllegalArgumentException - 如果密鑰 id 的格式不正確

newPGPData

public abstract PGPData newPGPData(byte[] keyId,
                                   byte[] keyPacket,
                                   List other)
根據指定的 PGP 公鑰標識符、可選的密鑰材料包和外部元素的列表,創建 PGPData

參數:
keyId - RFC 2440 第 11.2 節定義的 PGP 公鑰標識符。複製該陣列,以防止隨後被修改。
keyPacket - RFC 2440 第 5.5 節定義的 PGP 密鑰材料套件。複製該陣列,以防止隨後被修改。可以為 null
other - 一個列表,由表示外部名稱空間中的元素的 XMLStructure 組成。需要複製該列表,以防止隨後被修改。可以為 null 或空。
返回:
PGPData
拋出:
NullPointerException - 如果 keyIdnull
IllegalArgumentException - 如果 keyIdkeyPacket 的格式不正確。對於 keyPacket,將檢查包頭的格式,並驗證標記,確定它屬於哪種型別的密鑰材料。包正文的內容和格式無需檢查。
ClassCastException - 如果 other 套件含任何不是型別 XMLStructure 的條目

newPGPData

public abstract PGPData newPGPData(byte[] keyPacket,
                                   List other)
根據指定的 PGP 密鑰材料包和可選的外部元素列表創建 PGPData

參數:
keyPacket - RFC 2440 第 5.5 節定義的 PGP 密鑰材料套件。複製該陣列,以防止隨後被修改。
other - 一個列表,由表示外部名稱空間中的元素的 XMLStructure 組成。需要複製該列表,以防止隨後被修改。可以為 null 或空。
返回:
PGPData
拋出:
NullPointerException - 如果 keyPacketnull
IllegalArgumentException - 如果 keyPacket 的格式不正確。對於 keyPacket,將檢查包頭的格式,並驗證標記,確定它屬於哪種型別的密鑰材料。包正文的內容和格式無需檢查。
ClassCastException - 如果 other 套件含任何不是型別 XMLStructure 的條目

newRetrievalMethod

public abstract RetrievalMethod newRetrievalMethod(String uri)
根據指定的 URI 創建 RetrievalMethod

參數:
uri - 標識將要檢索的 KeyInfo 資訊的 URI
返回:
RetrievalMethod
拋出:
NullPointerException - 如果 urinull
IllegalArgumentException - 如果 uri 與 RFC 2396 不相容

newRetrievalMethod

public abstract RetrievalMethod newRetrievalMethod(String uri,
                                                   String type,
                                                   List transforms)
根據指定的參數創建 RetrievalMethod

參數:
uri - 標識將要檢索的 KeyInfo 資訊的 URI
type - 標識將要檢索的 KeyInfo 資訊的型別的 URI (可以為 null
transforms - Transform 的列表。需要複製該列表,以防止隨後被修改。可以為 null 或空。
返回:
RetrievalMethod
拋出:
NullPointerException - 如果 urinull
IllegalArgumentException - 如果 uri 與 RFC 2396 不相容
ClassCastException - 如果 transforms 套件含不是型別 Transform 的任何條目

newX509Data

public abstract X509Data newX509Data(List content)
創建包含指定的 X.509 內容列表的 X509Data

參數:
content - 一個列表,由一個或多個 X.509 內容型別組成。有效的型別有 String(主體名稱)、byte[](主體的密鑰 id)、X509CertificateX509CRLXMLStructure(來自外部名稱空間的 X509IssuerSerial 物件或元素)。主體名稱是 RFC 2253 String 格式的標識名。這些實作必須支持 RFC 2253(CN、L、ST、O、OU、C、STREET、DC 和 UID)中定義的屬性型別關鍵字。這些實作可能還支持其他關鍵字。需要複製該列表,以防止隨後被修改。
返回:
X509Data
拋出:
NullPointerException - 如果 contentnull
IllegalArgumentException - 如果 content 為空,或者主體與 RFC 2253 不相容或無法識別其中一個屬性型別關鍵字。
ClassCastException - 如果 content 套件含不是上述任何有效型別的任何條目

newX509IssuerSerial

public abstract X509IssuerSerial newX509IssuerSerial(String issuerName,
                                                     BigInteger serialNumber)
根據指定的 X.500 發佈方標識名和序列號創建 X509IssuerSerial

參數:
issuerName - RFC 2253 String 格式的發佈方標識名。這些實作必須支持 RFC 2253(CN、L、ST、O、OU、C、STREET、DC 和 UID)中定義的屬性型別關鍵字。這些實作可能還支持其他關鍵字。
serialNumber - 序列號
返回:
X509IssuerSerial
拋出:
NullPointerException - 如果 issuerNameserialNumbernull
IllegalArgumentException - 如果發佈方名稱與 RFC 2253 不相容,或者無法識別其中一個屬性型別關鍵字。

isFeatureSupported

public abstract boolean isFeatureSupported(String feature)
指示是否支持指定的功能。

參數:
feature - 功能名稱(以抽象 URI 形式)
返回:
如果支持指定功能,則返回 true,否則返回 false
拋出:
NullPointerException - 如果 featurenull

getURIDereferencer

public abstract URIDereferencer getURIDereferencer()
返回對 URIDereferencer 的參考,預設情況下用於取消參考 RetrievalMethod 物件中的 URI。

返回:
對預設 URIDereferencer 的參考

unmarshalKeyInfo

public abstract KeyInfo unmarshalKeyInfo(XMLStructure xmlStructure)
                                  throws MarshalException
根據特定於機制的 XMLStructure(比如:DOMStructure)實例解組新的 KeyInfo 實例。

參數:
xmlStructure - 從中解組 keyinfo 的特定於機制的 XML 結構
返回:
KeyInfo
拋出:
NullPointerException - 如果 xmlStructurenull
ClassCastException - 如果 xmlStructure 的型別不適合此處理器
MarshalException - 如果解組過程中發生不可恢復的異常

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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