AlexMAS / GostCryptography

.NET driver for ViPNet CSP and CryptoPro CSP
MIT License
128 stars 41 forks source link

Верификация подписи ГОСТ Р 34.10-2012, 256 бит. #43

Closed andrey170183 closed 2 years ago

andrey170183 commented 2 years ago

Делаю верификацию ЭП — отсоединенную, в формате PKCS#7 по значению хэш-функции

Есть сигнатура отсоединенной подписи и сообщение которую хочу проверить. При проверке на сайте госуслуг проверка проходит успешно.

Код взял из примера

byte[] signature_byte = System.Convert.FromBase64String("MIIcrwYJKoZIhvcNAQc...."); byte[] message = Encoding.UTF8.GetBytes("Hello world");

var signedCms = new GostSignedCms(new ContentInfo(message), true); signedCms.Decode(signature_byte);

try { // Проверка подписи CMS/PKCS#7 signedCms.CheckSignature(true); } catch (Exception exc) { }

При выполнении кода вылетает ошибка с текстом: {"Unknown algorithm '1.2.643.7.1.1.1.1'."} Тестил на компьютерах: С установленной VipNet CSP (4.2.11.58753) и КриптоПро CSP (4.0.9944), так же откомпилированную версию на компьютере только с КриптоПро CSP версии 4.0.9963 (Установлен КриптоПро.NET Сервер версия 1.0.7775.0, КриптоПро.NET SDK версия 1.0.7775.0) Выходит аналогичная ошибка.

Подскажите в чем может быть проблема?

AlexMAS commented 2 years ago

Здравствуйте. А какая версия .NET?

andrey170183 commented 2 years ago

Делаю на .NET Core 3.1 Кажется проблема в подключении библиотеки из NuGet. GostCryptography подключается с предупреждением: Пакет "GostCryptography 2.0.9" был восстановлен с помощью ".NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8", а не целевой платформы проекта ".NETCoreApp,Version=v3.1". Этот пакет может быть не полностью совместим с вашим проектом.

AlexMAS commented 2 years ago

Да, так и подумал. Последняя доступная на NuGet версия не поддерживает новые версии .NET (имеется ввиду .NET Core, .NET 5+), т.к. в них существенно переработана/переписана функциональность из System.Cryptography. Переход на .NET 5+ будет со следующей версии библиотеки - 3.0 - сейчас я над этим работаю. Задачу закрываю - уже есть похожая.