我有一个xml文档,其结构类似于
<envelop>
<header>blaa</header>
<message>blaa blaa</message>
<footer></footer>
</envelop>
我想对header和message元素进行数字签名,并将签名添加到footer元素。
如何对元素签名,然后稍后验证签名(使用.NET C)呢?
最佳答案
您应该能够向签名添加xpath转换。应该是这样的:
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<XPath xmlns:dsig="&dsig;">
...
</XPath>
</Transform>
我不精通xpath,但是应该很容易构造一个不包括footer元素的xpath表达式。(但请注意,xpath是xml-dsig的可选部分,因此并非所有实现都支持它)。
或者,如果您可以将您的文档重组为
<envelop>
<header>blaa</header>
<message>blaa blaa</message>
<Signature></Signature>
</envelop>
或
<envelop>
<signedEnvelope>
<header>blaa</header>
<message>blaa blaa</message>
</signedEnvelope>
<Signature></Signature>
</envelop>
您可以通过使用信封签名转换(第一种情况)或签名signedenvelope元素(第二种情况)来处理它。