如何从Xades4J签名中的签名元素中删除命名空间?

时间:2016-11-23 08:06:01

标签: java x509certificate xades4j

我有以下代码,它将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

4 个答案:

答案 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: