异常“CKR_FUNCTION_NOT_SUPPORTED”,与OpenSC的PKCS11Interop

时间:2017-06-04 23:28:24

标签: pkcs#11 opensc pkcs11interop

我正在尝试使用最新版本(0.16)的OpenSC(opensc-pkcs11.dll)的PKCS11Interop库。我尝试过来自三家供应商的USB令牌,这些供应商是Yubico 4,NitroKey Pro / Start,Fetian ePass2003,但无法使用PKCS11Interop Library的大部分功能。我收到了 Net.Pkcs11Interop.Common.Pkcs11Exception:'方法C_SignRecoverInit返回了CKR_FUNCTION_NOT_SUPPORTED',用于库提供的大多数功能。抛出此异常的函数是C_GetOperationState,C_SetOperationState,C_GenerateKey,C_GenerateKeyPair,Encrypt / Decrypt函数,Sign / Verify函数等。

奇怪的是像GetSlotInfo,GetMechanisms,Login,Session这样的函数工作正常。

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

2 个答案:

答案 0 :(得分:0)

OpenSC中的大多数驱动程序中未实现

C_SignRecoverInit个函数。其他功能应该没问题,如果没有,请阅读如何做以及如何报告OpenSC wiki中的错误。

答案 1 :(得分:0)

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

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

OpenSC source code确认您发现它不支持C_SignRecoverInit以及其他一些功能。

BTW这是正常且非常常见的行为。您很难找到支持所有PKCS#11功能的PKCS#11库。如果OpenSC提供的PKCS#11库没有提供您真正需要的功能,那么我建议您查看商业供应商提供的其他解决方案。