Создание неизвлекаемых ключей через PKCS#11
Модель "Rutoken ECP"
Hardware version v20.4
Firnware version v18.11
SDK version 280619
Система Windos 10 Pro x64
Приложение для x64/debug из-под VC 2017
Открыл сессию hSession, успешно залогинился.
  /* Набор параметров КриптоПро A алгоритма ГОСТ Р 34.10-2001 */
  CK_BYTE         paramsGostR3410[] = { 0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x23, 0x01 };
  static CK_UTF8CHAR publicKeyLabelGost2012_256_1[] = "test1";
  static CK_UTF8CHAR privateKeyLabelGost2012_256_1[] = "test2";
  static CK_BYTE     testName[] = "test3";
  CK_MECHANISM          genKeyMechanism = { CKM_GOSTR3410_KEY_PAIR_GEN, NULL_PTR, 0 };
  CK_OBJECT_CLASS       ocPrivKey       = CKO_PRIVATE_KEY;
  CK_OBJECT_CLASS       ocPubKey        = CKO_PUBLIC_KEY;
  CK_KEY_TYPE           keyType = CKK_GOSTR3410;
  CK_BBOOL              bTrue = CK_TRUE;
  CK_BBOOL              bFalse = CK_FALSE;
  /* Набор параметров КриптоПро алгоритма ГОСТ Р 34.11-2012(256) */
  CK_BYTE               paramsGostR3411[] = { 0x06, 0x08, 0x2a, 0x85, 0x03, 0x07, 0x01, 0x01, 0x02, 0x02 };
  CK_OBJECT_HANDLE      hPublicKey = NULL_PTR;    // Хэндл открытого ключа
  CK_OBJECT_HANDLE      hPrivateKey = NULL_PTR;    // Хэндл закрытого ключа
  CK_ATTRIBUTE          privKeyTemplate[] =
  {
    { CKA_CLASS, &ocPrivKey, sizeof(ocPrivKey) },
    { CKA_LABEL, privateKeyLabelGost2012_256_1, strlen(privateKeyLabelGost2012_256_1) },
    { CKA_ID, testName, strlen(testName) },
    { CKA_KEY_TYPE, &keyType, sizeof(keyType) },
    { CKA_TOKEN, &bTrue, sizeof(bTrue) },
    { CKA_PRIVATE, &bTrue, sizeof(bTrue) },
    { CKA_GOSTR3410_PARAMS, paramsGostR3410, sizeof(paramsGostR3410) },
    { CKA_GOSTR3411_PARAMS, paramsGostR3411, sizeof(paramsGostR3411) }
  };
  // шаблон открытого ключа
  CK_ATTRIBUTE           pubKeyTemplate[] =
  {
    { CKA_CLASS, &ocPubKey, sizeof(ocPubKey) },
    { CKA_ID, testName, strlen(testName) },  
    { CKA_LABEL, publicKeyLabelGost2012_256_1, strlen(publicKeyLabelGost2012_256_1) }, 
    { CKA_KEY_TYPE, &keyType, sizeof(keyType) },
    { CKA_TOKEN, &bTrue, sizeof(bTrue) },
    { CKA_PRIVATE, &bFalse, sizeof(bFalse) },
    { CKA_GOSTR3410_PARAMS, paramsGostR3410, sizeof(paramsGostR3410) }, 
    { CKA_GOSTR3411_PARAMS, paramsGostR3411, sizeof(paramsGostR3411) } 
  };
  CK_RV                 rv;
  if (CKR_OK != (rv = C_GenerateKeyPair( hSession
                                          , &genKeyMechanism
                                          , pubKeyTemplate, arraysize(pubKeyTemplate)
                                          , privKeyTemplate, arraysize(privKeyTemplate)
                                          , &hPublicKey, &hPrivateKey)))
  {
    printf("Token can't generate key. Code %08X\n", rv);
  }
По факту ошибка 0xD1 (CKR_TEMPLATE_INCONSISTENT).
Что тут не так?
PS. На более свежем Hardware version v20.5 / Firnware version v23.2 все работает. Как узнать/понять, где что можно, а где нет?
