【发布时间】:2018-08-21 15:22:42
【问题描述】:
是否可以将封装的签名分配为与您签署的 XML 文档不同的命名空间中的子子项?
例如:
<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="myNamespace">
<Header>
<head:sgntr xmlns:head="myHeader"></head:sgntr>
</Header>
<Data>
<a:DataEntry>some data</a:DataEntry>
<a:DataEntry>some data</a:DataEntry>
</Data>
</Message>
使用规范化方法 XmlDsigC14NTransform 计算您的签名,然后将其放在 sgntr 节点中。我面临的问题是第 3 方软件无法验证我的 XML,如果我将签名替换为 XML 文档的最后一个节点,第 3 方可以成功验证它。
【问题讨论】:
-
请参阅以下帖子,其中包含命名空间为“S”的信封和命名空间为“ds”的签名:stackoverflow.com/questions/46722997/…
-
您应该添加更多关于为什么第 3 方软件无法验证 XML 的信息。他们使用什么规格?
-
第三方是客户和 XML ValidatorBuddy,DigestValue 是正确的,但 SignatureValue 不是。我们找到了一个解决方案/解决方法,我将在这个问题上发布。
标签: c# xml digital-signature xml-signature canonicalization