包 javax.xml.crypto.dsig


javax.xml.crypto.dsig
用于生成和验证 XML 数字签名的类。此包包含表示 W3C XML 数字签名规范中定义的核心元素的类:XMLSignature SignedInfo CanonicalizationMethod SignatureMethod Reference DigestMethod XMLObject Manifest SignatureProperties SignatureProperty KeyInfo 类型在 javax.xml.crypto.dsig.keyinfo 子包中定义。 XMLSignatureFactory 是一个抽象工厂,它从头开始或从预先存在的 XML 表示(例如 DOM 节点)创建 XMLSignature 对象。 TransformService 是一个服务提供商接口,用于创建和插入转换和规范化算法的实现。

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

服务提供商

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

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

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

服务提供者实现应该使用底层 JCA 引擎类,例如 Signature MessageDigest 来执行加密操作。

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

DOM机制需求

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

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

包装规格

自从:
1.6