Module java.xml.crypto
Package javax.xml.crypto.dsig
package javax.xml.crypto.dsig
用于生成和验证XML数字签名的类。此包括代表W3C XML数字签名规范中定义的核心元素的类:
XMLSignature
、SignedInfo
、CanonicalizationMethod
、SignatureMethod
、Reference
、DigestMethod
、XMLObject
、Manifest
、SignatureProperties
和SignatureProperty
。 KeyInfo
类型在javax.xml.crypto.dsig.keyinfo
子包中定义。 XMLSignatureFactory
是一个抽象工厂,可以从头开始创建XMLSignature
对象或从现有的XML表示(如DOM节点)创建XMLSignature
对象。 TransformService
是一个服务提供程序接口,用于创建和插入变换和规范化算法的实现。
此包中最重要的是XMLSignature
类,它允许您对XML数字签名进行签名和验证。
服务提供程序
服务提供程序是抽象XMLSignatureFactory
和KeyInfoFactory
类的具体实现,负责创建解析、生成和验证XML签名和KeyInfo结构的对象和算法。 XMLSignatureFactory
的具体实现必须支持W3C XML签名规范中指定的每个必需算法。它可以支持W3C推荐或其他规范定义的其他算法。
API利用JCA提供程序模型(请参阅Provider类
)来注册和加载XMLSignatureFactory
和KeyInfoFactory
实现。
每个具体的XMLSignatureFactory
或KeyInfoFactory
实现都支持特定的XML机制类型,该类型标识实现内部用于解析和生成XML签名和KeyInfo结构的XML处理机制。
服务提供程序实现应使用底层的JCA引擎类,如Signature
和MessageDigest
来执行加密操作。
除了XMLSignatureFactory
和KeyInfoFactory
类外,API还支持用于变换和规范化算法的服务提供程序接口。 TransformService
类允许您开发并插入特定变换或规范化算法的实现,以用于特定的XML机制类型。 TransformService
类使用标准的JCA提供程序模型来注册和加载实现。每个服务提供程序实现应使用TransformService
类来查找支持正在生成或验证的XML签名中的变换和规范化算法的提供程序。
DOM机制要求
实现基于DOM的XMLSignatureFactory
、KeyInfoFactory
或TransformService
时,必须遵守以下要求,以最小化互操作性问题:
XMLSignatureFactory
的unmarshalXMLSignature
方法必须支持DOMValidateContext
类型。如果类型是DOMValidateContext
,则应包含一个类型为Signature的Element
。此外,unmarshalXMLSignature
方法可以填充传入的DOMValidateContext
的Id/Element映射。XMLSignatureFactory
生成的XMLSignature
的sign
方法必须支持DOMSignContext
类型,validate
方法必须支持DOMValidateContext
类型。此要求还适用于SignatureValue
的validate
方法和Reference
的validate
方法。- 实现必须支持
DOMStructure
作为应用程序指定可扩展内容(任何元素或混合内容)的机制。 - 如果用户指定的
URIDereferencer
的dereference
方法返回NodeSetData
对象,则iterator
方法必须返回一个类型为org.w3c.dom.Node
的迭代。 - 传递给用户指定的
URIDereferencer
的dereference
方法的URIReference
对象必须是DOMURIReference
类型,XMLCryptoContext
对象必须实现DOMCryptoContext
。 - 前两个要求也适用于
XMLSignatureFactory
和KeyInfoFactory
的getURIDereferencer
方法返回的URIDereferencer
。 KeyInfoFactory
的unmarshalKeyInfo
方法必须支持DOMStructure
类型。如果类型是DOMStructure
,则应包含一个类型为KeyInfo
的Element
。Transform
的transform
方法必须支持DOMCryptoContext
上下文参数类型。XMLSignatureFactory
的newtransform
和newCanonicalizationMethod
方法必须支持DOMStructure
参数类型。TransformService
的init
和marshalParams
方法必须支持DOMStructure
和DOMCryptoContext
类型。XMLSignatureFactory
的unmarshalXMLSignature
方法必须支持DOMStructure
类型。如果类型是DOMStructure
,则应包含一个类型为Signature
的Element
。KeyInfo
的marshal
方法必须支持DOMStructure
和DOMCryptoContext
参数类型。
请注意,DOM实现可以在内部使用除DOM之外的其他XML解析API,只要不影响互操作性即可。例如,XMLSignatureFactory
的DOM实现可能在内部使用SAX解析器来规范化数据。
包规范
- 自版本:
- 1.6
-
ClassDescription表示在W3C XML签名语法和处理的推荐中定义的XML
CanonicalizationMethod
元素。表示在W3C XML签名语法和处理的推荐中定义的XMLDigestMethod
元素。表示在W3C XML签名语法和处理的推荐中定义的XMLManifest
元素。表示在W3C XML签名语法和处理的推荐中定义的Reference
元素。表示在W3C XML签名语法和处理的推荐中定义的XMLSignatureMethod
元素。表示在W3C XML签名语法和处理的推荐中定义的XMLSignatureProperties
元素。表示在W3C XML签名语法和处理的推荐中定义的XMLSignatureProperty
元素。表示在W3C XML签名语法和处理的推荐中定义的XMLSignedInfo
元素。表示在W3C XML签名语法和处理的推荐中定义的XMLTransform
元素。表示在执行变换算法时发生的异常情况。用于变换和规范化算法的服务提供程序接口。表示在W3C XML签名语法和处理的推荐中定义的XMLObject
元素。表示在W3C XML签名语法和处理的推荐中定义的XMLSignature
元素。表示XMLSignatureValue
元素的表示形式,如W3C XML签名语法和处理推荐标准中定义。指示在XML签名生成或验证过程中发生的异常情况。用于从头开始创建XMLSignature
对象或从相应的XML表示中取消编组XMLSignature
对象的工厂。包含生成XML签名的上下文信息。包含验证XML签名的上下文信息。