Мы используем компонент System.Security.Cryptography.X509Certificates в приложении .Net Core и сталкиваемся с этой ошибкой, пытаясь загрузить закрытый ключ.Единственная функциональность, которая нам нужна для сертификата, - это расшифровка строки и проверка значения NotAfter.Код ошибки:
var cert = new X509Certificate2(privateKeyByteArr);
Исключение:
Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException
HResult=0x80092009
Message=Cannot find the requested object
Source=System.Security.Cryptography.X509Certificates Cannot find the requested object
StackTrace:
at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData)
at Telematics.CommonUtilities.Services.RSACryptoService.DecryptKey(String key, Byte[] privateKeyByteArr) in D:\Users\I25266\Source\Repos\common utils feature b\telematics.commonutilities\Telematics.CommonUtilities\Services\RSACryptoService.cs:line 383
Тот же подход отлично работает с открытым ключом, и этот же закрытый ключ может быть успешно использован сBouncyCastle.Я также пытался X509Certificate2Collection Import () метод - та же ошибка.Несмотря на то, что у нас есть обходной путь, я бы хотел использовать нативные компоненты .Net.
Любое предложение или объяснение будет очень приветствоваться.