Comments 14
Спасибо за статью, еще добавлю: от криптопро потихоньку готовится библиотека https://github.com/CryptoPro/libcore, я его пробовал, работает вполне, но пока не все возможности имеются (см. readme)
Посмотрел, интересно. CryptoPro, как всегда, в своём репертуаре: выложили проект на GitHub, но исходники закрыли. Возможно, кому-то и в таком виде пригодится.
Они .NET Core 3.1 форкнули полностью, поэтому можно использовать патченный dotnet (заменить крипто сборки по факту) и все будет работать. Мы крутим в докере патченный дотнет + официальный КриптоПро CSP, устраивает. Вот тут можно глянуть их примеры.
Автор молодец, хардово. Но .NET уже давно не про Windows, к счастью, для всех, но, к сожалению, для данной статьи.
Fork .NET Core 3.1 у нас полностью открыт (https://github.com/CryptoPro/corefx). За всё время существования проекта -- ни одного merge request от сторонних разработчиков.
Учитывая всякое импортозамещение, кроссплатформенный вариант был бы актуален.
А мы решили оставить на net framework grpc сервис, который только принимает в себя сырой XML и отдает обратно подписанный, который и отправляется дальше, доставило в разы меньше боли :)
Я бы не сказал, что раньше было лучше. CryptoPro NET, емнип, патчил сборки фреймворка в gac. И если через Windows update прилетало обновление фреймворка, то неожиданно всё отваливалось
Использовать такой кастомный .NET с пропатченными сборками, по мне, можно только совсем от безнадёги. В обычном .NetFX почти вся криптография замыкалась на нативный CryptoAPI, с котором проблем я не припомню. Всё что мне лично было нужно, работало "из коробки".
Там проблемы были (и до сих пор есть) при проверке подписи XML. Потому что реализации алгоритмов выбираются не из реестра, а захардкожены в одном из методов оператором select.
Именно поэтому им понадобилось патчить сборки в GAC, и делать форк на который дали ссылку выше.
А, ну вы как раз один из подобных багов и нашли, и даже про него написали...
интересно как с этим в Java
3 года назад портировал из библиотека bouncy castle java в ту же либу в net изменения для подписи по госту: все что нужно там было. В java версии не проверял, net версия заработала как ожидалось в linux в докере. Только сертификаты и ключ нужно из контейнера доставать вручную: поддержки контейнера криптопро в версии для net не было.
.NET 7 против российской криптографии