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

时间:2010-11-18 13:41:42

标签: c# .net xml digital-signature xml-validation

程序正在使用的某些信息使用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>

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

此致

5 个答案:

答案 0 :(得分:4)

您展示的XML实际上不是XAdES签名,而是XMLDSIG。您可以告诉我,因为没有 QualifyingProperties 节点(XAdES添加此节点,必须位于 Object 标记内,作为 Signature的子节点 node)。

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

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

此外,我们使用.NET Framework 3.5开发了库,因此,如果你真的只能使用1.1它将无法工作:(在Framework 1.1更改后的安全层,因此它不向后兼容。我认为它将工作使用2.0及以上版本。

我希望它有所帮助。

此致

Luis M. Villa

答案 1 :(得分:1)

答案 2 :(得分:0)

试试这个项目:

http://xadesnet.codeplex.com/

答案 3 :(得分:-1)

我们的SecureBlackbox产品支持XMLDSig, XMLEnc and XAdES standards in .NET(包括Mono,.NET CF和Silverlight)。

答案 4 :(得分:-1)

如果您仍需要生成XAdES签名,我们已经发布了XAdES .NET Project的1.0 alpha版本。此版本增加了对XAdES-BES签名的支持,并且已经重写了一些代码片段以与.NET 2.0 Framework兼容。

您可以在此处下载此版本: XAdES .NET Project

希望它有所帮助,

Luis M. Villa