C#X509 USB证书挂起应用程序

时间:2018-11-23 21:07:52

标签: c# smartcard x509

在尝试使用USB令牌证书后,我的应用程序在退出时挂起的原因。 没有任何try / catch块或其他逻辑,代码为:

X509Store s= new X509Store(StoreName.My, StoreLocation.CurrentUser);
s.Open(OpenFlags.OpenExistingOnly);
X509Certificate2 cert = s.Certificates[0];
s.Close();

RSACryptoServiceProvider rsa = cert.PublicKey.Key as RSACryptoServiceProvider;
byte[] cryptedData = rsa.Encrypt(Encoding.UTF8.GetBytes("test"), true);

rsa = cert.PrivateKey as RSACryptoServiceProvider;
string x = Encoding.UTF8.GetString(rsa.Decrypt(cryptedData, true));

当我在按钮单击事件中运行代码时,系统会提示我输入USB令牌的PIN。在输入并确认PIN后,可以预料到变量x ==“ test”。因此,使用令牌进行加密和解密是可行的。

当我关闭表单时,应用程序将挂起,并且,如果我在VS2017中单击“全部中断”,甚至Visual Studio也将挂起。我的猜测是与usb令牌密码功能有关的某些东西没有发布/关闭。

我尝试过,没有任何运气,

Environment.Exit(0);
cert.Reset();
rsa.Clear();
rsa.Dispose();
cert.Dispose();

有什么想法吗? 谢谢。

0 个答案:

没有答案