1

我正在尝试将 PKCS11Interop 库与最新版本(0.16)的 OpenSC(opensc-pkcs11.dll)一起使用。我尝试过来自 Yubico 4、NitroKey Pro/Start、Fetian ePass2003 三个供应商的 USB 令牌,但无法使用 PKCS11Interop 库中的大部分功能。对于库提供的大多数函数,我收到Net.Pkcs11Interop.Common.Pkcs11Exception: 'Method C_SignRecoverInit returned CKR_FUNCTION_NOT_SUPPORTED'。抛出此异常的函数是 C_GetOperationState、C_SetOperationState、C_GenerateKey、C_GenerateKeyPair、加密/解密函数、签名/验证函数等。

奇怪的是,GetSlotInfo、GetMechanisms、Login、Session 等功能运行良好。

我花了很多时间试图在这里找到解决方案。如果有人可以提供帮助,将不胜感激。

4

2 回答 2

1

Net.Pkcs11Interop.Common.Pkcs11Exception始终指示由设备供应商提供的底层非托管 PKCS#11 库返回的错误。

您收到的错误 - CKR_FUNCTION_NOT_SUPPORTED- 表示非托管 PKCS#11 库不支持/实现 PKCS#11 规范中定义的特定功能。

OpenSC 源代码证实了您的发现,它不支持C_SignRecoverInit以及其他一些功能。

顺便说一句,这是正常且非常常见的行为。您几乎找不到支持所有 PKCS#11 功能的 PKCS#11 库。如果 OpenSC 提供的 PKCS#11 库没有提供您真正需要的某些功能,那么我建议您查看商业供应商提供的其他解决方案。

于 2017-06-05T10:37:21.323 回答
0

C_SignRecoverInitOpenSC 中的大多数驱动程序都没有实现这些功能。其他功能应该没问题,如果没有,请阅读OpenSC wiki中的做什么以及如何报告错误。

于 2017-06-05T08:28:53.810 回答