Это не класс объектов, поэтому не требуется определение CKO_
.
В объектах ключей хранятся ключи шифрования и аутентификации, которые могут быть:
Таблица ниже описывает атрибуты объектов ключей, в дополнение к общим атрибутам.
Атрибут | Тип данных | Значение |
---|---|---|
CKA_KEY_TYPE 1,5 |
CK_KEY_TYPE |
Тип ключа. |
CKA_ID 8 |
Byte Array
(массив
CK_BYTE ) |
Идентификатор ключа. По умолчанию – пусто. |
CKA_START_DATE 8 |
CK_DATE |
Дата начала действия ключа. По умолчанию – пусто. |
CKA_END_DATE 8 |
CK_DATE |
Дата истечения действия ключа. По умолчанию – пусто. |
CKA_DERIVE 8 |
CK_BBOOL |
По умолчанию – |
CKA_LOCAL 2,4,6 |
CK_BBOOL |
|
CKA_KEY_GEN_MECHANISM 2,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
.