我开发了一个用于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());
}
}
你有个主意吗?
答案 0 :(得分:0)
你得到例外吗?如果您只看到空存储可能是从智能卡到Windows证书存储区的证书传播问题。
在桌面系统中,有一项服务证书传播(CertPropSvc)
将智能卡中的用户证书和根证书复制到 当前用户的证书存储区,检测智能卡的时间 插入智能卡读卡器,如果需要,安装智能卡 卡即插即用迷你驱动程序。
我不知道Windows Mobile 6或任何移动Windows操作系统中是否存在此类服务。
我会想你做研究(我在谷歌的2分钟努力没有带来任何积极的结果)。
或者您可以尝试使用PKCS#11库来访问和使用存储在智能卡上的证书和私钥。 SmartCard供应商经常分发带有智能卡驱动程序的PKCS#11库。
有一些开源.NET项目可以让你与PKCS#11库(通常用C编写)进行通信,就像 PKCS11Interop或NCryptoki。