Как проверить подпись в XML-файле?C#

Место общения программистов C#
Ответить
Anonymous
 Как проверить подпись в XML-файле?

Сообщение Anonymous »

Я пытаюсь проверить подпись XML-файла. XML-файл представляет собой файл электронного счета, соответствующий стандартам UBL. Подпись в файле является лишь образцом. Это недействительно. Я просто хочу узнать отправную точку для проверки подписи.
Ссылка на файл счета
Я использовал следующий код и получил следующую ошибку.

Не удалось создать описание подписи для предоставленного алгоритма подписи.

private void Validate(string XmlFilePath)
{
//Create [Doc]
#region

var Doc = new XmlDocument();
Doc.PreserveWhitespace = true;
Doc.Load(XmlFilePath);

#endregion

//Create [Namespaces]
#region

var Namespaces = new XmlNamespaceManager(Doc.NameTable);

//IDictionary localNamespaces = null;
var Navigator = Doc.CreateNavigator();
while (Navigator.MoveToFollowing(XPathNodeType.Element))
{
var LocalNamespaces = Navigator.GetNamespacesInScope(XmlNamespaceScope.Local);
foreach (var localNamespace in LocalNamespaces)
{
var Prefix = localNamespace.Key;
if (string.IsNullOrEmpty(Prefix))
{
Prefix = "tst";
}

Namespaces.AddNamespace(Prefix, localNamespace.Value);
}
}

#endregion

//Get [Certificate_Base64]
var Certificate_Base64 = Doc.DocumentElement.SelectSingleNode("ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/ds:Signature/ds:KeyInfo/ds:X509Data/ds:X509Certificate", Namespaces).InnerText;

//Create [Certificate]
var Certificate = new X509Certificate2(Convert.FromBase64String(Certificate_Base64));

var SignedDoc = new SignedXml(Doc);
var Result = SignedDoc.CheckSignature(Certificate, true);
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... n-xml-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»