Атрибут CKA_TOKEN определяет расположение и длительность хранения объекта. Возможные значения:
CK_TRUE – объект хранится только в памяти устройства и не удаляется после завершения сеанса,CK_FALSE (либо не задан) – объект хранится в оперативной памяти и может использоваться только в
промежуток времени с момента его создания и до закрытия сеанса (см. C_CloseSession() и
C_CloseAllSessions()).| Криптотокен | Laser | Datastore | ||||
|---|---|---|---|---|---|---|
| Объект | TRUE |
FALSE |
TRUE |
FALSE |
TRUE |
FALSE |
CKO_PUBLIC_KEY |
V | – | V | V | – | – |
CKO_PRIVATE_KEY |
V | – | V | – | – | – |
CKO_SECRET_KEY (ключ согласования) |
V | V | V | – | – | – |
CKO_SECRET_KEY |
– | V | V | – | – | – |
CKO_CERTIFICATE |
V | V | V | – | V | V |
CKO_DATA |
V | V | V | V | V | V |
Примечание
Создание объектов с помощью апплета Криптотокен должно производиться в режиме пользователя.
CKO_PRIVATE_KEY¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_GenerateKeyPair() |
V | X |
| Имя атрибута | Значение атрибута |
|---|---|
CKA_CLASS |
CKO_PRIVATE_KEY |
CKA_PRIVATE |
CK_TRUE |
CKA_TOKEN |
CK_TRUE |
CKA_UNWRAP |
CK_FALSE |
CKA_SIGN |
CK_TRUE |
CKA_EXTRACTABLE |
CK_FALSE |
CKA_NEVER_EXTRACTABLE |
CK_TRUE |
CKA_ALWAYS_SENSITIVE |
CK_TRUE |
CKA_MODIFIABLE |
CK_FALSE |
CKA_SENSITIVE |
CK_TRUE |
CKA_VALUE_LEN |
32 |
Если значение хотя бы одного из атрибутов отличается от указанных в таблице выше, то функция возвращает
CKR_ATTRIBUTE_READ_ONLY.
CKO_PUBLIC_KEY¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | X |
C_GenerateKeyPair() |
V | X |
| Имя атрибута | Значение атрибута |
|---|---|
CKA_CLASS |
CKO_PUBLIC_KEY |
CKA_PRIVATE |
CK_FALSE |
CKA_TOKEN |
CK_TRUE |
CKA_GOSTR3410_PARAMS |
см. Возможные значения атрибута CKA_GOSTR3410_PARAMS |
Если значение хотя бы одного из атрибутов отличается от указанных в таблице выше, то функция возвращает
CKR_ATTRIBUTE_READ_ONLY.
CKO_SECRET_KEY¶| Ключ | CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|---|
C_CreateObject() |
Сеансовый секретный | Возвращает CKR_ATTRIBUTE_VALUE_INVALID |
V |
C_GenerateKey() |
Сеансовый секретный | X | V |
C_DeriveKey() |
Согласования | V | V |
C_UnwrapKey() |
Сеансовый секретный | X | V |
Создание объекта секретного ключа в памяти токена (атрибут CKA_TOKEN = CK_TRUE) не предусмотрено.
| Имя атрибута | Значение атрибута |
|---|---|
CKA_CLASS |
CKO_SECRET_KEY |
CKA_PRIVATE |
CK_TRUE |
CKA_TOKEN |
CK_TRUE |
Если хотя бы один из заданных аргументами функции атрибутов принимает значение, отличное от приведённых
в таблице, будет выдаваться ошибка CKR_ATTRIBUTE_READ_ONLY.
Для создания секретного ключа также необходимо указать CKA_VALUE, который должен быть представлен в формате от
младшего к старшему (little endian).
C_CreateObject¶С помощью функции C_CreateObject() может быть создан сеансовый секретный ключ,
(атрибут CK_TOKEN = CK_FALSE) который хранится только в рамках текущего сеанса, до момента выхода из режима
пользователя или отключения устройства.
В шаблон создания такого объекта необходимо добавить атрибут CKA_GOST28147_PARAMS. Значение атрибута представляет
собой массив байт, определяющий параметры функции шифрования, соответствующей ГОСТ 28147-89. Возможные значения смотри
в таблице.
Объект должен создаваться в режиме пользователя.
C_GenerateKey¶Для выработки сеансового секретного ключа с помощью функции C_GenerateKey() используется набор параметров, который
определяется структурой формата CK_GOSTR3410_DERIVE_PARAMS.
CKO_CERTIFICATE¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | V |
Рекомендуемый набор атрибутов:
CKA_CLASS,CKA_TOKEN,CKA_LABEL,CKA_SERIAL_NUMBER.| Атрибут | Значение |
|---|---|
CKA_CLASS |
(CK_OBJECT_CLASS)CKO_CERTIFICATE |
CKA_TOKEN |
(CK_BBOOL)CK_TRUE |
CKA_PRIVATE |
(CK_BBOOL)CK_FALSE |
CKA_LABEL |
std::vector <CK_BYTE>(0) |
CKA_TRUSTED |
(CK_BBOOL)CK_FALSE |
CKA_SUBJECT |
std::vector <CK_BYTE>(0) |
CKA_ID |
std::vector <CK_BYTE>(0) |
CKA_SERIAL_NUMBER |
std::vector <CK_BYTE>(0) |
CKA_MODIFIABLE |
(CK_BBOOL)CK_TRUE |
CKA_COMPRESSED* |
(CK_BBOOL)CK_FALSE |
Примечание
Привязка ключевой пары к сертификату происходит через атрибут CKA_ID.
CKO_DATA¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | V |
Рекомендуемый набор атрибутов:
CKA_CLASS,CKA_TOKEN,CKA_LABEL,CKA_VALUE.| Атрибут | Значение |
|---|---|
CKA_COMPRESSED* |
(CK_BBOOL)CK_FALSE |
Примечание
Создание объектов с помощью апплета Laser должно производиться в режиме пользователя.
CKO_PRIVATE_KEY¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | X |
C_GenerateKeyPair() |
V | X |
Рекомендуемый набор атрибутов:
CKA_MODULUS,CKA_PRIVATE_EXPONENT,CKA_PRIME_1,CKA_PRIME_2.| Атрибут | Значение |
|---|---|
CKA_CLASS |
(CK_OBJECT_CLASS)CKO_PRIVATE_KEY |
CKA_TOKEN |
(CK_BBOOL)CK_TRUE |
CKA_PRIVATE |
(CK_BBOOL)CK_TRUE |
CKA_LABEL |
std::vector <CK_BYTE>(0) |
CKA_KEY_TYPE |
(CK_KEY_TYPE)CKK_RSA |
CKA_SUBJECT |
std::vector <CK_BYTE>(0) |
CKA_ID |
std::vector <CK_BYTE>(0) |
CKA_SENSITIVE |
(CK_BBOOL)CK_TRUE |
CKA_DECRYPT |
(CK_BBOOL)CK_FALSE |
CKA_UNWRAP |
(CK_BBOOL)CK_FALSE |
CKA_SIGN |
(CK_BBOOL)CK_FALSE |
CKA_SIGN_RECOVER |
(CK_BBOOL)CK_FALSE |
CKA_DERIVE |
(CK_BBOOL)CK_FALSE |
CKA_START_DATE |
std::vector <CK_BYTE>(0) |
CKA_END_DATE |
std::vector <CK_BYTE>(0) |
CKA_EXTRACTABLE |
(CK_BBOOL)CK_TRUE |
CKA_LOCAL |
(CK_BBOOL)CK_FALSE |
CKA_NEVER_EXTRACTABLE |
(CK_BBOOL)CK_FALSE |
CKA_ALWAYS_SENSITIVE |
(CK_BBOOL)CK_FALSE |
CKA_KEY_GEN_MECHANISM |
(CK_ULONG)CKK_INVALID_KEY_TYPE |
CKA_MODIFIABLE |
(CK_BBOOL)CK_TRUE |
Примечание
Привязка ключевой пары к сертификату происходит через атрибут CKA_ID.
CKO_PUBLIC_KEY¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | V |
C_GenerateKeyPair() |
V | V |
Рекомендуемый набор атрибутов:
CKA_CLASS,CKO_PUBLIC_KEY,CKA_TOKEN,CKA_LABEL,CKA_MODULUS_BITS,CKA_KEY_TYPE,CKA_VERIFY.| Атрибут | Значение |
|---|---|
CKA_CLASS |
(CK_OBJECT_CLASS)CKO_PUBLIC_KEY |
CKA_TOKEN |
(CK_BBOOL)CK_TRUE |
CKA_PRIVATE |
(CK_BBOOL)CK_FALSE |
CKA_LABEL |
std::vector <CK_BYTE>(0) |
CKA_TRUSTED |
(CK_BBOOL)CK_FALSE |
CKA_KEY_TYPE |
(CK_KEY_TYPE)CKK_RSA |
CKA_SUBJECT |
std::vector <CK_BYTE>(0) |
CKA_ENCRYPT |
(CK_BBOOL)CK_FALSE |
CKA_WRAP |
(CK_BBOOL)CK_FALSE |
CKA_VERIFY |
(CK_BBOOL)CK_FALSE |
CKA_VERIFY_RECOVER |
(CK_BBOOL)CK_FALSE |
CKA_DERIVE |
(CK_BBOOL)CK_FALSE |
CKA_START_DATE |
std::vector <CK_BYTE>(0) |
CKA_END_DATE |
std::vector <CK_BYTE>(0) |
CKA_MODULUS_BITS |
(CK_ULONG)1024 |
CKA_LOCAL |
(CK_BBOOL)CK_TRUE |
CKA_KEY_GEN_MECHANISM |
(CK_ULONG)0 |
Примечание
Атрибут CKA_VALUE создаваемого ключа сохраняется в представлении от младшего к старшему (little-endian).
CKO_SECRET_KEY¶| Ключ | CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|---|
C_CreateObject() |
Сеансовый секретный | ||
C_GenerateKey() |
Сеансовый секретный | ||
C_DeriveKey() |
Согласования | ||
C_UnwrapKey() |
Сеансовый секретный |
Рекомендуемый набор атрибутов:
CKA_CLASS,CKO_SECRET_KEY,CKA_KEY_TYPE,CKA_VALUE.| Атрибут | Значение |
|---|---|
CKA_CLASS |
(CK_OBJECT_CLASS)CKO_SECRET_KEY |
CKA_TOKEN |
(CK_BBOOL)CK_TRUE |
CKA_PRIVATE |
(CK_BBOOL)CK_TRUE |
CKA_LABEL |
std::vector <CK_BYTE>(0) |
CKA_VALUE |
std::vector <CK_BYTE>(24, 0x00) |
CKA_KEY_TYPE |
(CK_KEY_TYPE)CKK_AES |
CKA_ID |
std::vector <CK_BYTE>(0) |
CKA_SENSITIVE |
(CK_BBOOL)CK_TRUE |
CKA_DECRYPT |
(CK_BBOOL)CK_TRUE |
CKA_WRAP |
(CK_BBOOL)CK_FALSE |
CKA_UNWRAP |
(CK_BBOOL)CK_TRUE |
CKA_DERIVE |
(CK_BBOOL)CK_FALSE |
CKA_START_DATE |
std::vector <CK_BYTE>(0) |
CKA_END_DATE |
std::vector <CK_BYTE>(0) |
CKA_EXTRACTABLE |
(CK_BBOOL)CK_TRUE |
CKA_LOCAL |
(CK_BBOOL)CK_TRUE |
CKA_NEVER_EXTRACTABLE |
(CK_BBOOL)CK_FALSE |
CKA_ALWAYS_SENSITIVE |
(CK_BBOOL)CK_TRUE |
CKA_KEY_GEN_MECHANISM |
(CK_ULONG)0 |
CKA_MODIFIABLE |
(CK_BBOOL)CK_TRUE |
Примечание
Привязка ключевой пары к сертификату происходит через атрибут CKA_ID.
Примечание
Атрибут CKA_VALUE создаваемого ключа сохраняется в представлении от младшего к старшему (little-endian).
CKO_CERTIFICATE¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | V |
Рекомендуемый набор атрибутов:
CKA_CLASS,CKA_TOKEN,CKA_LABEL,CKA_SERIAL_NUMBER.| Атрибут | Значение |
|---|---|
CKA_CLASS |
(CK_OBJECT_CLASS)CKO_CERTIFICATE |
CKA_TOKEN |
(CK_BBOOL)CK_TRUE |
CKA_PRIVATE |
(CK_BBOOL)CK_FALSE |
CKA_LABEL |
std::vector <CK_BYTE>(0) |
CKA_TRUSTED |
(CK_BBOOL)CK_FALSE |
CKA_SUBJECT |
std::vector <CK_BYTE>(0) |
CKA_ID |
std::vector <CK_BYTE>(0) |
CKA_SERIAL_NUMBER |
std::vector <CK_BYTE>(0) |
CKA_MODIFIABLE |
(CK_BBOOL)CK_TRUE |
CKA_COMPRESSED* |
(CK_BBOOL)CK_FALSE |
Примечание
Привязка ключевой пары к сертификату происходит через атрибут CKA_ID.
CKO_DATA¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | V |
Рекомендуемый набор атрибутов:
CKA_CLASS,CKA_TOKEN,CKA_LABEL,CKA_VALUE.| Атрибут | Значение |
|---|---|
CKA_COMPRESSED* |
(CK_BBOOL)CK_FALSE |
CKO_CERTIFICATE¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | V |
Рекомендуемый набор атрибутов:
CKA_CLASS,CKA_TOKEN,CKA_LABEL,CKA_SERIAL_NUMBER.| Атрибут | Значение |
|---|---|
CKA_CLASS |
(CK_OBJECT_CLASS)CKO_CERTIFICATE |
CKA_TOKEN |
(CK_BBOOL)CK_TRUE |
CKA_PRIVATE |
(CK_BBOOL)CK_FALSE |
CKA_LABEL |
std::vector <CK_BYTE>(0) |
CKA_TRUSTED |
(CK_BBOOL)CK_FALSE |
CKA_SUBJECT |
std::vector <CK_BYTE>(0) |
CKA_ID |
std::vector <CK_BYTE>(0) |
CKA_SERIAL_NUMBER |
std::vector <CK_BYTE>(0) |
CKA_MODIFIABLE |
(CK_BBOOL)CK_TRUE |
CKA_COMPRESSED* |
(CK_BBOOL)CK_FALSE |
Примечание
Привязка ключевой пары к сертификату происходит через атрибут CKA_ID.
CKO_DATA¶CKA_TOKEN = CK_TRUE |
CKA_TOKEN = CK_FALSE |
|
|---|---|---|
C_CreateObject() |
V | V |
Рекомендуемый набор атрибутов:
CKA_CLASS,CKA_TOKEN,CKA_LABEL,CKA_VALUE.| Атрибут | Значение |
|---|---|
CKA_COMPRESSED* |
(CK_BBOOL)CK_FALSE |
Компрессия данных реализована через атрибут CKA_COMPRESSED. Атрибут принимает значения CK_TRUE и CK_FALSE
для включения и отключения компрессии соответственно.
По умолчанию атрибут установлен в значение CK_FALSE и присутствует во всех объектах типов CKO_CERTIFICATE и CKO_DATA. Компрессии подвергается аттрибут``CKA_VALUE``. Значение аттрибута присваивается при создании объекта и не
изменяется впоследствии.
Компрессия поддерживается апплетами Криптотокен, Laser и Datastore и предусмотрена в следующих функциях:
CKA_GOST28147_PARAMS и CKA_GOSTR3410_PARAMS¶| Наименование параметров | Содержание массива |
|---|---|
id-Gost28147-89-TestParamSet |
0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x00 |
id-Gost28147-89-CryptoPro-A-ParamSet |
0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x01 |
id-Gost28147-89-CryptoPro-B-ParamSet |
0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x02 |
id-Gost28147-89-CryptoPro-C-ParamSet |
0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x03 |
id-Gost28147-89-CryptoPro-D-ParamSet |
0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x04 |
В RFC 4357 данный набор параметров
отсутствует. Он аналогичен набору
id-Gost28147-89-CryptoPro-A-ParamSet,
но предполагает использование режима
гаммирования без обратной связи
(имеющего в RFC 5830 наименование CNT). |
0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x65 |
| Тип параметров эллиптических кривых | Содержание массива |
|---|---|
id-GostR3410-2001-CryptoPro-A-ParamSet |
0x06, 0x07, 0x2A, 0x85, 0x03, 0x02, 0x02, 0x23, 0x01 |
id-GostR3410-2001-CryptoPro-B-ParamSet |
0x06, 0x07, 0x2A, 0x85, 0x03, 0x02, 0x02, 0x23, 0x02 |
id-GostR3410-2001-CryptoPro-C-ParamSet |
0x06, 0x07, 0x2A, 0x85, 0x03, 0x02, 0x02, 0x23, 0x03 |
id-GostR3410-2001-CryptoPro-XchA-ParamSet |
0x06, 0x07, 0x2A, 0x85, 0x03, 0x02, 0x02, 0x24, 0x00 |
id-GostR3410-2001-CryptoPro-XchB-ParamSet |
0x06, 0x07, 0x2A, 0x85, 0x03, 0x02, 0x02, 0x24, 0x01 |
CKR_OK (0x00000000) – функция выполнена успешно.CKR_CANCEL (0x00000001) – операция была отменена. При работе с Антифрод-терминалом данная ошибка
подразумевает, что пользователь нажал Отмена.CKR_HOST_MEMORY (0x00000002) – компьютер, на котором запущена библиотека, не имеет достаточно памяти для
выполнения функции.CKR_SLOT_ID_INVALID (0x00000003) – недопустимый идентификатор слота.CKR_GENERAL_ERROR (0x00000005) – общий сбой при работе с библиотекой.CKR_FUNCTION_FAILED (0x00000006) – выполнение функции было прервано или она не может быть выполнена.CKR_ARGUMENTS_BAD (0x00000007) – недопустимые аргументы.CKR_NO_EVENT (0x00000008) – возвращается, если C_WaitForSlotEvent вызван в режиме без блокировки и новых
событий слота нет.CKR_CANT_LOCK (0x0000000A) – невозможно использовать разделение ресурсов.CKR_ATTRIBUTE_READ_ONLY (0x00000010) – невозможно установить значение атрибута, т.к. он поддерживает только
чтение.CKR_ATTRIBUTE_SENSITIVE (0x00000011) – запрашиваемый атрибут недоступен для чтения.CKR_ATTRIBUTE_TYPE_INVALID (0x00000012) – недопустимый тип атрибута.CKR_DEVICE_ERROR (0x00000030) – возникла проблема с токеном и/или слотом.CKR_DEVICE_MEMORY (0x00000031) – памяти токена недостаточно для данной операции.CKR_DEVICE_REMOVED (0x00000032) – токен был изъят из слота.CKR_ENCRYPTED_DATA_LEN_RANGE (0x00000041) – недопустимый размер зашифрованных данных.CKR_FUNCTION_NOT_SUPPORTED (0x00000054) – вызванная функция не поддерживается библиотекой Cryptoki.CKR_KEY_HANDLE_INVALID (0x00000060) – недопустимый дескриптор ключа.CKR_KEY_SIZE_RANGE (0x00000062) – размер ключа лежит за пределами, поддерживаемыми библиотекой Cryptoki.CKR_KEY_TYPE_INCONSISTENT (0x00000063) – данный ключ невозможно использовать с указанным механизмом.CKR_KEY_FUNCTION_NOT_PERMITTED (0x00000068) – атрибуты ключа не позволяют его использование данным образом.CKR_KEY_NOT_WRAPPABLE (0x00000069) – библиотека Cryptoki не может экспортировать данный ключ.CKR_MECHANISM_INVALID (0x00000070) – недопустимый механизм.CKR_MECHANISM_PARAM_INVALID (0x00000071) – недопустимый параметр механизма.CKR_OBJECT_HANDLE_INVALID (0x00000082) – недопустимый дескриптор объекта.CKR_OPERATION_ACTIVE (0x00000090) – на устройстве уже есть активная операция, что не позволяет начать
новую операцию.CKR_OPERATION_NOT_INITIALIZED (0x00000091) – в указанном сеансе нет активной операции данного типа.CKR_PIN_INCORRECT (0x000000A0) – неверный PIN-код.CKR_PIN_INVALID (0x000000A1) – недопустимый PIN-код.CKR_PIN_LEN_RANGE (0x000000A2) – недопустимый размер PIN-кода.CKR_PIN_LOCKED (0x000000A4) – указанный PIN-код заблокирован и не может быть использован.CKR_SESSION_CLOSED (0x000000B0) – сеанс был закрыт в момент выполнения функции.CKR_SESSION_COUNT (0x000000B1) – открыто слишком большое количество сеансов.CKR_SESSION_HANDLE_INVALID (0x000000B3) – недопустимый дескриптор сеанса.CKR_SESSION_PARALLEL_NOT_SUPPORTED (0x000000B4) – данный токен не поддерживает параллельные сеансы.CKR_SESSION_EXISTS (0x000000B6) – сеанс с данным токеном уже существует, следовательно токен не может быть
инициализирован.CKR_SESSION_READ_ONLY_EXISTS (0x000000B7) – сеанс на чтение уже открыт и администратор не может быть
залогинен.CKR_SESSION_READ_WRITE_SO_EXISTS (0x000000B8) – сеанс чтения/записи уже открыт, администратор не имеет
возможности залогиниться.CKR_SIGNATURE_INVALID (0x000000C0) – недопустимая подпись.CKR_SIGNATURE_LEN_RANGE (0x000000C1) – недопустимый размер подписи.CKR_TEMPLATE_INCOMPLETE (0x000000D0) – шаблон, указанный для создания объекта, неполон.CKR_TEMPLATE_INCONSISTENT (0x000000D1) – шаблон, указанный для создания объекта, содержит конфликтующие
атрибуты.CKR_TOKEN_NOT_PRESENT (0x000000E0) – в слоте отсутствует токен.CKR_TOKEN_NOT_RECOGNIZED (0x000000E1) – токен не поддерживается.CKR_TOKEN_WRITE_PROTECTED (0x000000E2) – данный токен защищен от записи.CKR_USER_ALREADY_LOGGED_IN (0x00000100) – пользователь уже залогинен.CKR_USER_NOT_LOGGED_IN (0x00000101) – действие не может быть выполнено, т.к. пользователь не залогинен.CKR_USER_PIN_NOT_INITIALIZED (0x00000102) – PIN-код пользователя не инициализирован (см. C_InitPIN()).CKR_USER_TYPE_INVALID (0x00000103) – недопустимый тип пользователя.CKR_USER_ANOTHER_ALREADY_LOGGED_IN (0x00000104) – указанный пользователь не может быть залогинен в данном
сеансе, так как другой пользователь уже залогинен в нем.CKR_BUFFER_TOO_SMALL (0x00000150) – вывод функции слишком велик для предоставленного буфера.CKR_INFORMATION_SENSITIVE (0x00000170) – запрашиваемый объект недоступен для чтения.CKR_CRYPTOKI_NOT_INITIALIZED (0x00000190) – функция не может быть выполнена, т.к. библиотека Cryptoki еще не
была инициализированна (см. C_Initialize()).CKR_CRYPTOKI_ALREADY_INITIALIZED (0x00000191) – библиотека Cryptoki уже была инициализированна вызовом
C_Initialize() и не была закрыта соответствующим вызовом C_Finalize().CKR_FUNCTION_REJECTED (0x00000200) – запрос на подпись отклонен пользователем.Список поддерживаемых механизмов и их идентификаторов для библиотеки PKCS#11 с различными апплетами.
Совет
Отдельный список поддерживаемых механизмов для каждой конкретной функции доступен в ее описании.
CKM_GOSTR3410 – 0x00001201,CKM_GOSTR3410_KEY_PAIR_GEN – 0x00001200,CKM_GOSTR3410_WITH_GOSTR3411 – 0x00001202,CKM_GOSTR3410_DERIVE – 0x00001204,CKM_GOSTR3411 – 0x00001210,CKM_GOST28147 – 0x00001222,CKM_GOST28147_ECB – 0x00001221,CKM_GOST28147_KEY_WRAP – 0x00001224,CKM_GOST28147_KEY_GEN – 0x00001220.CKM_TLS_GOST_MASTER_KEY_DERIVE – (NSSCK_VENDOR_PKSC11_RU_TEAM|0x101),CKM_TLS_GOST_KEY_AND_MAC_DERIVE – (NSSCK_VENDOR_PKSC11_RU_TEAM|0x102),CKM_TLS_GOST_PRF – (NSSCK_VENDOR_PKSC11_RU_TEAM|0x103),CKM_TLS_GOST_PRE_MASTER_KEY_GEN – (NSSCK_VENDOR_PKSC11_RU_TEAM|0x104).CKM_RSA_PKCS_KEY_PAIR_GEN – 0x00000000,CKM_RSA_PKCS – 0x00000001,CKM_SHA1_RSA_PKCS – 0x00000006,CKM_RSA_PKCS_OAEP – 0x00000009,CKM_SHA256_RSA_PKCS – 0x00000040,CKM_DES2_KEY_GEN – 0x00000130,CKM_DES3_KEY_GEN – 0x00000131,CKM_DES3_ECB – 0x00000132,CKM_DES3_CBC – 0x00000133,CKM_DES3_MAC – 0x00000134,CKM_DES3_MAC_GENERAL – 0x00000135,CKM_MD5 – 0x00000210,CKM_MD5_HMAC – 0x00000211,CKM_SHA_1 – 0x00000220,CKM_SHA_1_HMAC – 0x00000221,CKM_SHA256 – 0x00000250,CKM_SHA256_HMAC – 0x00000251,CKM_SHA384 – 0x00000260,CKM_SHA384_HMAC – 0x00000261,CKM_SHA512 – 0x00000270,CKM_SHA512_HMAC – 0x00000271,CKM_TLS_PRE_MASTER_KEY_GEN – 0x00000374,CKM_TLS_MASTER_KEY_DERIVE – 0x00000375,CKM_TLS_KEY_AND_MAC_DERIVE – 0x00000376,CKM_TLS_MASTER_KEY_DERIVE_DH – 0x00000377,CKM_TLS_PRF – 0x00000378,CKM_CMS_SIG – 0x00000500,CKM_ECDSA_KEY_PAIR_GEN – 0x00001040,CKM_EC_KEY_PAIR_GEN – 0x00001040,CKM_ECDSA – 0x00001041,CKM_ECDSA_SHA1 – 0x00001042,CKM_ECDSA_SHA256 – 0x00001043,CKM_ECDH1_DERIVE – 0x00001050,CKM_AES_KEY_GEN – 0x00001080,CKM_AES_ECB – 0x00001081,CKM_AES_CBC – 0x00001082,CKM_AES_MAC – 0x00001083,CKM_AES_MAC_GENERAL – 0x00001084.operation функции C_jcCtrl¶Используется функцией C_jcCtrl().
JC_CTRL_GET_PROPERTIES – получение сведений об Антифрод-терминале. Выходные данные представляют собой структуру
SWYX_PROPERTIES_RESPONSE.JC_CTRL_SWYX_START – включение SWYX-режима. В этом режиме терминал ведёт
журнал операций, которые выполняет он сам и подключённая к нему
смарт-карта. Входные и выходные данные отсутствуют.JC_CTRL_SWYX_STOP – выключение SWYX-режима работы терминала. Терминал прекращает вести журнал операций и
подписывает его. Выходные данные представляют собой журнал операций и следующую за ним 64-байтовую подпись.JC_CTRL_SWYX_DISPLAY – отображение текста на экране Антифрод-терминала и запрос пользователю подтвердить или
отклонить подписание электронного документа. Входные должны представлять собой структуру
SWYX_DISPLAY_ARGUMENTS. В случае отказа пользователя функция C_jcCtrl возвращает код
CKR_FUNCTION_REJECTED (0x00000200), а в случае истечения времени ожидания –
CKR_FUNCTION_CANCELED (0x00000050).JC_CTRL_PERSONALIZE – генерация собственной ключевой пары Антифрод-терминала. Входные и выходные данные
отсутствуют. В случае отказа пользователя функция C_jcCtrl возвращает код CKR_FUNCTION_REJECTED (0x00000200).JC_CTRL_ENROLL – получение открытого ключа Антифрод-терминала. Выходные данные представляют собой 64-байтовый
ключ.JC_CTRL_SWYX_GET_APPLET_SN – серийного номера Антифрод-терминала. Выходные данные
представляют собой 8-байтовый серийный номер.JC_CTRL_PIN_INIT – установка PIN-кода пользователя для подключенной к Антифрод-терминалу
смарт-карты. Принимает на вход указатель на структуру INIT_PIN_ARGUMENTS, в которой
заданы параметры инициализации (с подтверждениембез подтверждения, английскийрусский язык).JC_CTRL_PIN_VERIFY – запрос PIN-кода пользователя для подключённой к Антифрод-терминалу
смарт-карты. Входные и выходные данные отсутствуют. В случае отказа или бездействия пользователя
в течение заданного интервала времени функция C_jcCtrl возвращает код CKR_FUNCTION_REJECTED (0x00000200).JC_CTRL_SET_MOUNT_INFO – установить точку монтирования для JaCarta MicroSD. В качестве аргументов использует
строку с абсолютным путем до точки монтирования JaCarta MicroSD и длину этой строки.JC_CTRL_GET_MOUNT_INFO – получить точку монтирования для JaCarta MicroSD. В качестве аргументов использует
строку с абсолютным путем до точки монтирования JaCarta MicroSD и длину этой строки.JC_CTRL_GET_ISD_DATA – получить идентификатор модели апплета и дату производства.JC_CTRL_ENABLE_SM – включить шифрование APDU-команд в рамках защищенной сессии для данного апплета.JC_CTRL_DISABLE_SM – выключить шифрование APDU-команд в рамках защищенной сессии для данного апплета.JC_CTRL_PKI_SET_COMPLEXITY – установка параметров персонализации для аплета Laser. Принимает на вход указатель
на структуру JCCTRL_PersonalizationData.JC_CTRL_INIT_CT1_PRNG – инициализировать генератор псевдослучайных чисел в апплете Криптотокен. Метод выполняется
только в режиме пользователя.JC_CTRL_DO_TESTS_CT1_CT2 – выполнить внутренние тесты в апплете Криптотокен. Метод выполняется только в
режиме пользователя.JC_CTRL_PKI_GET_COMPLEXITY – получение параметров персонализации для апплета Laser. Заполняет структуру
JCCTRL_PersonalizationData текущими параметрами персонализации.JC_CTRL_WIPE_CARD – очистка содержимого карты.JC_CTRL_BIOMETRIC_GET_SUPPORTED – получение структуры JC_BIO_SUPPORT_INFO с информацией о
поддерживаемых картой биометричесих возможностях.JC_CTRL_BIOMETRIC_GET_AUTHTYPE – получение структуры JC_CTRL_AUTHTYPE с информацией о поддерживаемых
картой механизмах аутентификации.JC_CTRL_BIOMETRIC_GET_ENROLLED_FINGERS_INDEXES – получение идентификаторов зарегистрированных отпечатков
(0x01-0x0A) от 0 до 10 байт.JC_CTRL_BIOMETRIC_GET_PUBLIC_DATA – получение публичной биометрической информации об отпечатки по его индексу.
Индекс задается первым байтом pData. Результат помещается в pData.JC_CTRL_BIOMETRIC_ENROLL_FINGER – регистрация отпечатка на карте, pData должен содержать указать на
структуру JC_CTRL_BIOMETRIC_ENROLL_DATA.JC_CTRL_BIOMETRIC_DELIST_FINGER – удаление отпечатка по индексу, первый байт pData должен содержать индекс
отпечатка.JC_CTRL_BIOMETRIC_SET_LIBRARY – установка пути к биометрической библиотеке. По умолчанию используется
jcBIO.dll в текущем каталоге.Журнал операций представляет собой XML-документ, фиксированный по размеру и структуре, следующего формата:
<Object>
<VendorName>VendorName</VendorName>
<ReaderId>ReaderId</ReaderId>
<FirmwareVersion>FirmwareVersion</FirmwareVersion>
<ReaderSerialNr>ReaderSerialNr</ReaderSerialNr>
<SecureLogs>
<SecureLog id="01">SecureLog 01</SecureLog>
<SecureLog id="02">SecureLog 02</SecureLog>
<SecureLog id="03">SecureLog 03</SecureLog>
<SecureLog id="04">SecureLog 04</SecureLog>
</SecureLogs>
</Object>
В этом xml-документе:
VendorName – производитель терминала (Aladdin R.D.);ReaderId – модель терминала (например, JCR-770);FirmwareVersion – версия встроенного программного обеспечения терминала
(например, 17.15.055.15.000);ReaderSerialNr – серийный номер Антифрод-терминала в шестнадцатеричном
представлении (например, 0B52000209189243);SecureLog 01 – представленный в кодировке Base64 хэш по SHA-1 от
конкатенации всех заголовков APDU-команд, выполнявшихся в SWYX-режиме, и
двух последних байт APDU-ответов.SecureLog 02 – представленный в кодировке Base64 хэш по SHA-1 отображенных на экране терминала данных. Данные
отображаются с помощью операции JC_CTRL_SWYX_DISPLAY. В логе последовательно учитываются только данные,
отображенные в SWYX-режиме. Хэш считается последовательно от этих данных.SecureLog 03 – представленный в кодировке Base64 хэш по SHA-1 тел всех
APDU-команд, выполненых в SWYX-режиме.SecureLog 04 – представленный в кодировке Base64 хэш по SHA-1 поля
данных последнего APDU-ответа в SWYX-режиме. Если последней операцией, выполняемой в SWYX-режиме, была
операция подписи документа, то в этом значении содержится хэш от этой подписи.