|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.xml.crypto.dsig.XMLSignatureFactory
public abstract class XMLSignatureFactory
用於從頭創建 XMLSignature
物件或從相應的 XML 表示形式解組 XMLSignature
物件的處理器。
每個 XMLSignatureFactory
實例都支持一個特定的 XML 機制型別。要創建 XMLSignatureFactory
,則需要調用一個靜態 getInstance
方法,以傳入所需的 XML 機制型別,例如:
XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
此處理器產生的物件將基於 DOM 並遵守 DOM 互操作性要求,正如 API 概觀的 DOM Mechanism Requirements 部分中所定義的。標準機制型別列表,請參閱 API 概觀的 Service Providers 部分。
使用 Provider
機制來註冊和載入 XMLSignatureFactory
實作。例如,支持 DOM 機制的服務提供者將在 Provider
子類別中指定,如下所示:
put("XMLSignatureFactory.DOM", "org.example.DOMXMLSignatureFactory");
實作至少必須支持預設的機制型別:DOM。
注意,調用者必須使用相同的 XMLSignatureFactory
實例來創建要產生的特定 XMLStructure
的 XMLSignature
。如果同時使用取自不同提供者或不同機制型別的 XMLStructure
,則行為是不明確的。
同時,由此處理器創建的 XMLStructure
可能包含特定於 XMLSignature
的狀態,並且該狀態是不可重用的。
創建了 XMLSignatureFactory
後,就可以通過調用適當的方法來實例化這些物件。例如,可以通過調用一個 newReference
方法來創建 Reference
實例。
此外,通過調用 unmarshalXMLSignature
方法,並向其傳遞包含 XML 內容的特定於機制的 XMLValidateContext
實例,可以從現有 XML 表示形式創建 XMLSignature
:
DOMValidateContext context = new DOMValidateContext(key, signatureElement); XMLSignature signature = factory.unmarshalXMLSignature(context);每個
XMLSignatureFactory
都必須支持該處理器型別所需的 XMLValidateContext
型別,但也可以支持其他型別。DOM XMLSignatureFactory
必須支持 DOMValidateContext
物件。
XMLSignature
物件的 sign
方法,並向其傳遞包含簽章密鑰和編組參數(參見 DOMSignContext
)的特定於機制的 XMLSignContext
物件,可以將處理器創建的每個 XMLSignature
編組為 XML 表示形式並對其進行簽章。例如:
DOMSignContext context = new DOMSignContext(privateKey, document); signature.sign(context);共時存取
可保證此類別的靜態方法是執行緒安全的。多個執行緒可以共時調用此類別中所定義的靜態方法,而不會產生不良效果。
但是,對於此類別所定義的非靜態方法並非如此。除非具體的提供者另行指定,否則需要共時存取單個 XMLSignatureFactory
實例的多個執行緒應該在它們之間實作同步並提供所需的鎖定。對於每個執行緒都操作一個不同 XMLSignatureFactory
實例的多個執行緒而言,無需實作同步。
建構子摘要 | |
---|---|
protected |
XMLSignatureFactory()
預設的建構子,由子類別調用。 |
方法摘要 | |
---|---|
static XMLSignatureFactory |
getInstance()
返回支持預設的 XML 處理機制和表示形式型別(“DOM”) 的 XMLSignatureFactory 。 |
static XMLSignatureFactory |
getInstance(String mechanismType)
返回 XMLSignatureFactory ,它支持指定的 XML 處理機制和表示形式型別(比如:“DOM”)。 |
static XMLSignatureFactory |
getInstance(String mechanismType,
Provider provider)
返回支持請求的 XML 處理機制和表示形式型別(比如:“DOM”)的 XMLSignatureFactory ,由指定提供者提供。 |
static XMLSignatureFactory |
getInstance(String mechanismType,
String provider)
返回支持所需的 XML 處理機制和表示形式型別(比如:“DOM”)的 XMLSignatureFactory ,由指定提供者提供。 |
KeyInfoFactory |
getKeyInfoFactory()
返回創建 KeyInfo 物件的 KeyInfoFactory 。 |
String |
getMechanismType()
返回此 XMLSignatureFactory 支持的 XML 處理機制型別和表示形式型別(比如:“DOM”)。 |
Provider |
getProvider()
返回此 XMLSignatureFactory 的提供者。 |
abstract URIDereferencer |
getURIDereferencer()
返回對 URIDereferencer 的參考,預設情況下該參考用於取消 Reference 物件中對 URI 的參考。 |
abstract boolean |
isFeatureSupported(String feature)
指示是否支持指定的功能。 |
abstract CanonicalizationMethod |
newCanonicalizationMethod(String algorithm,
C14NMethodParameterSpec params)
針對指定的演算法 URI 和參數創建 CanonicalizationMethod 。 |
abstract CanonicalizationMethod |
newCanonicalizationMethod(String algorithm,
XMLStructure params)
針對指定的演算法 URI 和參數創建 CanonicalizationMethod 。 |
abstract DigestMethod |
newDigestMethod(String algorithm,
DigestMethodParameterSpec params)
針對指定的演算法 URI 和參數創建 DigestMethod 。 |
abstract Manifest |
newManifest(List references)
創建包含指定的 Reference 列表的 Manifest 。 |
abstract Manifest |
newManifest(List references,
String id)
創建包含指定的 Reference 列表和可選 id 的 Manifest 。 |
abstract Reference |
newReference(String uri,
DigestMethod dm)
創建帶指定 URI 和摘要方法的 Reference 。 |
abstract Reference |
newReference(String uri,
DigestMethod dm,
List appliedTransforms,
Data result,
List transforms,
String type,
String id)
創建帶指定參數的 Reference 。 |
abstract Reference |
newReference(String uri,
DigestMethod dm,
List transforms,
String type,
String id)
創建帶指定參數的 Reference 。 |
abstract Reference |
newReference(String uri,
DigestMethod dm,
List transforms,
String type,
String id,
byte[] digestValue)
創建帶指定參數和預計算的摘要值的 Reference 。 |
abstract SignatureMethod |
newSignatureMethod(String algorithm,
SignatureMethodParameterSpec params)
針對指定的演算法 URI 和參數創建 SignatureMethod 。 |
abstract SignatureProperties |
newSignatureProperties(List properties,
String id)
創建包含指定的 SignatureProperty 列表和可選 id 的 SignatureProperties 。 |
abstract SignatureProperty |
newSignatureProperty(List content,
String target,
String id)
創建包含指定的 XMLStructure 列表、目標 URI 和可選 id 的SignatureProperty 。 |
abstract SignedInfo |
newSignedInfo(CanonicalizationMethod cm,
SignatureMethod sm,
List references)
創建帶指定的規範化方法和簽章方法、以及一個或多個參考的列表的 SignedInfo 。 |
abstract SignedInfo |
newSignedInfo(CanonicalizationMethod cm,
SignatureMethod sm,
List references,
String id)
創建帶指定參數的 SignedInfo 。 |
abstract Transform |
newTransform(String algorithm,
TransformParameterSpec params)
針對指定的演算法 URI 和參數創建 Transform 。 |
abstract Transform |
newTransform(String algorithm,
XMLStructure params)
針對指定的演算法 URI 和參數創建 Transform 。 |
abstract XMLObject |
newXMLObject(List content,
String id,
String mimeType,
String encoding)
根據指定參數創建 XMLObject 。 |
abstract XMLSignature |
newXMLSignature(SignedInfo si,
KeyInfo ki)
創建一個 XMLSignature ,並使用指定的 SignedInfo 和 KeyInfo 物件的內容對其進行初始化。 |
abstract XMLSignature |
newXMLSignature(SignedInfo si,
KeyInfo ki,
List objects,
String id,
String signatureValueId)
創建一個 XMLSignature ,並使用指定的參數對其進行初始化。 |
abstract XMLSignature |
unmarshalXMLSignature(XMLStructure xmlStructure)
從特定於機制的 XMLStructure 實例解組新的 XMLSignature 實例。 |
abstract XMLSignature |
unmarshalXMLSignature(XMLValidateContext context)
從特定於機制的 XMLValidateContext 實例解組新的 XMLSignature 實例。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
protected XMLSignatureFactory()
方法詳細資訊 |
---|
public static XMLSignatureFactory getInstance(String mechanismType)
XMLSignatureFactory
,它支持指定的 XML 處理機制和表示形式型別(比如:“DOM”)。
此方法使用標準的 JCA 提供者尋找機制來尋找並實例化所需機制型別的 XMLSignatureFactory
實作。它將從首選的 Provider
開始,遍歷已註冊的安全 Provider
的列表。返回取自第一個支持指定機制的 Provider
中的新 XMLSignatureFactory
物件。
注意,已註冊提供者的列表可以通過 Security.getProviders()
方法獲得。
mechanismType
- XML 處理機制和表示形式的型別。有關標準機制型別列表,請參閱 API 概觀的 Service Providers 部分。
XMLSignatureFactory
NullPointerException
- 如果 mechanismType
為 null
NoSuchMechanismException
- 如果沒有任何 Provider
支持指定機制的 XMLSignatureFactory
實作Provider
public static XMLSignatureFactory getInstance(String mechanismType, Provider provider)
XMLSignatureFactory
,由指定提供者提供。注意,指定的 Provider
物件不必已經在提供者列表中註冊。
mechanismType
- XML 處理機制和表示形式的型別。有關標準機制型別列表,請參閱 API 概觀的 Service Providers 部分。provider
- Provider
物件
XMLSignatureFactory
NullPointerException
- 如果 provider
或 mechanismType
為 null
NoSuchMechanismException
- 如果不能從指定的 Provider
物件得到指定機制的 XMLSignatureFactory
實作Provider
public static XMLSignatureFactory getInstance(String mechanismType, String provider) throws NoSuchProviderException
XMLSignatureFactory
,由指定提供者提供。指定的提供者必須已在安全提供者列表中註冊。
注意,已註冊提供者的列表可以通過 Security.getProviders()
方法獲得。
mechanismType
- XML 處理機制和表示形式的型別。有關標準機制型別列表,請參閱 API 概觀的 Service Providers 部分。provider
- 提供者的字元串名稱
XMLSignatureFactory
NoSuchProviderException
- 如果指定的提供者沒有在安全提供者列表中進行註冊
NullPointerException
- 如果 provider
或 mechanismType
為 null
NoSuchMechanismException
- 如果從指定的提供者不能得到指定機制的 XMLSignatureFactory
實作Provider
public static XMLSignatureFactory getInstance()
XMLSignatureFactory
。
此方法使用標準的 JCA 提供者尋找機制來尋找並實例化預設機制型別的 XMLSignatureFactory
實作。它將從首選的 Provider
開始,遍歷已註冊的安全 Provider
的列表。返回取自第一個支持 DOM 機制的Provider
中的新 XMLSignatureFactory
物件。
注意,已註冊提供者的列表可以通過 Security.getProviders()
方法獲得。
XMLSignatureFactory
NoSuchMechanismException
- 如果沒有任何 Provider
支持 DOM 機制的 XMLSignatureFactory
實作Provider
public final String getMechanismType()
XMLSignatureFactory
支持的 XML 處理機制型別和表示形式型別(比如:“DOM”)。
XMLSignatureFactory
支持的 XML 處理機制型別public final Provider getProvider()
XMLSignatureFactory
的提供者。
XMLSignatureFactory
的提供者public abstract XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki)
XMLSignature
,並使用指定的 SignedInfo
和 KeyInfo
物件的內容對其進行初始化。
si
- 簽章資訊ki
- 密鑰資訊(可能為 null
)
XMLSignature
NullPointerException
- 如果 si
為 null
public abstract XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki, List objects, String id, String signatureValueId)
XMLSignature
,並使用指定的參數對其進行初始化。
si
- 簽章資訊ki
- 密鑰資訊(可以為 null
)objects
- XMLObject
列表(可以為空或 null
)id
- Id(可以為 null
)signatureValueId
- SignatureValue Id(可以為 null
)
XMLSignature
NullPointerException
- 如果 si
為 null
ClassCastException
- 如果有些 objects
的型別不是 XMLObject
public abstract Reference newReference(String uri, DigestMethod dm)
Reference
。
uri
- 參考 URI(可以為 null
)dm
- 摘要方法
Reference
IllegalArgumentException
- 如果 uri
與 RFC 2396 不相容
NullPointerException
- 如果 dm
為 null
public abstract Reference newReference(String uri, DigestMethod dm, List transforms, String type, String id)
Reference
。
uri
- 參考 URI(可以為 null
)dm
- 摘要方法transforms
- Transform
列表。需要複製該列表,以防止隨後被修改。可以為 null
或空。type
- URI 形式的參考型別(可以為 null
)id
- 參考 ID(可以為 null
)
Reference
ClassCastException
- 如果有些 transforms
的型別不是 Transform
IllegalArgumentException
- 如果 uri
與 RFC 2396 不相容
NullPointerException
- 如果 dm
為 null
public abstract Reference newReference(String uri, DigestMethod dm, List transforms, String type, String id, byte[] digestValue)
Reference
。
如果先前已經計算了 Reference
的摘要值,則此方法很有用。有關範例,請參閱 OASIS-DSS(數位簽章服務)規範。
uri
- 參考 URI(可以為 null
)dm
- 摘要方法transforms
- Transform
列表。需要複製該列表,以防止隨後被修改。可以為 null
或空。type
- URI 形式的參考型別(可以為 null
)id
- 參考 ID(可以為 null
)digestValue
- 摘要值。複製該陣列,以防止隨後被修改。
Reference
ClassCastException
- 如果任何 transforms
的型別不是 Transform
IllegalArgumentException
- 如果 uri
與 RFC 2396 不相容
NullPointerException
- 如果 dm
或 digestValue
為 null
public abstract Reference newReference(String uri, DigestMethod dm, List appliedTransforms, Data result, List transforms, String type, String id)
Reference
。
在已將轉換列表應用於 Reference
時,此方法很有用。例如,請參閱 OASIS-DSS(數位簽章服務)規範。
產生了包含此參考的 XMLSignature
之後,將指定的 transforms
(如果為非空(null))應用於指定的 result
。所得 Reference
元素的 Transforms
元素被設置為 appliedTransforms
和 transforms
的串聯。
uri
- 參考 URI(可以為 null
)dm
- 摘要方法appliedTransforms
- 已應用的 Transform
的列表。需要複製該列表,以防止隨後被修改。列表至少必須包含一個條目。result
- 處理 appliedTransforms
的序列的結果transforms
- 產生簽章時將應用的 Transform
的列表。需要複製該列表,以防止隨後被修改。可以為 null
或空。type
- URI 形式的參考型別(可以為 null
)id
- 參考 ID(可以為 null
)
Reference
ClassCastException
- 如果任何轉換(任一列表中)的型別不是 Transform
IllegalArgumentException
- 如果 uri
與 RFC 2396 不相容或 appliedTransforms
為空
NullPointerException
- 如果 dm
、appliedTransforms
或 result
為 null
public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, List references)
SignedInfo
。
cm
- 規範化方法sm
- 簽章方法references
- 一個列表,由一個或多個 Reference
組成。需要複製該列表,以防止隨後被修改。
SignedInfo
ClassCastException
- 如果任何參考的型別不是 Reference
IllegalArgumentException
- 如果 references
為空
NullPointerException
- 如果任何參數為 null
public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, List references, String id)
SignedInfo
。
cm
- 規範化方法sm
- 簽章方法references
- 一個列表,由一個或多個 Reference
組成。需要複製該列表,以防止隨後被修改。id
- id(可以為 null
)
SignedInfo
ClassCastException
- 如果任何參考的型別不是 Reference
IllegalArgumentException
- 如果 references
為空
NullPointerException
- 如果 cm
、sm
或 references
為 null
public abstract XMLObject newXMLObject(List content, String id, String mimeType, String encoding)
XMLObject
。
content
- XMLStructure
的列表。需要複製該列表,以防止隨後被修改。可以為 null
或空。id
- Id(可以為 null
)mimeType
- MIME 型別(可以為 null
)encoding
- 編碼(可以為 null
)
XMLObject
ClassCastException
- 如果 content
套件含任何型別不是 XMLStructure
的條目public abstract Manifest newManifest(List references)
Reference
列表的 Manifest
。
references
- 一個列表,由一個或多個 Reference
組成。需要複製該列表,以防止隨後被修改。
Manifest
NullPointerException
- 如果 references
為 null
IllegalArgumentException
- 如果 references
為空
ClassCastException
- 如果 references
套件含任何型別不是 Reference
的條目public abstract Manifest newManifest(List references, String id)
Reference
列表和可選 id 的 Manifest
。
references
- 一個列表,由一個或多個 Reference
組成。需要複製該列表,以防止隨後被修改。id
- id(可以為 null
)
Manifest
NullPointerException
- 如果 references
為 null
IllegalArgumentException
- 如果 references
為空
ClassCastException
- 如果 references
套件含任何型別不是 Reference
的條目public abstract SignatureProperty newSignatureProperty(List content, String target, String id)
XMLStructure
列表、目標 URI 和可選 id 的SignatureProperty
。
content
- 一個列表,由一個或多個 XMLStructure
組成。需要複製該列表,以防止隨後被修改。target
- 使用此屬性的 Signature 的目標 URIid
- id(可以為 null
)
SignatureProperty
NullPointerException
- 如果 content
或 target
為 null
IllegalArgumentException
- 如果 content
為空
ClassCastException
- 如果 content
套件含任何型別不是 XMLStructure
的條目public abstract SignatureProperties newSignatureProperties(List properties, String id)
SignatureProperty
列表和可選 id 的 SignatureProperties
。
properties
- 一個列表,由一個或多個 SignatureProperty
組成。需要複製該列表,以防止隨後被修改。id
- id(可以為 null
)
SignatureProperties
NullPointerException
- 如果 properties
為 null
IllegalArgumentException
- 如果 properties
為空
ClassCastException
- 如果 properties
套件含任何型別不是 SignatureProperty
的條目public abstract DigestMethod newDigestMethod(String algorithm, DigestMethodParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
DigestMethod
。
algorithm
- 標識摘要演算法的 URIparams
- 特定於演算法的摘要參數(可以為 null
)
DigestMethod
InvalidAlgorithmParameterException
- 如果指定的參數不適合請求的演算法
NoSuchAlgorithmException
- 如果無法找到指定演算法的實作
NullPointerException
- 如果 algorithm
為 null
public abstract SignatureMethod newSignatureMethod(String algorithm, SignatureMethodParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
SignatureMethod
。
algorithm
- 標識簽章演算法的 URIparams
- 特定於演算法的簽章參數(可以為 null
)
SignatureMethod
InvalidAlgorithmParameterException
- 如果指定的參數不適合請求的演算法
NoSuchAlgorithmException
- 如果無法找到指定演算法的實作
NullPointerException
- 如果 algorithm
為 null
public abstract Transform newTransform(String algorithm, TransformParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
Transform
。
algorithm
- 標識轉換演算法的 URIparams
- 特定於演算法的轉換參數(可以為 null
)
Transform
InvalidAlgorithmParameterException
- 如果指定的參數不適合請求的演算法
NoSuchAlgorithmException
- 如果無法找到指定演算法的實作
NullPointerException
- 如果 algorithm
為 null
public abstract Transform newTransform(String algorithm, XMLStructure params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
Transform
。該參數被指定為特定於機制的 XMLStructure
(比如:DOMStructure
)。當參數是 XML 形式或沒有任何用於指定參數的標準類別時,此方法很有用。
algorithm
- 標識轉換演算法的 URIparams
- 從中解組參數的特定於機制的 XML 結構(如果該結構不是必需的或是可選的,則此參數為 null
)
Transform
ClassCastException
- 如果 params
型別不適合此 XMLSignatureFactory
InvalidAlgorithmParameterException
- 如果指定的參數不適合請求的演算法
NoSuchAlgorithmException
- 如果無法找到指定演算法的實作
NullPointerException
- 如果 algorithm
為 null
public abstract CanonicalizationMethod newCanonicalizationMethod(String algorithm, C14NMethodParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
CanonicalizationMethod
。
algorithm
- 標識規範化演算法的 URIparams
- 特定於演算法的規範化參數(可以為 null
)
CanonicalizationMethod
InvalidAlgorithmParameterException
- 如果指定的參數不適合請求的演算法
NoSuchAlgorithmException
- 如果無法找到指定演算法的實作
NullPointerException
- 如果 algorithm
為 null
public abstract CanonicalizationMethod newCanonicalizationMethod(String algorithm, XMLStructure params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
CanonicalizationMethod
。該參數被指定為特定於機制的 XMLStructure
(比如:DOMStructure
)。當參數是 XML 形式或沒有任何用於指定參數的標準類別時,此方法很有用。
algorithm
- 標識規範化演算法的 URIparams
- 從中解組參數的特定於機制的 XML 結構(如果該結構不是必需的或是可選的,則此參數為 null
)
CanonicalizationMethod
ClassCastException
- 如果 params
型別不適合此 XMLSignatureFactory
InvalidAlgorithmParameterException
- 如果指定的參數不適合請求的演算法
NoSuchAlgorithmException
- 如果無法找到指定演算法的實作
NullPointerException
- 如果 algorithm
為 null
public final KeyInfoFactory getKeyInfoFactory()
KeyInfo
物件的 KeyInfoFactory
。返回的 KeyInfoFactory
具有與此 XMLSignatureFactory
相同的機制型別和提供者。
KeyInfoFactory
NoSuchMechanismException
- 如果具有相同機制型別和提供者的 KeyFactory
實作不可用public abstract XMLSignature unmarshalXMLSignature(XMLValidateContext context) throws MarshalException
XMLValidateContext
實例解組新的 XMLSignature
實例。
context
- 從中解組簽章的特定於機制的上下文
XMLSignature
NullPointerException
- 如果 context
為 null
ClassCastException
- 如果 context
型別不適合此處理器
MarshalException
- 如果解組過程中發生不可恢復的異常public abstract XMLSignature unmarshalXMLSignature(XMLStructure xmlStructure) throws MarshalException
XMLStructure
實例解組新的 XMLSignature
實例。如果只想解組(且不驗證) XMLSignature
時,此方法很有用。
xmlStructure
- 從中解組簽章的特定於機制的 XML 結構
XMLSignature
NullPointerException
- 如果 xmlStructure
為 null
ClassCastException
- 如果 xmlStructure
型別不適合此處理器
MarshalException
- 如果解組過程中發生不可恢復的異常。public abstract boolean isFeatureSupported(String feature)
feature
- 功能名稱(作為抽象 URI)
true
,否則返回 false
NullPointerException
- 如果 feature
為 null
public abstract URIDereferencer getURIDereferencer()
URIDereferencer
的參考,預設情況下該參考用於取消 Reference
物件中對 URI 的參考。
URIDereferencer
的參考(不能為 null
)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。