Re[2]: Получить свойства ключей (криптоки)
От: J.J.OK  
Дата: 14.09.10 05:21
Оценка:
Здравствуйте, irbis3003, Вы писали:

I>а если так сделать (вроде более правильно):

I>
...
I>

I>то itemplate.pValue = 1 в независимости от того, каким был создан приватный ключ (CKA_EXTRACTABLE = true или CKA_EXTRACTABLE = false)

Как правильно было подмечено, код в первом посте — это пол дела. А вообще, конечно, код лучше приводить все-таки одним куском — чтобы не надо было заглядывать в предыдущий пост за деталями. И еще: если это не универсальная обёртка, умеющая добывать значения любых атрибутов, то в данном конкретном месте, зная тип значения данного конкретного атрибута (CK_BBOOL), вполне можно использовать для его хранения переменную соотв. типа., Т.е.:

CK_BBOOL extractable = CK_FALSE;
CK_ATTRIBUTE at_extractable[] = { CKA_EXTRACTABLE, &extractable, sizeof( CK_BBOOL ) };
CK_RV rv;

rv = C_GetAttributeValue( hObject, hSession, &at_extractabe, COUNTOF( extractable ) );


Что касается полученных результатов, то, могу предположить, что там где написано

то itemplate.pValue = 1 в независимости от того, каким был создан приватный ключ (CKA_EXTRACTABLE = true или CKA_EXTRACTABLE = false)

на самом деле подразумевалось *(itemplate.pValue).
Если так, то вполне возможно, что данное конкретное PKCS#11-устройство не имеет нормальной поддержки атрибута CKA_EXTRACTABLE, и, чтобы не обламывать пользователя ошибками, всегда приводит его значение к CK_TRUE. Так, например, сделано в Mozilla NSS.

Удачи.
Чем безопаснеe — тем неудобнее ;-)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.