Closed k0st1x closed 1 year ago
Добрый день.
Если будет что то критичное для работы криптографии и что сможем самостоятельно исправить - будем исправлять по мере нахождения/надобности.
В ближайшее время (вот уже почти) выпустим демку проекта для .net 6.0, на который перейдёт основная разработка/поддержка.
Появилась пре-релизная демка для dotnet 6 https://github.com/CryptoPro/libcore
У меня не получилось на 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 проекте поднять сертификат?
Вопросы по LibCore лучше задавать в его репозитории.
Для начала убедиться, что стоит последняя версия csp (старше 5.0.12515, желательно последний доступный релиз). В ранних версиях csp могут не присутствовать необходимые методы.
@Fasjeit спасибо, хорошо upd: проверил на версии 5.0.12600, действительно, проблема ушла.
Доброго времени суток. Данный проект основан на netcore3.1, который microsoft планирует остановить в поддержке. Запланированы ли какие-либо изменения в проекте CryptoPro corefx, чтобы оставаться защищенным с точки зрения безопасности?