【问题标题】:PKCS11 command flowPKCS11 命令流程
【发布时间】:2015-03-17 05:58:11
【问题描述】:

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

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

PKCS11 令牌是否有类似的流程?我查看了各种函数,例如 C_Initialize、C_OpenSession 等,但我不确定它们的作用,也不知道要使用哪些参数。 C 中的一些简单示例展示了应用程序如何访问令牌以验证 PIN,这将非常有帮助。

谢谢!

【问题讨论】:

  • PKCS11 是一个不支持智能卡的接口。智能卡或多或少都因制造商而异,因此必须使用特定的 API 来弥补差距。您当然可以编写自己的 API 或选择一张卡片,其中 API 更小/更好/等等,但根本不可能不需要任何人。

标签: cryptography smartcard pkcs#11


【解决方案1】:

我已经为 .NET 编写了名为 Pkcs11Interop 的 PKCS#11 包装器,它带有涵盖 PKCS#11 API 提供的所有功能的单元测试。你可以看看它的LowLevelAPI tests,它可以很容易地映射到 ANSI C。

您还应该考虑至少阅读PKCS#11 standard 的“Chapter 2 - Scope”、“Chapter 6 - General Overview”和“Chapter 10 - Objects”。

【讨论】:

  • 谢谢!。非常有帮助。 :)
【解决方案2】:

opensc 的 pkcs11-tool 源代码可以作为很好的参考。

https://github.com/OpenSC/OpenSC/blob/master/src/tools/pkcs11-tool.c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    相关资源
    最近更新 更多