我正在尝试访问PKCS11加密令牌(智能卡)。我以前使用的智能卡有自己专有的API访问卡,所以我试图了解如何将其映射到PKCS11令牌。
在我以前的智能卡中,我必须连接到设备,然后发出API调用以获取各种功能,例如验证PIN,获取卡信息,选择文件,读取文件,写入文件,执行加密功能(RNG,对称/非对称加密等),最后,我会断开与设备的连接。
PKCS11令牌是否有类似的流程?我查找了各种函数,如C_Initialize,C_OpenSession等,但我不确定它们做了什么,也没有使用什么参数。 C中的一些简单示例显示了应用程序如何访问令牌,例如验证PIN,这将非常有用。
谢谢!
答案 0 :(得分:1)
我已经为.NET编写了名为Pkcs11Interop的PKCS#11包装器,其中包含了涵盖PKCS#11 API提供的所有功能的单元测试。您可以查看其LowLevelAPI tests,它可以轻松映射到ANSI C.
您还应该考虑至少阅读"第2章 - 范围","第6章 - 概述"和"第10章 - 对象" PKCS#11 standard。
答案 1 :(得分:1)
来自opensc的pkcs11工具源可以作为一个很好的参考。
https://github.com/OpenSC/OpenSC/blob/master/src/tools/pkcs11-tool.c