UPDATE:
При проверке подписи ошибка 0х30 hardware_error появляется при вызове функции C_CreateObject, когда я записываю в токен открытый ключ подписавшего. это паблик кей из пары по ГОСТ-3410-2001.
Вызов функции C_CreateObject для создания ключа по ГОСТ-28147_89 для процесса шифрования работает без нареканий.
На флешках Рутокен ЭЦП версии 1 всё работает.
В чём может быть проблемма?
Вот кусок кода, где возникает ошибка на Рутокен ЭЦП 2.0
CK_ATTRIBUTE[] signerKeyAttr = (CK_ATTRIBUTE[]) (new CK_ATTRIBUTE()).toArray(9);
signerKeyAttr[0].set(Pkcs11Constants.CKA_CLASS,Pkcs11Constants.CKO_PUBLIC_KEY);
signerKeyAttr[1].set(Pkcs11Constants.CKA_LABEL,"signer public key");
signerKeyAttr[2].set(Pkcs11Constants.CKA_KEY_TYPE,RtPkcs11Constants.CKK_GOSTR3410);
signerKeyAttr[3].set(Pkcs11Constants.CKA_TOKEN,true);
signerKeyAttr[4].set(Pkcs11Constants.CKA_MODIFIABLE,true);
signerKeyAttr[5].set(Pkcs11Constants.CKA_PRIVATE, false);
signerKeyAttr[6].set(Pkcs11Constants.CKA_VALUE,params[0].pubkeydata);
signerKeyAttr[7].set(Pkcs11Constants.CKA_VERIFY,true);
signerKeyAttr[8].set(RtPkcs11Constants.CKA_GOSTR3410_PARAMS, RtPkcs11Constants.GOST3410_PARAMS_OID);
//LogF("pubkey len:"+params[0].pubkeydata.length);
int rv = Pkcs11Constants.CKR_OK;
try {
rv = RtPkcs11Library.getInstance().C_CreateObject(
selectedToken.hSession,
signerKeyAttr,
signerKeyAttr.length,
hSignerKey);
} catch (Exception e) {
LogF(e.getMessage());
}