我正在尝试编译一个示例 c 应用程序,该应用程序使用 pkcs#11 来查找所有 token 上的私钥,并打印其标签和 ID,但出现以下错误
/tmp/ccAqQ7UI.o: In function initialize':
pkcs11_example1.c:(.text+0x8e5): undefined reference to C_Initialize'
/tmp/ccAqQ7UI.o: In function `get_slot':
示例取自here
使用以下命令进行编译;
`gcc pkcs11_example1.c -o slots -L /usr/lib/opensc-pkcs11.so`
我不确定应该在 -L 之后链接哪个库。 任何人都可以指导如何编译它以及是否需要链接一些库。
最佳答案
C_Initialize 和其他带有“C_”前缀的 60 多个函数是 PKCS#11 specification 中定义的 cryptoki 函数。 。它们通常在 HSM 供应商提供的独立库中实现。查看您的代码示例,我想说您还需要直接链接 PKCS#11 库,或者您可以修改代码以在运行时使用 LoadLibrary 动态加载 PKCS#11 库。或dlopen然后通过 C_GetFunctionList 调用获取指向所有 cryptoki 函数的指针。您还可以查看pkcs11-logger the source code有关如何执行此操作的示例。
关于c - 无法编译读取智能卡的 C 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24133704/