0

我正在尝试使用 Xades4j 验证 Xades 签名。

其中一些签名是由另一个工具(不是 Xades4j)生成的,并且这些签名在Reference标签中没有Type属性:

<ds:Reference URI="#signedProps">
  <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
  <ds:DigestValue>KUAGWItLLNF6sNZ3kXy+/6oJyEo=</ds:DigestValue>
</ds:Reference>

当我尝试验证它时,我遇到了这个异常:

xades4j.verification.QualifyingPropertiesIncorporationException: SignedProperties reference not found
at xades4j.verification.SignatureUtils.processReferences(SignatureUtils.java:221)
at xades4j.verification.XadesVerifierImpl.verify(XadesVerifierImpl.java:132)
at com.jeremp.x4j.App.verify(App.java:110)
at com.jeremp.x4j.App.main(App.java:70)

我查看了 SignatureUtils.java 的源代码,似乎 API 使用Type属性来识别 Reference 标签。

有没有办法用 xades4j 验证这种签名?

4

1 回答 1

0

除非您更改源代码,否则无法使用 xades4j 验证这些签名。我不建议这样做,因为 XAdES 规范明确指出 Type 属性是强制性的。从第 6.3.1 节开始:

此外,本文档强制使用此特定 ds:Reference 元素的 Type 属性,其值设置为http://uri.etsi.org/01903#SignedProperties

于 2013-06-13T13:26:34.293 回答