在minidriver中,调用CardAcquireContext后,是否可以更改PCARD_DATA中hSCardCtx和hScard的值?

时间:2018-05-28 06:25:47

标签: cryptography smartcard cng

我正在开展与 minidriver 相关的项目,以便在智能卡中执行操作。

我已在注册表中注册智能卡,并提供正确的ATR和微型驱动程序信息。 现在我尝试使用 CNG生成密钥对 - > minidriver - >智能卡

为了达到这个目的,我从测试应用程序中调用了 NcryptOpenStorageProvider ,并返回成功。

现在,当我打电话给 NCryptCreatePersistedKey NCryptFinalizeKey 时,它无法与智能卡通信。

在迷你驱动程序中它会调用" CardAuthenticateEX "并且在 SCardTransmit 中失败,但先前用于查找路径和搜索 CardGetProperty,CardReadFile 等对象的命令可以成功与智能卡通信。

1 个答案:

答案 0 :(得分:0)

是的,hSCardCtxhScardCARD_DATA 字段的值可以在调用 CardAcquireContext 后更改。因此,永远不要存储这些句柄以在后续函数调用中使用它们,而是每个微型驱动程序函数都应从其 PCARD_DATA 参数中检索这些句柄。否则会导致您所描述的问题。