Это может произойти каждый раз, когда вы получаете доступ к неинициализированным полям в криптографии.
В вашем коде, если Request.ClientCertificate
возвращает объект без необработанных данных сертификата, вы увидите ошибку при вызове card.GetRawCertData()
в четвертой строке.
В качестве простого теста попробуйте следующее:
var cert = new System.Security.Cryptography.X509Certificates.X509Certificate2();
Console.WriteLine(cert.Thumbprint);
Это вызовет следующее исключение, потому что нет доступного отпечатка:
m_safeCertContext is an invalid handle.
с заданной трассировкой стека:
at System.Security.Cryptography.X509Certificates.X509Certificate.ThrowIfContextInvalid()
at System.Security.Cryptography.X509Certificates.X509Certificate.SetThumbprint()
at System.Security.Cryptography.X509Certificates.X509Certificate.GetCertHashString()
at System.Security.Cryptography.X509Certificates.X509Certificate2.get_Thumbprint()
at MyEncryptionUtility.EncryptionUtilityForm.button1_Click(Object sender, EventArgs e) in C:\MyEncryptionUtility\EncryptionUtilityForm.cs:line 2864