我正在尝试访问 PKCS11 加密 token (智能卡)。我之前使用的智能卡有自己的专有 API 用于卡访问,因此我试图了解如何将其映射到 PKCS11 token 。
在我以前的智能卡中,我必须连接到设备,然后发出各种功能的 API 调用,例如验证 PIN、获取卡信息、选择文件、读取文件、写入文件、执行加密功能(RNG、对称/非对称加密等),最后,我会断开与设备的连接。
PKCS11 代币是否有类似的流程?我查找了各种函数,例如 C_Initialize、C_OpenSession 等,但我不太确定它们的作用,也不知道要使用哪些参数。 C 语言中的一些简单示例展示了应用程序如何访问 token 以验证 PIN,这将非常有帮助。
谢谢!
最佳答案
我已经为 .NET 编写了 PKCS#11 包装器,名为 Pkcs11Interop它附带了涵盖 PKCS#11 API 提供的所有功能的单元测试。你可以看一下它的LowLevelAPI tests可以轻松映射到 ANSI C。
您还应该考虑至少阅读 PKCS#11 standard 的“第 2 章 - 范围”、“第 6 章 - 概述”和“第 10 章 - 对象” .
关于cryptography - PKCS11 命令流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29092252/