Статус: Новичок
Группы: Участники
Зарегистрирован: 21.07.2022(UTC) Сообщений: 4
|
Здравствуйте. У меня задача подписать XML документ на клиенте с помощью плагина для браузера, затем отправить на сервер в .NET Core Rest API, там валидировать подпись и вытащить данные по владельцу сертификата. Подписывает хорошо. А вот с серверной частью проблемы. Вот тестовый код проверки (в виде консольного приложения) Код:using System;
using System.Security.Cryptography;
using System.Security.Cryptography.Xml;
using System.Windows.Forms;
using System.Xml;
namespace DigitalSignCheck
{
internal class Program
{
[STAThread]
static void Main(string[] args)
{
var openResult = GetFileName();
if (openResult.Item1)
{
var xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(openResult.Item2);
var result = CheckSign(xmlDoc);
Console.WriteLine(result);
}
}
static (bool, string) GetFileName()
{
using (var dialog = new OpenFileDialog())
{
dialog.Title = "Open Excel Document";
dialog.Filter = "XML Document|*.xml";
if (dialog.ShowDialog() == DialogResult.OK)
{
return (true, dialog.FileName);
}
}
return (false, null);
}
static bool CheckSign(XmlDocument xmlDoc)
{
var signedXml = new SignedXml(xmlDoc);
var nodeList = xmlDoc.GetElementsByTagName("Signature", SignedXml.XmlDsigNamespaceUrl);
if (nodeList.Count == 0)
{
throw new CryptographicException("Verification failed: No Signature was found in the document.");
}
signedXml.LoadXml((XmlElement)nodeList[0]);
return signedXml.CheckSignature();
}
}
}
На машине разработчика установлен CryptoPro .NET SDK 1.0.8174.2 и КриптоПро CSP. Если запускать код в проекте .NET Framework 4.8, то подпись валидируется успешно, если под .NET Core 3.1, то валидация проваливается. Данные сертификата читаются нормально в обоих случаях. Правильно ли я понимаю что это из-за отсутствия поддержки .NET Core и в RestAPI проверка тоже работать не будет? Отредактировано пользователем 22 июля 2022 г. 15:03:16(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
Добрый день CryptoPro .NET поддерживает только .NET Framework до версии 4.8 включительно. Работа под .net core не поддерживается. Если есть необходимость работы под core 3.1 надо смотреть в сторону нашего форка. Пример тестового проекта, а также инструкции по сборке есть тут - https://github.com/Crypt.../DotnetCoreSampleProject |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close