程序正在使用的某些信息使用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文件?提前谢谢。
此致
勒
答案 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)
试试这个项目:
答案 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