Это не класс объектов, поэтому не требуется определение CKO_.
В объектах ключей хранятся ключи шифрования и аутентификации, которые могут быть:
Таблица ниже описывает атрибуты объектов ключей, в дополнение к общим атрибутам.
| Атрибут | Тип данных | Значение |
|---|---|---|
CKA_KEY_TYPE1,5 |
CK_KEY_TYPE |
Тип ключа. |
CKA_ID8 |
Byte Array
(массив
CK_BYTE) |
Идентификатор ключа. По умолчанию – пусто. |
CKA_START_DATE8 |
CK_DATE |
Дата начала действия ключа. По умолчанию – пусто. |
CKA_END_DATE8 |
CK_DATE |
Дата истечения действия ключа. По умолчанию – пусто. |
CKA_DERIVE8 |
CK_BBOOL |
По умолчанию – |
CKA_LOCAL2,4,6 |
CK_BBOOL |
|
CKA_KEY_GEN_MECHANISM2,4,6 |
CK_MECHANISM_TYPE |
Идентификатор механизма, который используется для генерации материала ключа. |
CKA_ALLOWED_MECHANISMS |
CK_MECHANISM_TYPE_PTR |
Список механизмов, которые можно использовать с данным ключом.
Количество механизмов в массиве – параметр ulValueLen атрибута, разделенный на размер CK_MECHANISM_TYPE. |
C_CreateObject().C_CreateObject().C_GenerateKey() или C_GenerateKeyPair().C_UnwrapKey().C_UnwrapKey().C_SetAttributeValue()
или в процессе копирования объекта с использованием C_CopyObject().
Однако в некоторых случаях определенный токен может и не разрешить
изменение атрибута в процессе выполнения C_CopyObject().Поле CKA_ID предназначено для различения нескольких ключей.
В случае с открытыми и секретными ключами данное поле предназначено для управления различными ключами,
которые принадлежат одному субъекту;
идентификатор для открытого ключа и для соответствующего ему секретного ключа должны быть одинаковыми.
Идентификатор ключа также должен быть одинаковым и для соответствующего сертификата, если таковой существует.
Однако Cryptoki не настаивает на таких привязках. В случае с секретными ключами значение атрибута CKA_ID зависит от приложения.
Атрибуты CKA_START_DATE и CKA_END_DATE используются только для ссылки на них;
Cryptoki не придает им никакого особого значения. В частности, он не ограничивает
использование ключа в соответствии с датами; этим занимается приложение.
Атрибут CKA_DERIVE имеет значение CK_TRUE тогда и только тогда,
когда из данного ключа можно вывести другие ключи.
Атрибут CKA_LOCAL имеет значение CK_TRUE тогда и только тогда,
когда значение ключа было изначально сгенерировано на носителе
с использованием вызова функции C_GenerateKey() или C_GenerateKeyPair().
Атрибут CKA_KEY_GEN_MECHANISM определяет механизм генерации ключа,
который используется для генерации материала ключа. Он содержит действительное значение
только в том случае, если атрибут CKA_LOCAL имеет значение CK_TRUE.
Если CKA_LOCAL имеет значение CK_FALSE, то атрибут CKA_KEY_GEN_MECHANISM
принимает значение CK_UNAVAILABLE_INFORMATION.