我有一个 XML 文档,其结构类似于以下内容
<envelop>
<header>blaa</header>
<message>blaa blaa</message>
<footer></footer>
</envelop>
我想对页眉和消息元素进行数字签名,并将签名添加到页脚元素。
我如何签署元素然后验证签名(使用 .net c#)?
最佳答案
您应该能够将 XPath 转换添加到签名中。它应该看起来像这样:
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<XPath xmlns:dsig="&dsig;">
...
</XPath>
</Transform>
我不精通 XPath,但应该很容易制定排除页脚元素的 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>
您可以通过使用 Enveloped Signature Transform(第一种情况)或通过签署 signedEnvelope 元素(第二种情况)来处理它。
关于xml - 对 XML 文档的各个部分进行数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1031856/