public abstract class XMLSignatureFactory extends Object
XMLSignature对象的工厂,或从对应的XML表示中解组XMLSignature对象。
XMLSignatureFactory每个实例XMLSignatureFactory支持特定的XML机制类型。 要创建一个XMLSignatureFactory ,请调用静态getInstance方法之一,传递所需的XML机制类型,例如:
XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
该工厂生产的对象将基于DOM,并遵守API概述中DOM Mechanism Requirements部分定义的DOM互操作性要求。 有关标准机制类型的列表,请参阅API概述的Service Providers部分。
XMLSignatureFactory机制注册和加载XMLSignatureFactory实现。 例如,支持DOM机制的服务提供商将在Provider子类中Provider为:
put("XMLSignatureFactory.DOM", "org.example.DOMXMLSignatureFactory");
实现必须最低限度地支持默认机制类型:DOM。
注意,调用者必须使用相同XMLSignatureFactory实例创建XMLStructure个特定的XMLSignature即产生。 如果来自不同提供商的XMLStructure s或不同的机制类型一起使用,行为是未定义的。
此外,由本厂创建的XMLStructure s可能包含特定于XMLSignature状态,并不意图重复使用。
一旦创建了XMLSignatureFactory ,可以通过调用相应的方法来实例化对象。 例如,可以通过调用newReference方法之一来创建一个Reference实例。
可替换地, XMLSignature可以从现有的XML表示通过调用创建unmarshalXMLSignature方法并传递它的特定机制- XMLValidateContext包含XML内容实例:
DOMValidateContext context = new DOMValidateContext(key, signatureElement);
XMLSignature signature = factory.unmarshalXMLSignature(context);
每个XMLSignatureFactory必须支持该工厂类型所需的XMLValidateContext类型,但可能支持其他类型。
DOM XMLSignatureFactory必须支持DOMValidateContext对象。
XMLSignature也可以通过调用XMLSignature对象的sign方法,并传递给包含签名密钥和编组参数的机制特定XMLSignContext对象(见DOMSignContext ),编组为XML表示并签名。
例如:
DOMSignContext context = new DOMSignContext(privateKey, document);
signature.sign(context);
并发访问
该类的静态方法保证线程安全。 多个线程可以同时调用此类中定义的静态方法,而不会产生不良影响。
但是,对于此类定义的非静态方法,这不是真的。 除非特定提供商另有说明,否则需要同时访问单个XMLSignatureFactory实例的线程应在其间同步并提供必要的锁定。 多个线程每个操作不同的XMLSignatureFactory实例不需要同步。
| Modifier | Constructor and Description |
|---|---|
protected |
XMLSignatureFactory()
默认构造函数,用于由子类调用。
|
| Modifier and Type | Method and Description |
|---|---|
static XMLSignatureFactory |
getInstance()
返回一个
XMLSignatureFactory支持默认XML处理机制和表示类型(“DOM”)。
|
static XMLSignatureFactory |
getInstance(String mechanismType)
返回一个
XMLSignatureFactory支持指定的XML处理机制和表示类型(比如:“DOM”)。
|
static XMLSignatureFactory |
getInstance(String mechanismType, Provider provider)
返回一个
XMLSignatureFactory ,它支持由指定的提供
XMLSignatureFactory提供的请求的XML处理机制和表示类型(例如:“DOM”)。
|
static XMLSignatureFactory |
getInstance(String mechanismType, String provider)
返回一个
XMLSignatureFactory ,它支持由指定提供
XMLSignatureFactory提供的请求的XML处理机制和表示类型(例如:“DOM”)。
|
KeyInfoFactory |
getKeyInfoFactory()
返回一个
KeyInfoFactory ,创建
KeyInfo对象。
|
String |
getMechanismType()
返回此
XMLSignatureFactory (例如:“DOM”)支持的XML处理机制和表示形式的类型。
|
Provider |
getProvider()
返回此
XMLSignatureFactory的提供者。
|
abstract URIDereferencer |
getURIDereferencer()
返回对URIDereferencer的引用,该 URIDereferencer默认情况下用于取消引用Reference对象中的URI。
|
abstract boolean |
isFeatureSupported(String feature)
指示是否支持指定的功能。
|
abstract CanonicalizationMethod |
newCanonicalizationMethod(String algorithm, C14NMethodParameterSpec params)
创建
CanonicalizationMethod针对指定的算法URI和参数。
|
abstract CanonicalizationMethod |
newCanonicalizationMethod(String algorithm, XMLStructure params)
创建
CanonicalizationMethod针对指定的算法URI和参数。
|
abstract DigestMethod |
newDigestMethod(String algorithm, DigestMethodParameterSpec params)
创建
DigestMethod针对指定的算法URI和参数。
|
abstract Manifest |
newManifest(List references)
创建一个 Manifest Reference的指定列表的Manifest 。
|
abstract Manifest |
newManifest(List references, String id)
创建一个 Manifest ,其中包含Reference s和可选id的指定列表。
|
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)
创建
SignatureMethod针对指定的算法URI和参数。
|
abstract SignatureProperties |
newSignatureProperties(List properties, String id)
创建一个 SignatureProperties ,其中包含SignatureProperty s和可选id的指定列表。
|
abstract SignatureProperty |
newSignatureProperty(List content, String target, String id)
创建 SignatureProperty包含指定的列表XMLStructure个 S,目标URI和可选id。
|
abstract SignedInfo |
newSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, List references)
创建具有
SignedInfo的规范化和签名方法的SignedInfo以及一个或多个引用的列表。
|
abstract SignedInfo |
newSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, List references, String id)
创建一个
SignedInfo指定的参数。
|
abstract Transform |
newTransform(String algorithm, TransformParameterSpec params)
创建
Transform针对指定的算法URI和参数。
|
abstract Transform |
newTransform(String algorithm, XMLStructure params)
创建
Transform针对指定的算法URI和参数。
|
abstract XMLObject |
newXMLObject(List content, String id, String mimeType, String encoding)
创建一个
XMLObject从指定的参数。
|
abstract XMLSignature |
newXMLSignature(SignedInfo si, KeyInfo ki)
创建一个
XMLSignature并使用指定的
SignedInfo和
KeyInfo对象的内容进行
KeyInfo 。
|
abstract XMLSignature |
newXMLSignature(SignedInfo si, KeyInfo ki, List objects, String id, String signatureValueId)
创建一个
XMLSignature并用指定的参数进行初始化。
|
abstract XMLSignature |
unmarshalXMLSignature(XMLStructure xmlStructure)
解组新的
XMLSignature从特定的机制,例如
XMLStructure实例。
|
abstract XMLSignature |
unmarshalXMLSignature(XMLValidateContext context)
解组新的
XMLSignature从特定的机制,例如
XMLValidateContext实例。
|
public static XMLSignatureFactory getInstance(String mechanismType)
XMLSignatureFactory支持指定的XML处理机制和表示类型(比如:“DOM”)。
此方法使用标准的JCA提供查找机制来查找并实例化XMLSignatureFactory实现期望的机构的类型。 它通过注册安全性列表Provider s,从最优选的Provider 。 返回支持指定机制的第一个Provider新的XMLSignatureFactory对象。
请注意,注册提供商的列表可以通过Security.getProviders()方法检索 。
mechanismType - XML处理机制和表示的类型。
有关标准机制类型的列表,请参阅API概述的Service Providers部分。
XMLSignatureFactory
NullPointerException - 如果
mechanismType是
null
NoSuchMechanismException - 如果没有
Provider支持
XMLSignatureFactory机制的XMLSignatureFactory实现
Provider
public static XMLSignatureFactory getInstance(String mechanismType, Provider provider)
XMLSignatureFactory ,它支持由指定的提供XMLSignatureFactory提供的请求的XML处理机制和表示类型(例如:“DOM”)。
请注意,指定的Provider对象不必在提供者列表中注册。
mechanismType - XML处理机制和表示的类型。
有关标准机制类型的列表,请参阅API概述的Service Providers部分。
provider -
Provider对象
XMLSignatureFactory
NullPointerException - 如果
provider或
mechanismType是
null
NoSuchMechanismException - 如果指定
XMLSignatureFactory XMLSignatureFactory实现从指定的
Provider对象不可
Provider
Provider
public static XMLSignatureFactory getInstance(String mechanismType, String provider) throws NoSuchProviderException
XMLSignatureFactory ,它支持由指定的提供XMLSignatureFactory提供的请求的XML处理机制和表示类型(例如:“DOM”)。
指定的提供者必须在安全提供程序列表中注册。
请注意,注册提供商的列表可以通过Security.getProviders()方法检索 。
mechanismType - XML处理机制和表示的类型。
有关标准机制类型的列表,请参阅API概述的Service Providers部分。
provider - 提供者的字符串名称
XMLSignatureFactory
NoSuchProviderException - 如果指定的提供程序未在安全提供程序列表中注册
NullPointerException - 如果
provider或
mechanismType是
null
NoSuchMechanismException - 如果指定
XMLSignatureFactory XMLSignatureFactory实现不能从指定的提供者
Provider
public static XMLSignatureFactory getInstance()
XMLSignatureFactory支持默认XML处理机制和表示类型(“DOM”)。
此方法使用标准的JCA提供者查找机制来查找并实例化一个XMLSignatureFactory实现默认机制类型。 它通过注册安全性列表Provider s,从最优选的Provider 。 返回支持DOM机制的第一个Provider新的XMLSignatureFactory对象。
请注意,注册提供商的列表可以通过Security.getProviders()方法检索 。
XMLSignatureFactory
NoSuchMechanismException -如果没有
Provider支持一个
XMLSignatureFactory实施DOM机制
Provider
public final String getMechanismType()
XMLSignatureFactory (例如:“DOM”)支持的XML处理机制和表示形式的类型。
XMLSignatureFactory
public final Provider getProvider()
XMLSignatureFactory的提供者。
XMLSignatureFactory的提供者
public abstract XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki)
XMLSignature并使用指定的
SignedInfo和
KeyInfo对象的内容进行
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个 S(可能是空的或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 (Digital Signature Services)规范。
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 (Digital Signature Services)规范。
当XMLSignature包含此引用的XMLSignature时,指定的transforms (如果非空)将应用于指定的result 。 所Transforms元素的Reference元素设置为appliedTransforms和transforms 。
uri - 参考URI(可能是
null )
dm - 摘要方法
appliedTransforms - 已经应用的Transform的列表。
该列表被防御复制以防止后续修改。
该列表必须至少包含一个条目。
result - 处理appliedTransforms序列的
appliedTransforms
transforms - 生成签名时要应用的Transform的列表。
该列表被防御复制以防止后续修改。
可能是null或空。
type - 引用类型,作为URI(可以是
null )
id - 参考ID(可能为
null )
Reference
ClassCastException - 如果任何转换(在任一列表中)不是类型
Transform
IllegalArgumentException - 如果
uri不
uri RFC 2396或
appliedTransforms为空
NullPointerException -如果
dm ,
appliedTransforms或
result是
null
public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, List references)
SignedInfo的规范化和签名方法的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)
Manifest Reference的指定列表的Manifest 。
references - 一个或多个Reference的列表。
该列表被防御复制以防止后续修改。
Manifest
NullPointerException - 如果
references是
null
IllegalArgumentException - 如果
references为空
ClassCastException - 如果references包含任何不是Reference类型的条目
public abstract Manifest newManifest(List references, String id)
Manifest Reference s和可选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)
SignatureProperty包含指定的列表XMLStructure个 S,目标URI和可选id。
content - 一个或多个XMLStructure的列表。
该列表被防御复制以防止后续修改。
target - 此属性应用于的签名的目标URI
id - id(可能是
null )
SignatureProperty
NullPointerException - 如果
content或
target是
null
IllegalArgumentException - 如果
content为空
ClassCastException - 如果content包含任何不是类型XMLStructure的条目
public abstract SignatureProperties newSignatureProperties(List properties, String id)
SignatureProperties ,其中包含SignatureProperty s和可选id的指定列表。
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针对指定的算法URI和参数。
algorithm - 标识摘要算法的URI
params - 算法特定的摘要参数(可以是
null )
DigestMethod
InvalidAlgorithmParameterException - 如果指定的参数不适合所请求的算法
NoSuchAlgorithmException - 如果找不到指定算法的实现
NullPointerException - 如果
algorithm是
null
public abstract SignatureMethod newSignatureMethod(String algorithm, SignatureMethodParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
SignatureMethod针对指定的算法URI和参数。
algorithm - 识别签名算法的URI
params - 算法特定的签名参数(可以是
null )
SignatureMethod
InvalidAlgorithmParameterException - 如果指定的参数不适合所请求的算法
NoSuchAlgorithmException - 如果找不到指定算法的实现
NullPointerException - 如果
algorithm是
null
public abstract Transform newTransform(String algorithm, TransformParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
Transform针对指定的算法URI和参数。
algorithm - 标识变换算法的URI
params - 算法特定的变换参数(可以是
null )
Transform
InvalidAlgorithmParameterException - 如果指定的参数不适合所请求的算法
NoSuchAlgorithmException - 如果找不到指定算法的实现
NullPointerException - 如果
algorithm是
null
public abstract Transform newTransform(String algorithm, XMLStructure params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
Transform针对指定的算法URI和参数。
这些参数被指定为机制特定的XMLStructure (例如: DOMStructure )。
当这些参数是XML格式或没有用于指定参数的标准类时,此方法很有用。
algorithm - 标识变换算法的URI
params - 从中解除参数的机制特定的XML结构(如果不需要或可选的话可以是
null )
Transform
ClassCastException -如果类型
params不适合此
XMLSignatureFactory
InvalidAlgorithmParameterException - 如果指定的参数不适合所请求的算法
NoSuchAlgorithmException - 如果找不到指定算法的实现
NullPointerException - 如果
algorithm是
null
public abstract CanonicalizationMethod newCanonicalizationMethod(String algorithm, C14NMethodParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
CanonicalizationMethod针对指定的算法URI和参数。
algorithm - 标识规范化算法的URI
params - 算法特定的规范化参数(可以是
null )
CanonicalizationMethod
InvalidAlgorithmParameterException - 如果指定的参数不适合所请求的算法
NoSuchAlgorithmException - 如果找不到指定算法的实现
NullPointerException - 如果
algorithm是
null
public abstract CanonicalizationMethod newCanonicalizationMethod(String algorithm, XMLStructure params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
CanonicalizationMethod针对指定的算法URI和参数。
这些参数被指定为机制特定的XMLStructure (例如: DOMStructure )。
当这些参数是XML格式或没有用于指定参数的标准类时,此方法很有用。
algorithm - 标识规范化算法的URI
params - 从中解除参数的机制特定的XML结构(如果不需要或可选的话可以是
null )
CanonicalizationMethod
ClassCastException -如果类型
params不适合此
XMLSignatureFactory
InvalidAlgorithmParameterException - 如果指定的参数不适用于请求的算法
NoSuchAlgorithmException - 如果找不到指定算法的实现
NullPointerException - 如果
algorithm是
null
public final KeyInfoFactory getKeyInfoFactory()
KeyInfoFactory创建KeyInfo对象。
返回的KeyInfoFactory具有与此XMLSignatureFactory相同的机制类型和提供商。
KeyInfoFactory
NoSuchMechanismException -如果
KeyFactory实现具有相同机制类型和提供不可用
public abstract XMLSignature unmarshalXMLSignature(XMLValidateContext context) throws MarshalException
XMLSignature从特定的机制,例如
XMLValidateContext实例。
context - 从中解除签名的机制特定上下文
XMLSignature
NullPointerException - 如果
context是
null
ClassCastException -如果类型
context不适合此工厂
MarshalException - 如果在解组时出现不可恢复的异常
public abstract XMLSignature unmarshalXMLSignature(XMLStructure xmlStructure) throws MarshalException
XMLSignature从特定的机制,例如XMLStructure实例。
如果您只想解散(而不是验证) XMLSignature则此方法很有用。
xmlStructure - 从中解除签名的机制特定的XML结构
XMLSignature
NullPointerException - 如果
xmlStructure是
null
ClassCastException -如果类型
xmlStructure不适合此工厂
MarshalException - 如果在解组期间发生不可恢复的异常
public abstract boolean isFeatureSupported(String feature)
feature - 功能名称(绝对URI)
true如果支持指定的功能,
false false
NullPointerException - 如果
feature是
null
public abstract URIDereferencer getURIDereferencer()
URIDereferencer默认情况下用于取消引用Reference对象中的URI。
URIDereferencer (从不
null )
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.