CryptoPro / corefx

This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others. We welcome contributions.
https://github.com/dotnet/core
MIT License
27 stars 7 forks source link

[Вопрос] .NET Core 3.1 will reach End of Support on December 13, 2022 #62

Closed k0st1x closed 1 year ago

k0st1x commented 1 year ago

Доброго времени суток. Данный проект основан на netcore3.1, который microsoft планирует остановить в поддержке. Запланированы ли какие-либо изменения в проекте CryptoPro corefx, чтобы оставаться защищенным с точки зрения безопасности?

Fasjeit commented 1 year ago

Добрый день.

Если будет что то критичное для работы криптографии и что сможем самостоятельно исправить - будем исправлять по мере нахождения/надобности.

В ближайшее время (вот уже почти) выпустим демку проекта для .net 6.0, на который перейдёт основная разработка/поддержка.

Fasjeit commented 1 year ago

Появилась пре-релизная демка для dotnet 6 https://github.com/CryptoPro/libcore

k0st1x commented 1 year ago

У меня не получилось на net6 запустить "тестовое" приложение. Получаю исключение 'Unable to find an entry point named 'CertAddCertificateLinkToStore' in shared library 'libcapi20'

Exception has occurred: CLR/System.EntryPointNotFoundException
An unhandled exception of type 'System.EntryPointNotFoundException' occurred in LibCore.Security.Cryptography.X509Certificates.dll: 'Unable to find an entry point named 'CertAddCertificateLinkToStore' in shared library 'libcapi20'.'
   at Interop.crypt32.CertAddCertificateLinkToStore(SafeCertStoreHandle hCertStore, SafeCertContextHandle pCertContext, CertStoreAddDisposition dwAddDisposition, IntPtr ppStoreContext)
   at LibCore.Internal.Cryptography.Pal.StorePal.LinkFromCertificateCollection(X509Certificate2Collection certificates)
   at LibCore.Internal.Cryptography.Pal.FindPal..ctor(X509Certificate2Collection findFrom, X509Certificate2Collection copyTo, Boolean validOnly)
   at LibCore.Internal.Cryptography.Pal.FindPal.OpenPal(X509Certificate2Collection findFrom, X509Certificate2Collection copyTo, Boolean validOnly)
   at LibCore.Internal.Cryptography.Pal.FindPal.FindFromCollection(X509Certificate2Collection coll, X509FindType findType, Object
...

Я делал следующие шаги создавал локально сертификат с помощью

cryptcp -creatcert -provtype 81 -provname 'Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP' ......

код загрузки сертификата

LibCore.Initializer.Initialize(LibCore.Initializer.DetouredAssembly.All);
using (var store = new CpX509Store(StoreName.My, StoreLocation.CurrentUser))
{
    store.Open(OpenFlags.ReadOnly);
    X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByThumbprint, "...", false);
}

файл проекта зависит только от пакета libcore

PackageReference Include="LibCore.Linux" Version="2023.1.11.1"

и я проверил, в Debian стоит пакет "libcapi20-dev", хотя в исключении написано "entry point named 'CertAddCertificateLinkToStore' in shared library 'libcapi20'"/

@Fasjeit, пожалуйста, направьте меня, как сделать так, чтобы в dotnet проекте поднять сертификат?

Fasjeit commented 1 year ago

Вопросы по LibCore лучше задавать в его репозитории.

Для начала убедиться, что стоит последняя версия csp (старше 5.0.12515, желательно последний доступный релиз). В ранних версиях csp могут не присутствовать необходимые методы.

k0st1x commented 1 year ago

@Fasjeit спасибо, хорошо upd: проверил на версии 5.0.12600, действительно, проблема ушла.