使用CNG导入给定令牌上的密钥

时间:2018-08-21 16:05:39

标签: smartcard cng

我最近开始摆弄CNG来管理我们应用程序中的智能卡,但仍然有一些不清楚的地方: 如何将密钥导入给定智能卡?在我看来,KSP只是在它看到的第一张卡上创建密钥。

这就是我所做的:

  • 2个智能卡已从同一供应商连接到我的计算机。
  • 所说的供应商实施了自己的KSP,当我用NCryptEnumStorageProviders列出KSP时出现。
  • 列出通过提供程序可用的密钥会产生以下输出:

    Got key:p11#958fb9080419db6e //属于第一个智能卡
    获得密钥:p11#9eaad58f1c3a73e5 //属于第一张智能卡
    获得密钥:b6b99fb4-01c4-fa18-83db-0e2bb1c80476 //属于第二个智能卡

现在,当我调用NCryptCreatePersistedKey时,新密钥在第二张卡上生成。没有弹出窗口询问我要在哪个卡上创建此密钥。

我做错了什么?

非常感谢您的时间。

1 个答案:

答案 0 :(得分:0)

尝试在NCryptCreatePersistedKey中明确设置智能卡阅读器:

NCryptCreatePersistedKey(hProv, phKey, L"alg_id", L"\\\\.\\SmartCard Reader 0\\KeyName", 0, 0);