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签名的上下文信息。