PKCS11命令流程

时间:2015-03-17 05:58:12

标签: cryptography smartcard pkcs#11

我正在尝试访问PKCS11加密令牌(智能卡)。我以前使用的智能卡有自己专有的API访问卡,所以我试图了解如何将其映射到PKCS11令牌。

在我以前的智能卡中,我必须连接到设备,然后发出API调用以获取各种功能,例如验证PIN,获取卡信息,选择文件,读取文件,写入文件,执行加密功能(RNG,对称/非对称加密等),最后,我会断开与设备的连接。

PKCS11令牌是否有类似的流程?我查找了各种函数,如C_Initialize,C_OpenSession等,但我不确定它们做了什么,也没有使用什么参数。 C中的一些简单示例显示了应用程序如何访问令牌,例如验证PIN,这将非常有用。

谢谢!

2 个答案:

答案 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