.NET不支持非标准XMLDSIG签名元素名称

.NET不支持非标准XMLDSIG签名元素名称,.net,standards-compliance,signedxml,xml-dsig,.net,Standards Compliance,Signedxml,Xml Dsig,我正在尝试实现一个行业规范,它需要封装的XML数字签名XMLDSIG。我的规范没有遵循示例,而是使用自己的名称作为签名元素: <xs:element name="ensembleSignature" type="dsig:SignatureType" /> <!-- wish this was: <xs:element ref="dsig:Signature" /> --> 因此,元素没有命名为“Signature”,而是位于域的XML命名空间中,而不是

我正在尝试实现一个行业规范,它需要封装的XML数字签名XMLDSIG。我的规范没有遵循示例,而是使用自己的名称作为签名元素:

<xs:element name="ensembleSignature" type="dsig:SignatureType" />
<!-- wish this was:  <xs:element ref="dsig:Signature" />  -->
因此,元素没有命名为“Signature”,而是位于域的XML命名空间中,而不是dsig XML命名空间中

通过大量额外工作,我可以在.NET中创建此自定义签名

使用.NET SignedXml类创建元素 我操纵DOM以删除元素并将其重新创建为。 但是,似乎.NET无法验证传入的元素,即使我将传入元素重新命名为


我已经看过很多次XMLDSIG规范,尽管他们的示例都使用它,但它似乎并不特别需要这个元素名,即使对于封装的转换也是如此。那么,这是SignedXml中的一个缺陷吗?当XMLDSIG规范中没有这样的要求时,它只支持这个单一元素名?

在.NET中不可能使用非标准元素名。但是签名元素名称不是摘要的一部分,因此您可以删除“自定义”签名元素并添加“标准”签名元素名称,但请注意不要更改SignedInfo元素中的任何空白或命名空间,因为SignedInfo是摘要的一部分。在规范化方法中,我使用的空格是重要的,元素的名称空间也是重要的

将XML加载到XmlDocument中 发现 创建新元素 将的所有子项移动到 注意不要干扰的空白或命名空间上下文。 取代 使用.NET SignedXml类验证签名