|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjavax.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 實作Providerpublic static XMLSignatureFactory getInstance()
XMLSignatureFactory。
此方法使用標準的 JCA 提供者尋找機制來尋找並實例化預設機制型別的 XMLSignatureFactory 實作。它將從首選的 Provider 開始,遍歷已註冊的安全 Provider 的列表。返回取自第一個支持 DOM 機制的Provider 中的新 XMLSignatureFactory 物件。
注意,已註冊提供者的列表可以通過 Security.getProviders() 方法獲得。
XMLSignatureFactory
NoSuchMechanismException - 如果沒有任何 Provider 支持 DOM 機制的 XMLSignatureFactory 實作Providerpublic 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 為 nullpublic 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 為 nullpublic 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。