使用 CNG 在给定令牌上导入密钥
Import key on a given token with CNG
我最近开始尝试使用 CNG 来管理我们应用程序中的智能卡,但仍有一些问题尚不清楚:
如何将密钥导入 given 智能卡?在我看来,KSP 只是在它看到的第一张卡片上创建密钥。
这是我所做的:
- 2 个智能卡连接到我的机器,来自同一供应商。
- 所述供应商实现了他自己的 KSP,当我使用 NCryptEnumStorageProviders 列出 KSP 时出现。
列出通过提供程序可用的密钥会产生以下输出:
Got key: p11#958fb9080419db6e //属于第一张智能卡
Got key: p11#9eaad58f1c3a73e5 //属于第一张智能卡
Got key: b6b99fb4-01c4-fa18-83db-0e2bb1c80476 //属于第二张智能卡
现在,当我调用 NCryptCreatePersistedKey 时,新密钥已在第二张卡上生成。没有任何弹出窗口询问我要在哪张卡上创建此密钥。
我做错了什么?
非常感谢您的宝贵时间。
尝试在 NCryptCreatePersistedKey 中明确设置智能卡 reader:
NCryptCreatePersistedKey(hProv, phKey, L"alg_id", L"\\.\SmartCard Reader 0\KeyName", 0, 0);
我最近开始尝试使用 CNG 来管理我们应用程序中的智能卡,但仍有一些问题尚不清楚: 如何将密钥导入 given 智能卡?在我看来,KSP 只是在它看到的第一张卡片上创建密钥。
这是我所做的:
- 2 个智能卡连接到我的机器,来自同一供应商。
- 所述供应商实现了他自己的 KSP,当我使用 NCryptEnumStorageProviders 列出 KSP 时出现。
列出通过提供程序可用的密钥会产生以下输出:
Got key: p11#958fb9080419db6e //属于第一张智能卡
Got key: p11#9eaad58f1c3a73e5 //属于第一张智能卡
Got key: b6b99fb4-01c4-fa18-83db-0e2bb1c80476 //属于第二张智能卡
现在,当我调用 NCryptCreatePersistedKey 时,新密钥已在第二张卡上生成。没有任何弹出窗口询问我要在哪张卡上创建此密钥。
我做错了什么?
非常感谢您的宝贵时间。
尝试在 NCryptCreatePersistedKey 中明确设置智能卡 reader:
NCryptCreatePersistedKey(hProv, phKey, L"alg_id", L"\\.\SmartCard Reader 0\KeyName", 0, 0);