Комментарии 8
Все круто. И ладно бы unsafe. Но это чисто моя unsafe-фобия. Но вот WinAPI... Да для NET 7, который как раз то и про кросплатформенность... Уже на linux'е, на серверной стороне работать не будет...
Я бы посмотрел на то же самое, сделанное с помощью BouncyCastle...
Есть и под них код в загашнике, правда тоже для .NET, не для Java. С BC проблема другая, там вся крипта реализована в самой либе на C#. Соответственно, нет возможности работать с аппаратными носителями, контейнерами КриптоПРО и прочими штуками, обязательными по нашему законодательству.
Да, был опыт переконвертации экспортируемых ключевых контейнеров КриптоПРО в PFX, понимаемый OpenSSL и BC, но это слишком специфические задачи. Первый же неэкспортируемый ключевой контейнер ставит крест на этой либе. Возможно, я ошибаюсь и что-то уже поменялось, но лет пять назад вариантов не было.
Тем не менее, работа с российской криптографией в BouncyCastle.NET это всё равно интересно, пишите =)
Когда делал крипту для маркировки в 2020 в bc java уже была поддержка всех необходимых форматов ключей и подписей. Портанул недостающие куски для net, нужно было понять архитектуру либы в java и net, они разные. Из криптоконтейнера формата крипто про удалось достать отдельно ключ и подписи с помощью проги, которая легко гуглится. Решение работает в кубере линуксовом с тех времен. Скорее всего поизучав еще можно самому криптоконтейнер научиться подгружать формата крипто про. После через пару месяцев видел много нугетов для BC с гост в названии.
Из криптоконтейнера формата крипто про удалось достать отдельно ключ и подписи с помощью проги, которая легко гуглится
Речь про P12FromGostCSP? Она работает только если на контейнере стоит признак "экспортируемый". Если ключ помечен как неэкспортируемый, то это уже проблема (пробегали решения в виде чтения файлов ключа через доступ к файловой системе токена через PKCS#11 с последующим дешифрованием контейнера уже в памяти ПК). А если ещё и лежит на нормальном носителе, типа Рутокен ЭЦП (не lite), а это, на секунду, все ключи руководителей юрлиц, выдаваемые налоговой, то ничем их оттуда не извлечь.
В самой либе BC для .NET поддержку подписи по ГОСТ Р 34.10-2012 довели до ума только осенью 2022, когда она стала нормально работать с CMS (до этого были кастомные форки, сам такой делал, благо, это уже не нужно).
Увы, у меня не было подобных задач под Linux. А под Windows сталкиваюсь с ними не так уж и редко. Поэтому не заморачиваюсь на тему кроссплатформенности.
.NET 7 против российской криптографии. Часть 2. Штампы времени