Ошибка(10) при вызове C_CreateObject с атрибутом CKA_MODIFIABLE
При вызове C_CreateObject с нижеследующим набором атрибутов получаем CKR_ATTRIBUTE_READ_ONLY(0x00000010)
char label[64];
int label_len = ...;
const char *userid = ...;
unsigned char *modulus = ...;
int modSize = ...;
nsigned char *exponent = ...;
int expSize = ...;
CK_BBOOL bFalse = 0;
CK_BBOOL bTrue = 1;
CK_KEY_TYPE key_type = CKK_RSA;
CK_OBJECT_CLASS class_public_key = CKO_PUBLIC_KEY;
CK_OBJECT_HANDLE public_key;
...
CK_ATTRIBUTE public_key_template[] = {
{ CKA_CLASS, &class_public_key, sizeof(class_public_key) },
{ CKA_KEY_TYPE, &key_type, sizeof(key_type) },
{ CKA_ID, label, label_len },
{ CKA_SUBJECT, (void *)userid, strlen(userid) },
{ CKA_LABEL, label, label_len },
{ CKA_TOKEN, &bTrue, sizeof(bTrue) },
{ CKA_PRIVATE, &bFalse, sizeof(bFalse) },
{ CKA_MODULUS, modulus, modSize },
{ CKA_PUBLIC_EXPONENT, exponent, expSize },
{ CKA_MODIFIABLE, &bFalse, sizeof(bFalse) }
};
...
PKCS11_call->C_CreateObject(session, public_key_template, arraysize(public_key_template), &public_key);
Если убрать CKA_MODIFIABLE - открытый ключ создается успешно.
Пробовали на
Windows 7 x64 SP1, Windows 7 x32 sp1, Windows XP sp3
rtPKCS11.dll 4.2.3.0
Rutoken фолетовый (Рутокен ЭЦП PKI) D 64K120Z