pkcs#11 ошибка при расшифровке

Алгоритм следующий:
1. Нахожу на устройстве закрытый ключ CKO_PRIVATE_KEY
2. Инициализирую операцию расшифрования C_DecryptInit, указываю механизм CKM_GOST28147_ECB

Получаю ошибку CKR_KEY_TYPE_INCONSISTENT
Подскажите в чем может быть проблема, уже все перепробовал.

Re: pkcs#11 ошибка при расшифровке

Добрый день.
Для расшифровки по алгоритму ГОСТ 28147-89 необходимы симметричные ключи.
В терминах PKCS#11 они называются SECRET_KEY

Re: pkcs#11 ошибка при расшифровке

А есть где нибудь примеры приближенные к реальной ситуации? В примерах SDK берется сферический ключ и алгоритм и по ним происходит шифрование и расшифровка, так же и с подписью.
В реальной ситуации где брать алгоритм шифровани\подписания? Мое предположение, брать из атрибута CKA_ALLOWED_MECHANISMS, но в моем случае этот атрибут отсутствует(неверно сгенерирован ключ?).

Re: pkcs#11 ошибка при расшифровке

AmDr пишет:

А есть где нибудь примеры приближенные к реальной ситуации? В примерах SDK берется сферический ключ и алгоритм и по ним происходит шифрование и расшифровка, так же и с подписью.
В реальной ситуации где брать алгоритм шифровани\подписания? Мое предположение, брать из атрибута CKA_ALLOWED_MECHANISMS, но в моем случае этот атрибут отсутствует(неверно сгенерирован ключ?).

По факту, вы правы, но ситуацию это не меняет.
Нет никакого 100% способа определения типа ключа по его виду. Для этого в некотором роде существуют сертификаты, а CKA_ALLOWED_MECHANISMS в реальной жизни не работает. Обычно, никто не делает "универсальные" криптосистемы которые могут работать по разным алгоритмам. Обычно система заранее знает что за ключ к ней приходит и реагирует соответстсвующим образом.