C# XmlDsig. Установить элементы подписи внутри корневого элемента

У меня есть 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 подписан, нет возможности что-либо изменить, или подпись будет повреждена. Итак, пожалуйста, если у вас есть идея моей проблемы, дайте мне знать.

Заранее спасибо, что нашли время.

1 ответ

Ну, я решил это забавным способом. Я не думал, что это будет работать, но сделал (внешний веб-сервис принял это).

Я преобразовал подписанный XML в строку и объединил его с тегом в начале и конце следующим образом:

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

Это не изменило значение знака. Если это кому-то поможет...

Другие вопросы по тегам