我正在尝试实施一个需要封装XML数字签名(XMLDSIG)的行业规范。我没有遵循示例(<Signature>
),而是使用自己的名称作为签名元素:
<xs:element name="ensembleSignature" type="dsig:SignatureType" />
<!-- wish this was: <xs:element ref="dsig:Signature" /> -->
因此该元素未命名为“Signature”,并且位于域的XML命名空间中,而不是dsig XML命名空间。
通过大量额外工作,我可以在.NET中创建此自定义签名。
但似乎.NET无法验证传入的&lt; myns:ensembleSignature&gt;,即使我将传入的元素重命名为&lt; dsig:Signature&gt ;.
我已多次使用XMLDSIG规范,尽管他们的所有示例都使用&lt; Signature&gt;它似乎没有特别要求这个元素名称,即使对于包络变换也是如此。这是SignedXml中的一个错误,当XMLDSIG规范中没有这样的要求时,它只支持这个单个元素名称吗?
答案 0 :(得分:0)
在.NET中无法使用非标准元素名称。但签名元素名称不是摘要的一部分,因此您可以删除“自定义”签名元素并添加“标准”签名元素名称(&lt; Signature&gt;)但请注意不要更改任何空格或名称空间。 SignedInfo元素,因为SignedInfo IS 是摘要的一部分。在规范化方法中,我使用空格是重要的,元素的命名空间也是如此。