PKCS # 11 C_CreateObject завершается с ошибочными аргументами - PullRequest
0 голосов
/ 15 мая 2018

У меня есть вызов API C_CreateObject PKCS # 11 для генерации 128-битного AES-ключа, который завершается с ошибочными аргументами.

Может кто-нибудь помочь мне разобраться, что не так с шаблоном?

                            CK_OBJECT_HANDLE hKey;
                            CK_OBJECT_CLASS keyClass = CKO_SECRET_KEY;
                            CK_KEY_TYPE keyType = CKK_AES;
                            CK_BBOOL _true = TRUE;
                            CK_BBOOL _false = FALSE;                              
                            CK_BYTE key_value[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef};

                            CK_ATTRIBUTE keyTemplate[] = {
                               {CKA_CLASS, &keyClass, sizeof(keyClass)},
                               {CKA_KEY_TYPE, &keyType, sizeof(keyType)},
                               {CKA_ENCRYPT, &_true, sizeof(_true)},
                               {CKA_DECRYPT, &_true, sizeof(_true)},
                               {CKA_TOKEN, &_true, sizeof(_true)},      /* token object  */
                               {CKA_PRIVATE, &_false, sizeof(_false)},  /* public object */
                               {CKA_VALUE, key_value, sizeof(key_value)},
                               {CKA_LABEL, CK_VOID_PTR("key"), sizeof("key")}
                             };

                             rv =  pfunc11->C_CreateObject(session, keyTemplate, sizeof (keyTemplate)/sizeof (CK_ATTRIBUTE), &hKey);
                             if (rv != CKR_OK) {
                                printf("ERROR: rv=0x%08X: C_CreateObject:\n", (unsigned int)rv);
                                return false;
                             }

1 Ответ

0 голосов
/ 15 мая 2018

Значение вашего ключа слишком короткое для Ключ AES - вам необходимо предоставить 16 байтов (128 бит) или 32 байта (256 бит) в key_value, например ::1004*

CK_BYTE key_value[] = { 
        0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
        0xcd, 0xef, 0x89, 0xab, 0x45, 0x67, 0x01, 0x23, 
};

Удачи!

...