Здравствуйте, hugo_bss, Вы писали:
_>Ёлки-палки....сессия приближается, а у меня ещё ничего не готово...пока всё остальное сдавал, времени не было сесть курсовой.
_>А сегодня присел, и реализовал поиск по объектов, добавление и удаление объектов...получение атрибутов объектов.
_>Но как-то непонятно...добавляю я объект (описанный в стандарте):
_> CK_OBJECT_CLASS ck_class = CKO_CERTIFICATE;
_> CK_CERTIFICATE_TYPE certType = CKC_X_509;
_> CK_UTF8CHAR label[] = "A certificate object";
_> CK_BYTE subject[] = {1};
Если это значение подразумевается использовать как pValue для атрибута типа CKA_SUBJECT, то это радикально неправильно — здесь должно быть DER-кодированное значение соответствующего поля из серитфиката
_> CK_BYTE id[] = {123};
_> CK_BYTE certificate[] = {2};
Аналогично — если это подразумевается как pValue для CKA_VALUE, то здесь должен быть сам сертификат.
_> CK_BBOOL ck_true = CK_TRUE;
_>а Thunderbird его находит, а потом запрашивает аттрибуты типа: CKA_ISSUER, CKA_SERIAL_NUMBER и
0xce534352 (ASCII: ОCSR) ... вот собственно откуда и взялись эти загадочные TCSO,QCSO...
_>в и-нете наткнулся на аналогичный вопрос
Там кстати товарищу все правильно ответили, и ссылку правильную дали — прямо с номером нужной строки (да и в прошлый раз — если бы было не лень читать — все стало бы понятно):
"база" от которой "растут" мозилла-специфик значения атрибутов:
CKA_NSS (CKA_VENDOR_DEFINED|NSSCK_VENDOR_NSS) = 0x80000000 | 0x4E534350 = 0xce534350
CKA_(0xce534352) = CKA_NSS + 2 = (смотрим в заголовочный файл по той ссылке) CKA_TRUST_NON_REPUDIATION
Что именно делать если ты не собираешься поддерживать данные типы атрибутов? — в найденном тобой "вопросе" вполне логичная рекомендация — возвращать CKR_ATTRIBUTE_TYPE_INVALID.
_>Но тогда непонятно....я не получил ни одного запроса от Thunderbird-а без Vendor Defined Attributes.
_>и ещё непонятно. для чего получать список механизмов открывать сессию и снова получать список механизмов?
А на такие вещи можно особого внимания не обращать — ты ведь наблюдаешь использование токена находясь на "самом нижнем уровне", а мозилла большая, и те действия которые на уровне токена могут показаться не очень понятным/целесообразным, вполне могут быть иницированы на три уровня абстракции выше, где в соответствующем апи все уже будет выглядеть просто и логично.