我为PDA开发了一个Windows Mobile6应用程序(使用Compact Framework3.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());
}
}你有主意了吗?
发布于 2014-07-25 20:32:53
你会得到异常吗?如果只看到空的存储区,可能是智能卡到windows证书存储区的证书传播有问题。
在桌面windows系统中,有一个证书传播 (CertPropSvc)服务,该服务
将用户证书和根证书从智能卡复制到当前用户的证书存储中,检测智能卡何时插入智能卡读卡器,并在需要时安装智能卡即插即用微型驱动程序。
我不知道Windows Mobile6或任何移动windows操作系统中是否存在这样的服务。
我建议你进行研究(我在google上花了2分钟的努力没有带来任何积极的结果)。
或者,您可以尝试使用PKCS#11库来访问和使用存储在智能卡上的证书和私钥。smartcard供应商通常分发带有智能卡驱动程序的PKCS#11库。
有一些开放源码的.NET项目可以让您与PKCS#11库(通常是用C编写的)进行通信,比如PKCS11Interop或NCryptoki。
https://stackoverflow.com/questions/24939997
复制相似问题