我正在尝试将PKCS11Interop库与OpenSC (opensc-pkcs11.dll)的最新版本(0.16)一起使用。我尝试过来自三个厂商的USB令牌,它们是Yubico 4,NitroKey Pro/Start,Fetian ePass2003,但是无法使用PKCS11Interop库中的大部分功能。我收到Net.Pkcs11Interop.Common.Pkcs11Exception:'Method C_SignRecoverInit为库提供的大多数函数返回CKR_FUNCTION_NOT_SUPPORTED'。抛出此异常的函数有C_GetOperationState、C_SetOperationState、C_GenerateKey、C_GenerateKeyPair、加密/解密函数、签名/验证函数等。
奇怪的是,像GetSlotInfo、GetMechanisms、Login、Session这样的函数工作得很好。
我花了很多时间试图在这里找到解决办法。如果有人能帮忙的话会很感激的。
发布于 2017-06-05 10:37:21
Net.Pkcs11Interop.Common.Pkcs11Exception总是指示底层非托管PKCS#11库返回的错误,该库通常由设备供应商提供。
您正在接收的错误- CKR_FUNCTION_NOT_SUPPORTED -表示非托管PKCS#11库不支持/实现PKCS#11规范中定义的特定函数。
OpenSC源代码证实了您的发现,即它不支持C_SignRecoverInit和其他一些函数。
顺便说一句,这是正常的,也是相当常见的行为。您很难找到支持所有PKCS#11函数的PKCS#11库。如果由PKCS#11提供的OpenSC库没有提供您真正需要的一些功能,那么我建议您检查商业供应商提供的其他解决方案。
发布于 2017-06-05 08:28:53
C_SignRecoverInit函数在OpenSC中的大多数驱动程序中没有实现。其他函数应该是很好的,如果不是,请阅读该做什么,以及如何报告OpenSC维基中的bug。
https://stackoverflow.com/questions/44359815
复制相似问题