我有以下代码,它将content.xml导入document.xml并签署document.xml根元素。
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-26102a68-cfea-43fd-a40e-9682ae7da4a1">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
产生如下签名:
ds:
问题是 - 如何从签名元素中删除命名空间column
?
答案 0 :(得分:1)
通过“删除命名空间”我认为你意味着删除前缀。这不是你可以通过xades4j控制的东西,因为默认前缀是set by Apache Santuario,然后在creating a XMLSignature时使用。默认值似乎是set on the Init class;我不确定如何/是否覆盖设置。
答案 1 :(得分:1)
对于Java中的Apache Santuario库,我在一个名为CreateSignature的示例中看到了一个前缀“ds”的行。
ElementProxy.setDefaultPrefix(Constants.SignatureSpecNS, "ds");
在图书馆开发人员编写的书中,他指定了如何定义签名,因为XAdES4j主要用于构建签名而不是整个文档:
5.2签名制作:如前所述,签名可以看作有两部分:第一部分由特征组成 签名者和签名操作本身;第二, 正在签署的资源。如果签名者被视为常规签名 生产者,他可能有一套使用的特征 每当创建签名时,即签名简档。这些 签名之间的特征是固定的,而签名的 资源各不相同因此,产生签名是组合简档 和一组资源,以创建最终的XML结构。 这个过程归结为三个主要任务:收集所需的任务 信息(签名和数据对象属性,算法,键控 数据)以适当的顺序; 使用创建核心签名结构 Apache XML Security API ;并创建限定属性DOM 要附加到签名的树。 请注意Apache XML安全性 为核心签名结构创建DOM树。然而 Apache API未知XAdES元素,这意味着 最后一项任务必须得到图书馆的完全支持。
引用自:XAdES4j - XAdES签名服务的Java库。作者LuísFilipedosSantosGonçalves
答案 2 :(得分:1)
尝试输入您的代码:
Constants.setSignatureSpecNSprefix("");
答案 3 :(得分:1)
请使用java版本6.32或更高版本以避免在签名XML中附加ds: