Исключение CKR_FUNCTION_NOT_SUPPORTED, взаимодействие PKCS11 с OpenSC

Я пытаюсь использовать библиотеку PKCS11Interop с последней версией (0.16) OpenSC (opensc-pkcs11.dll). Я пробовал USB-токены от трех поставщиков: Yubico 4, NitroKey Pro/Start, Fetian ePass2003, но не смог использовать большинство функций библиотеки PKCS11Interop. Я получаю 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 работают нормально.

Я потратил много времени, пытаясь найти решение здесь. Был бы признателен, если бы кто-нибудь мог помочь в этом.


person Kamran Khan    schedule 04.06.2017    source источник


Ответы (2)


Net.Pkcs11Interop.Common.Pkcs11Exception всегда указывает на ошибку, возвращаемую базовой неуправляемой библиотекой PKCS#11, которая обычно предоставляется поставщиком устройства.

Ошибка, которую вы получаете — CKR_FUNCTION_NOT_SUPPORTED — указывает на то, что неуправляемая библиотека PKCS#11 не поддерживает/не реализует определенную функцию, определенную в спецификации PKCS#11.

исходный код OpenSC подтверждает вы обнаружили, что он не поддерживает C_SignRecoverInit, а также несколько других функций.

Кстати, это нормальное и довольно распространенное поведение. Вы вряд ли найдете библиотеку PKCS#11, которая поддерживает все функции PKCS#11. Если библиотека PKCS#11, предоставляемая OpenSC, не предоставляет какой-либо функции, которая вам действительно нужна, я предлагаю вам проверить другие решения, предоставляемые коммерческими поставщиками.

person jariq    schedule 05.06.2017

C_SignRecoverInit функции не реализованы в большинстве драйверов OpenSC. Другие функции должны быть в порядке, а если нет, прочитайте, что делать и как сообщать об ошибках в Вики OpenSC.

person Jakuje    schedule 05.06.2017