Проблемы с SignedXML.CheckSignature() при использовании сторонней подписи в C#

У меня есть приложение aC#, которое я использую для обработки зашифрованного и подписанного XML-файла от третьего лица. Файл, который я создаю и подписываю внутри приложения с использованием действующего сертификата, проходит проверку без проблем. У меня проблемы с проверкой файлов, полученных от третьих лиц. (который является авторитетным источником, поэтому я исключаю проблемы с их стороны)

Файл успешно расшифрован, но проверка подписи всегда возвращает false. Я попытался снять их подпись и подписать файл сам - я создал то же самое и, кроме различий в двоичных полях (как и следовало ожидать, используя разные сертификаты), структуры файлов идентичны

Я загружаю файл.pem в объект X509Certificate2 и пытаюсь проверить полученный файл. В нем есть все необходимые элементы, но проверка всегда завершается неудачно без указания причины.

Есть ли что-нибудь еще, что мне нужно сделать? Любой хороший ресурс, чтобы понять, что делает CheckSignature()?

Код проверки подписи (работает с самозаверяющими файлами)

public static bool VerifySignedXml(string signedXmlPath, X509Certificate2 theirPublicKey)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(signedXmlPath);

        XmlElement signature = (XmlElement)doc.GetElementsByTagName("Signature")[0];

        SignedXml sig = new SignedXml(doc);
        sig.LoadXml(signature);

        bool bVerified = sig.CheckSignature(theirPublicKey , false);

        return bVerified;
    }

Спасибо

0 ответов

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