c# XmlDsig.在根元素中设置签名元素

本文关键字:元素 设置 XmlDsig | 更新日期: 2023-09-27 18:15:00

我有一个这样的XML:

<raiz>
  <nro_orden>123</nro_orden>
  <datos>Dadada</datos>
</raiz>

我需要用这样的格式签名:

<raiz>
  <Signature>
   (...)  
   <nro_orden>123</nro_orden>
   <datos>Dadada</datos>
 </Signature>
</raiz>

我尝试了两种方法(使用包络法和包络法)。但是在第一种方法中,我得到了数据顶部的签名元素:

<Signature>
   (...)  
   <Object Id="20150924105053">
    <raiz>
     <nro_orden>123</nro_orden>
     <datos>Dadada</datos>           
    </raiz>
</Object>
</Signature>

使用第二种方法(信封),我在数据的底部得到签名元素:

<raiz>
 <nro_orden>123</nro_orden>
 <datos>Dadada</datos>    
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
 (...)
 </Signature>
</raiz>

我只需要根元素()包装整个XML(包括签名)。我知道,在对XML进行签名之后,没有办法修改某些内容,否则签名就会损坏。所以,如果你对我的问题有什么想法,请让我知道。

提前感谢您的宝贵时间。

c# XmlDsig.在根元素中设置签名元素

我用一种有趣的方式解决了这个问题。我不认为它会工作,但确实(外部网络服务接受它)。

我将带符号的XML转换为字符串,并在开头和结尾使用标签连接,如下所示:

string some = "<raiz>"+ xmlSigned.ToString() + "</raiz>";

它没有改变符号的任何值。

相关文章: