Module java.xml.crypto

Package javax.xml.crypto.dsig


package javax.xml.crypto.dsig
用于生成和验证XML数字签名的类。此包括代表W3C XML数字签名规范中定义的核心元素的类:XMLSignatureSignedInfoCanonicalizationMethodSignatureMethodReferenceDigestMethodXMLObjectManifestSignaturePropertiesSignaturePropertyKeyInfo类型在javax.xml.crypto.dsig.keyinfo子包中定义。 XMLSignatureFactory是一个抽象工厂,可以从头开始创建XMLSignature对象或从现有的XML表示(如DOM节点)创建XMLSignature对象。 TransformService是一个服务提供程序接口,用于创建和插入变换和规范化算法的实现。

此包中最重要的是XMLSignature类,它允许您对XML数字签名进行签名和验证。

服务提供程序

服务提供程序是抽象XMLSignatureFactoryKeyInfoFactory类的具体实现,负责创建解析、生成和验证XML签名和KeyInfo结构的对象和算法。 XMLSignatureFactory的具体实现必须支持W3C XML签名规范中指定的每个必需算法。它可以支持W3C推荐或其他规范定义的其他算法。

API利用JCA提供程序模型(请参阅Provider类)来注册和加载XMLSignatureFactoryKeyInfoFactory实现。

每个具体的XMLSignatureFactoryKeyInfoFactory实现都支持特定的XML机制类型,该类型标识实现内部用于解析和生成XML签名和KeyInfo结构的XML处理机制。

服务提供程序实现应使用底层的JCA引擎类,如SignatureMessageDigest来执行加密操作。

除了XMLSignatureFactoryKeyInfoFactory类外,API还支持用于变换和规范化算法的服务提供程序接口。 TransformService类允许您开发并插入特定变换或规范化算法的实现,以用于特定的XML机制类型。 TransformService类使用标准的JCA提供程序模型来注册和加载实现。每个服务提供程序实现应使用TransformService类来查找支持正在生成或验证的XML签名中的变换和规范化算法的提供程序。

DOM机制要求

实现基于DOM的XMLSignatureFactoryKeyInfoFactoryTransformService时,必须遵守以下要求,以最小化互操作性问题:
  1. XMLSignatureFactoryunmarshalXMLSignature方法必须支持DOMValidateContext类型。如果类型是DOMValidateContext,则应包含一个类型为Signature的Element。此外,unmarshalXMLSignature方法可以填充传入的DOMValidateContext的Id/Element映射。
  2. XMLSignatureFactory生成的XMLSignaturesign方法必须支持DOMSignContext类型,validate方法必须支持DOMValidateContext类型。此要求还适用于SignatureValuevalidate方法和Referencevalidate方法。
  3. 实现必须支持DOMStructure作为应用程序指定可扩展内容(任何元素或混合内容)的机制。
  4. 如果用户指定的URIDereferencerdereference方法返回NodeSetData对象,则iterator方法必须返回一个类型为org.w3c.dom.Node的迭代。
  5. 传递给用户指定的URIDereferencerdereference方法的URIReference对象必须是DOMURIReference类型,XMLCryptoContext对象必须实现DOMCryptoContext
  6. 前两个要求也适用于XMLSignatureFactoryKeyInfoFactorygetURIDereferencer方法返回的URIDereferencer
  7. KeyInfoFactoryunmarshalKeyInfo方法必须支持DOMStructure类型。如果类型是DOMStructure,则应包含一个类型为KeyInfoElement
  8. Transformtransform方法必须支持DOMCryptoContext上下文参数类型。
  9. XMLSignatureFactorynewtransformnewCanonicalizationMethod方法必须支持DOMStructure参数类型。
  10. TransformServiceinitmarshalParams方法必须支持DOMStructureDOMCryptoContext类型。
  11. XMLSignatureFactoryunmarshalXMLSignature方法必须支持DOMStructure类型。如果类型是DOMStructure,则应包含一个类型为SignatureElement
  12. KeyInfomarshal方法必须支持DOMStructureDOMCryptoContext参数类型。

请注意,DOM实现可以在内部使用除DOM之外的其他XML解析API,只要不影响互操作性即可。例如,XMLSignatureFactory的DOM实现可能在内部使用SAX解析器来规范化数据。

包规范

自版本:
1.6