使用 XadES-BES 算法通过 XMLDSIG 进行 XML 验证

2024-03-31

程序使用的某些信息使用 xml 格式的输入文件。这些文件具有以下结构。

<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="urn:envelope">
 <MyData Id="MyDataId">
  <!-- some data -->
 </MyData>
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
  <SignedInfo>
   <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
   <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig-more#rsa-sha256" />
   <Reference URI="#MyDataId">
    <Transforms>
     <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
    </Transforms>
    <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
    <DigestValue>
     <!-- digest for MyData -->
    </DigestValue>
   </Reference>
   <Reference URI="#KeyInfoId">
    <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
    <DigestValue>
     <!-- digest for KeyInfo -->
    </DigestValue>
   </Reference>
  </SignedInfo>
  <SignatureValue>
   <!-- signature from SignedInfo data -->
  </SignatureValue>
  <KeyInfo id="KeyInfoId">
   <X509Data>
    <X509Certificate>
     <!-- some certificate -->
    </X509Certificate>
   </X509Data>
  </KeyInfo>
 </Signature>
</Envelope>

我发现一些示例只有一个引用标记,但没有多个或仅引用,这些引用已经存在于 xml 文件的其余部分中。我知道编码是XADES-BES。有谁知道能够验证此类 XML 文件的 .NET 1.1 组件吗?提前致谢。

Regards,

René


您显示的 XML 并不是真正的 XAdES 签名,而是 XMLDSIG。你可以这么说,因为没有合格属性节点(XAdES 添加此节点,该节点必须位于Object标签,作为签名 node).

正如里卡多之前所说,我正在从事的项目(XAdES .Net 项目 http://xadesnet.codeplex.com)应该能够验证您提供的 xml。如果没有,请随时在我们的问题跟踪器中添加问题(您可能需要在 codeplex 上注册,但它是免费的)。

此时,我们仍在构建库的骨架(真正的目标是在.NET 中实现 XAdES),因此您可能会发现错误或缺少功能。如果是这样,请再次随时添加您需要的任何问题。

另外,我们使用 .NET Framework 3.5 开发了该库,因此,如果您真的只能使用 1.1,它将无法工作:( Framework 1.1 更改后的安全层,因此它不向后兼容。我认为使用 2.0 和多于。

我希望它有帮助。

Regards,

路易斯·M·维拉

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XadES-BES 算法通过 XMLDSIG 进行 XML 验证 的相关文章

随机推荐