我正在做一些智能卡编程,并希望考虑以下情况:
来自卡的证书未导入本地 商店(这不是给定的,它是当前问题的根源)
未提供提供商的名称
第二个标准意味着我不能依赖于通过创建RSACryptoServiceProvider的实例来获取证书,如下所示:
CspParameters cspParameters = new CspParameters(1, "provider name");
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspParameters);
因此,除了从HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Cryptography \ Defaults \ Provider或HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ Cryptography \ Defaults \ Provider中读取注册表中所有提供程序的名称,然后创建RSACryptoServiceProvider实例从每个容器中查看容器是否将自己标识为硬件设备,似乎有一种更简单的方法直接从读卡器访问证书。
我已经看过使用P / Invoke和API,但无法确定我可以使用哪些API调用。