AlexMAS / GostCryptography

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

Реализация под Net 5 #40

Open AlexAlexKud opened 2 years ago

AlexAlexKud commented 2 years ago

Хотим переехать на новую платформу, а не можем из-за отсутствия GostCryptography... Очень прошу рассмотреть возможность портировать библиотеку под Net 5. или .Net Core

AlexMAS commented 2 years ago

Здравствуйте. Вопрос в проработке, надеюсь, что все получится :)

sa13m commented 2 years ago

Есть продвижения в данном вопроса? Может сделаете нам подарок к новому году?)

AlexMAS commented 2 years ago

Да, стараюсь :) Многие вещи получилось сделать, некоторые идут совсем с трудом, но думаю, что все получится. Все никак не могу урвать время, чтобы оформить существующие наработки.

DmitryKrakhmalev commented 2 years ago

Добрый день. Тоже столкнулся с ошибкой "Unknown algorithm '1.2.643.7.1.1.1.1". В проекте используется .Net 5.0. Я так понял вы как раз и занимаетесь этой проблемой в новом обновлении под .Net 5.0? Я не очень хорошо разбираюсь в работе с ЭЦП. Передо мной стоит задача валидации подписанных данных (хэш полей карточки документа). Данные подписываются с клиентской стороны с использованием crypto pro. Я так понимаю что у меня не получится проверить подпись пока не выйдет обновление?

AlexMAS commented 2 years ago

С появлением .NET Core реализация базовых абстракций для работы с криптографией существенно изменилась. Разработчикам .NET нужно было обеспечить работу криптографии на многих платформах (не только Windows). Они отказались от жесткой привязки к Crypto API, беря большую часть работы на себя. При этом для .NET разработчиков ничего не изменилось, поменялись только внутренности. При этом с точки зрения объема и формы предоставляемой функциональности для работы с криптографией ничего не изменилось. Но в этом и суть основной проблемы для данной библиотеки.

Механизмы криптографии в .NET не позволяют (до сих пор) делать какое-либо функциональное расширение. Например, добавить поддержку криптографии по ГОСТ. В связи с этим реализация библиотеки достаточно сильно завязана на внутреннее устройство самого .NET. И это является основной причиной "тормоза" в переходе на новые версии платформы. Просто так взять исходники, собрать и запустить их под .NET 5+ не получится по указанным причинам. Сборка может и пройдет, но ничего не заработает. Сейчас, да, я худо-бедно стараюсь перевести существующую кодовую базу на .NET 5+.

Пока я могу предложить вам такие варианты на выбор:

Проверку подписи реализовать в рамках отдельной службы или утилиты и обращаться к ним из своего основного приложения (работающего на .NET 5). После выхода обновления вы сможете сделать проверку in-process.

Bykiev commented 2 years ago

С появлением .NET Core реализация базовых абстракций для работы с криптографией существенно изменилась. Разработчикам .NET нужно было обеспечить работу криптографии на многих платформах (не только Windows). Они отказались от жесткой привязки к Crypto API, беря большую часть работы на себя. При этом для .NET разработчиков ничего не изменилось, поменялись только внутренности. При этом с точки зрения объема и формы предоставляемой функциональности для работы с криптографией ничего не изменилось. Но в этом и суть основной проблемы для данной библиотеки.

Механизмы криптографии в .NET не позволяют (до сих пор) делать какое-либо функциональное расширение. Например, добавить поддержку криптографии по ГОСТ. В связи с этим реализация библиотеки достаточно сильно завязана на внутреннее устройство самого .NET. И это является основной причиной "тормоза" в переходе на новые версии платформы. Просто так взять исходники, собрать и запустить их под .NET 5+ не получится по указанным причинам. Сборка может и пройдет, но ничего не заработает. Сейчас, да, я худо-бедно стараюсь перевести существующую кодовую базу на .NET 5+.

Пока я могу предложить вам такие варианты на выбор:

  • Сделать отдельный микросервис на базе .NET Framework 4.8
  • Сделать отдельную консольную утилиту .NET Framework 4.8

Проверку подписи реализовать в рамках отдельной службы или утилиты и обращаться к ним из своего основного приложения (работающего на .NET 5). После выхода обновления вы сможете сделать проверку in-process.

Александр, правильно ли я понимаю, что на текущее время единственный вариант встраивания ГОСТ под Linux в .NET 5+ - это форк CoreFX и реализация алгоритмов в нем, как сделали CryptoPro?

Bykiev commented 1 year ago

@AlexMAS, здравствуйте! Не могли бы вы использовать для реализации на .NET 6 библиотеку OpenGOST?