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
)