C# - Как мне увидеть пост-преобразование XML перед подписью? - PullRequest
0 голосов
/ 05 августа 2020

Я просто выполняю межъязыковую отладку некоторых сценариев SAML, и у меня есть код, работающий на C#, но не на другом языке, и я пытаюсь сравнить результаты, чтобы выяснить, где мне не хватает что-то. Кажется, проблема в последней подписи (значение дайджеста верное). Мой код C# выглядит так:

XmlElement element = ...;
SignedXml signedXml = ...; // A SignedXml instance for the element above

var reference = new Reference("#abc");
reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
reference.AddTransform(new XmlDsigExcC14NTransform());

signedXml.AddReference(reference);
signedXml.ComputeSignature();
...etc...

Я бы хотел просто увидеть XML -AFTER- преобразования были применены, чтобы я мог видеть точную строку, которая C# подписывается с помощью ComputeSignature ().

Есть ли способ сбросить эту строку?

1 Ответ

0 голосов
/ 05 августа 2020

Похоже, что в Signed Xml встроен журнал отладки, который просто нужно активировать с помощью диагностики. В моем файле app.config я добавил следующее XML внутри узла конфигурации:

<system.diagnostics>
  <sources>
    <source name="System.Security.Cryptography.Xml.SignedXml" switchName="XmlDsigLogSwitch">
      <listeners>
        <add name="logFile" />
      </listeners>
    </source>
  </sources>
  <switches>
    <add name="XmlDsigLogSwitch" value="Verbose" />
  </switches>
  <sharedListeners>
    <add name="logFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="XmlDsigLog.txt"/>
  </sharedListeners>
  <trace autoflush="true">
    <listeners>
      <add name="logFile" />
    </listeners>
  </trace>
</system.diagnostics>

Это зарегистрировало XML журнал отладки подписи, включая вывод пост-преобразования на консоль, а также в файл с именем XmlDsigLog.txt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...