获取存储在Windows Mobile 6上的智能卡上的证书

时间:2014-07-24 17:13:46

标签: c# smartcard windows-mobile-6

我开发了一个用于PDA的Windows Mobile 6应用程序(使用Compact Framework 3.5)。我的PDA有一个智能卡读卡器。插入卡后,我会将所有证书存储在里面。我已经在桌面应用程序中成功完成了这项工作,但是当我在手机上尝试相同的代码时,我找不到证书!所以,我尝试了不同的解决方案,但没有任何作用!

这是我的代码:

X509Store test = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
test.Open(OpenFlags.ReadOnly);

if (test.Certificates.Count > 0)
{
     foreach (X509Certificate2 cert in test.Certificates)
     {
          MessageBox.Show("Certificate: " + cert.ToString());
     }
}

你有个主意吗?

1 个答案:

答案 0 :(得分:0)

你得到例外吗?如果您只看到空存储可能是从智能卡到Windows证书存储区的证书传播问题。

在桌面系统中,有一项服务证书传播(CertPropSvc)

  

将智能卡中的用户证书和根证书复制到   当前用户的证书存储区,检测智能卡的时间   插入智能卡读卡器,如果需要,安装智能卡   卡即插即用迷你驱动程序。

我不知道Windows Mobile 6或任何移动Windows操作系统中是否存在此类服务。

我会想你做研究(我在谷歌的2分钟努力没有带来任何积极的结果)。

或者您可以尝试使用PKCS#11库来访问和使用存储在智能卡上的证书和私钥。 SmartCard供应商经常分发带有智能卡驱动程序的PKCS#11库。

有一些开源.NET项目可以让你与PKCS#11库(通常用C编写)进行通信,就像 PKCS11InteropNCryptoki