CK_C_INITIALIZE_ARGS
typedef struct CK_C_INITIALIZE_ARGS {
CK_CREATEMUTEX CreateMutex;
CK_DESTROYMUTEX DestroyMutex;
CK_LOCKMUTEX LockMutex;
CK_UNLOCKMUTEX UnlockMutex;
CK_FLAGS flags;
CK_VOID_PTR pReserved;
} CK_C_INITIALIZE_ARGS;
Поддерживаются следующие флаги (flags):
CKF_LIBRARY_CANT_CREATE_OS_THREADS(0x00000001) –True, если потоки исполнения приложения, которые осуществляют вызовы к библиотеке, не могут использовать родные вызовы операционной системы для создания новых потоков.False– в обратном случае.CKF_OS_LOCKING_OK(0x00000002) –True, если библиотека может использовать родную систему потоков операционной системы для захвата ресурса.False– в противном случае.CKF_DEVELOPER_MODE(0x80000000) – установка этого флага ускоряет выполнение функций:C_Login()иC_Sign()/C_SignUpdate(). Ускорение обеспечивается за счет отключения проверки целостности и корректности функционирования. Рекомендуется использовать только для целей разработки и тестирования.
Используется в:
CK_INFO_PTR
Указатель на структуру CK_INFO.
typedef CK_INFO CK_PTR CK_INFO_PTR;
CK_INFO
typedef struct CK_INFO {
CK_VERSION cryptokiVersion;
CK_UTF8CHAR manufacturerID[32];
CK_FLAGS flags;
CK_UTF8CHAR libraryDescription[32];
CK_VERSION libraryVersion;
} CK_INFO;
CK_VERSION cryptokiVersion
Версия стандарта PKCS #11, с которым совместима библиотека Cryptoki.
CK_UTF8CHAR manufacturerID(32)
Идентификатор, определяющий разработчика библиотеки Cryptoki. Всегда принимает значение: Aladdin R.D..
CK_FLAGS flags
Зарезервированное поле флагов. Должно принимать значение 0.
CK_UTF8CHAR libraryDescription(32)
Описание библиотеки. Всегда принимает значение: JaCarta PKCS#11 module.
CK_VERSION libraryVersion
Версия библиотеки jcPKCS11-2.
Используется в:
CK_ATTRIBUTE
Указатель на структуру CK_ATTRIBUTE.
typedef CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR;
CK_ATTRIBUTE
typedef struct CK_ATTRIBUTE {
CK_ATTRIBUTE_TYPE type;
CK_VOID_PTR pValue;
CK_ULONG ulValueLen;
} CK_ATTRIBUTE;
CK_ATTRIBUTE_TYPE type
Тип атрибута.
CK_VOID_PTR pValue
Значение атрибута.
CK_ULONG ulValueLen
Размер значения.
Используется в:
CK_MECHANISM
Указатель на структуру CK_MECHANISM.
typedef CK_MECHANISM CK_PTR CK_MECHANISM_PTR;
CK_MECHANISM
typedef struct CK_MECHANISM {
CK_MECHANISM_TYPE mechanism;
CK_VOID_PTR pParameter;
CK_ULONG ulParameterLen;
} CK_MECHANISM;
CK_MECHANISM_TYPE mechanism
Тип механизма.
CK_VOID_PTR pParameter
Указатель на параметр, если требуется.
CK_ULONG ulParameterLen
Размер параметра в байтах.
Используется в:
CK_MECHANISM_INFO
Указатель на структуру CK_MECHANISM_INFO.
typedef CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR;
CK_MECHANISM_INFO
typedef struct CK_MECHANISM_INFO {
CK_ULONG ulMinKeySize;
CK_ULONG ulMaxKeySize;
CK_FLAGS flags;
} CK_MECHANISM_INFO;
CK_ULONG ulMinKeySize
Минимальный размер ключа для механизма.
CK_ULONG ulMaxKeySize
Максимальный размер ключа для механизма.
CK_FLAGS flags
Флаги, определяющие возможности механизма.
Поле flags может содержать следующие флаги:
CKF_HW(0x00000001) – аппаратно реализуемый механизм.CKF_ENCRYPT(0x00000100) – механизм зашифрования данных.CKF_DECRYPT(0x00000200) – механизм расшифрования данных.CKF_DIGEST(0x00000400) – механизм хэширования.CKF_SIGN(0x00000800) – механизм формирования ЭП и имитовставки.CKF_SIGN_RECOVER(0x00001000) – для поддерживаемых библиотекой Cryptoki механизмов этот флаг не установлен.CKF_VERIFY(0x00002000) – механизм проверки ЭП и имитовставки.CKF_VERIFY_RECOVER(0x00004000) – для поддерживаемых библиотекой Cryptoki механизмов этот флаг не установлен.CKF_GENERATE(0x00008000) – механизм выработки симметричных ключей.CKF_GENERATE_KEY_PAIR(0x00010000) – механизм генерации ключевой пары.CKF_WRAP(0x00020000) – механизм экспорта симметричных ключей.CKF_UNWRAP(0x00040000) – механизм импорта зашифрованных криптографических ключей.CKF_DERIVE(0x00080000) – механизм выработки общего ключа.CKF_EXTENSION(0x80000000) – для поддерживаемых библиотекой Cryptoki механизмов этот флаг не установлен.
Используется в:
CK_SLOT_INFO
Указатель на структуру CK_SLOT_INFO.
typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR;
CK_SLOT_INFO
typedef struct CK_SLOT_INFO {
CK_UTF8CHAR slotDescription[64];
CK_UTF8CHAR manufacturerID[32];
CK_FLAGS flags;
CK_VERSION hardwareVersion;
CK_VERSION firmwareVersion;
} CK_SLOT_INFO;
CK_UTF8CHAR slotDescription(64)
Строка символов с описанием слота.
CK_UTF8CHAR manufacturerID(32)
Идентификатор, определяющий разработчика библиотеки Cryptoki. Поле идентификатора принимает значение Aladdin R.D..
CK_FLAGS flags
Битовые флаги, определяющие возможности и состояние устройства.
CK_VERSION hardwareVersion
Номер аппаратной версии слота.
CK_VERSION firmwareVersion
Номер версии прошивки слота.
Поле flags может содержать следующие флаги:
CKF_TOKEN_PRESENT(0x00000001) –True, если в слоте наличествует токен.CKF_REMOVABLE_DEVICE(0x00000002) –True, если ридер поддерживает извлекаемые устройства.CKF_HW_SLOT(0x00000004) –True, если слот аппаратный.
Используется в:
CK_TOKEN_INFO
Указатель на структуру CK_TOKEN_INFO.
typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR;
CK_TOKEN_INFO
typedef struct CK_TOKEN_INFO {
CK_UTF8CHAR label[32];
CK_UTF8CHAR manufacturerID[32];
CK_UTF8CHAR model[16];
CK_CHAR serialNumber[16];
CK_FLAGS flags;
CK_ULONG ulMaxSessionCount;
CK_ULONG ulSessionCount;
CK_ULONG ulMaxRwSessionCount;
CK_ULONG ulRwSessionCount;
CK_ULONG ulMaxPinLen;
CK_ULONG ulMinPinLen;
CK_ULONG ulTotalPublicMemory;
CK_ULONG ulFreePublicMemory;
CK_ULONG ulTotalPrivateMemory;
CK_ULONG ulFreePrivateMemory;
CK_VERSION hardwareVersion;
CK_VERSION firmwareVersion;
CK_CHAR utcTime[16];
} CK_TOKEN_INFO;
CK_UTF8CHAR label(32)
Назначаемая приложением метка токена. Присваивается в момент инициализации.
CK_UTF8CHAR manufacturerID(32)
Идентификатор, определяющий разработчика библиотеки Cryptoki. Поле идентификатора принимает значение Aladdin R.D..
CK_UTF8CHAR model(16)
Модель устройства. Для поддерживаемых Cryptoki-библиотекой апплетов/устройств это поле принимает следующие значения:
JaCarta GOST 2.0– для приложения GOST (макросJC_MODEL_CRYPTOTOKEN_2);JaCarta Laser– для приложения PKI (макросJC_MODEL_LASER);JaCarta DS– для приложения LT (макросJC_MODEL_DATASTORE);
CK_CHAR serialNumber(16)
Серийный номер.
CK_FLAGS flags
Битовые флаги, определяющие возможности и состояние устройства.
CK_ULONG ulMaxSessionCount
Максимальное количество сеансов работы одного приложения с устройством. Для поддерживаемых Cryptoki-библиотекой устройств это поле принимает предусмотренное стандартом PKCS #11 значение CK_EFFECTIVELY_INFINITE.
CK_ULONG ulSessionCount
Количество открытых сеансов работы данного приложения с устройством. Для поддерживаемых Cryptoki-библиотекой устройств это поле принимает предусмотренное стандартом PKCS #11 значение CK_UNAVAILABLE_INFORMATION.
CK_ULONG ulMaxRwSessionCount
Максимальное количество сеансов одного приложения для чтения и записи в устройство. Для поддерживаемых Cryptoki-библиотекой устройств это поле принимает предусмотренное стандартом PKCS #11 значение CK_EFFECTIVELY_INFINITE.
CK_ULONG ulRwSessionCount
Количество открытых в данный момент данным приложением сеансов для чтения и записи. Для поддерживаемых Cryptoki-библиотекой устройств это поле принимает предусмотренное стандартом PKCS #11 значение CK_UNAVAILABLE_INFORMATION.
CK_ULONG ulMaxPinLen
Максимальная длина PIN-кода в байтах. Для поддерживаемых Cryptoki-библиотекой устройств это поле может принимать значение 16 или 32 в зависимости от апплета.
CK_ULONG ulMinPinLen
Минимальная длина PIN-кода в байтах. Для поддерживаемых Cryptoki-библиотеки устройств это поле может принимать значение 4 или 6 в зависимости от апплета.
CK_ULONG ulTotalPublicMemory
Согласно стандарту PKCS #11 в это поле должен записываться общий размер памяти, который может быть выделен для хранения публичных объектов. В поддерживаемых Cryptoki-библиотекой устройствах для хранения публичных и приватных объектов используется одна и та же память. Текущая версия модуля присваивает этому полю предусмотренное стандартом PKCS #11 значение CK_UNAVAILABLE_INFORMATION.
CK_ULONG ulFreePublicMemory
Согласно стандарту PKCS #11 в это поле должен записываться размер памяти, доступной для хранения публичных объектов. В поддерживаемых Cryptoki-библиотекой устройствах для хранения публичных и приватных объектов используется одна и та же память. Поэтому в данное поле записывается количество байтов памяти, доступной как для приватных, так и для публичных объектов. При этом, если размер доступной памяти больше 32 КБ, поле принимает значение 32767.
CK_ULONG ulTotalPrivateMemory
Согласно стандарту PKCS #11, в это поле должен записываться общий размер памяти, которая может быть выделена для хранения приватных объектов. В поддерживаемых Cryptoki-библиотекой устройствах для хранения открытых и приватных объектов используется одна и та же память. Текущая версия модуля присваивает этому полю предусмотренное стандартом PKCS #11 значение CK_UNAVAILABLE_INFORMATION.
CK_ULONG ulFreePrivateMemory
Согласно стандарту PKCS #11, в это поле должен записываться размер памяти, доступной для хранения приватных объектов. В поддерживаемых Cryptoki-библиотекой устройствах для хранения публичных и приватных объектов используется одна и та же память. Поэтому в данное поле записывается количество байтов памяти, доступной как для приватных, так и для публичных объектов. При этом, если размер доступной памяти больше 32 КБ, поле принимает значение 32767.
CK_VERSION hardwareVersion
Номер версии устройства.
CK_VERSION firmwareVersion
Номер версии прошивки.
CK_CHAR utcTime(16)
Поддерживаемые Cryptoki-библиотекой устройства не содержат встроенных часов. Поле заполняется нулями.
Поле flags может содержать следующие флаги:
CKF_RNG(0x00000001) – флаг установлен, если в токене присутствует встроенный генератор случайных чисел. Всегда установлен.CKF_WRITE_PROTECTED(0x00000002) – флаг установлен, когда устройство работает в гостевом режиме, и не установлен, когда устройство работает в режимах, требующих ввода PIN-кода.CKF_LOGIN_REQIURED(0x00000004) – флаг установлен, если выполнение некоторых криптографических функций требует, чтобы пользователь был залогинен. Всегда установлен.CKF_USER_PIN_INITIALIZED(0x00000008) – флаг установлен, если инициализирован PIN-код пользователя, и не установлен в противном случае.CKF_RESTORE_KEY_NOT_NEEDED(0x00000020) – установлен, если успешное сохранение состояния криптографических операций сеанса всегда содержит все ключи, необходимые для восстановления сессии. Всегда не установлен.CKF_CLOCK_ON_TOKEN(0x00000040) – флаг установлен, если в токене присутствуют встроенные аппаратные часы. Всегда не установлен.CKF_PROTECTED_AUTHENTICATION_PATH(0x00000100) – установлен, если токен поддерживает возможность аутентификации без ввода PIN-кода. Всегда не установлен.CKF_DUAL_CRYPTO_OPERATIONS(0x00000200) – флаг установлен, если токен поддерживает выполнение двух криптографических функций одновременно. Всегда не установлен.CKF_TOKEN_INITIALIZED(0x00000400) – установлен, если токен был инициализирован функциейC_InitToken(). Всегда установлен.CKF_SECONDARY_AUTHENTICATION(0x00000800) – флаг установлен, если токен поддерживает вторичную аутентификацию для приватных объектов ключей. Всегда не установлен.CKF_USER_PIN_COUNT_LOW(0x00010000) – флаг установлен, если со времени последней успешной попытки ввода PIN-кода пользователя была предпринята, по меньшей мере, одна неудачная попытка ввода этого PIN-кода, и не установлен в противном случае.CKF_USER_PIN_FINAL_TRY(0x00020000) – флаг установлен, если у пользователя осталась последняя попытка ввода PIN-кода, и не установлен в других случаях.CKF_USER_PIN_LOCKED(0x00040000) – флаг установлен, если PIN-код пользователя заблокирован, и не установлен, если PIN-код пользователя не заблокирован.CKF_USER_PIN_TO_BE_CHANGED(0x00080000) – установлен, если PIN-код пользователя установлен по умолчанию при инициализации или срок его действия истек, т.е. PIN-код необходимо изменить. Всегда не установлен.CKF_SO_PIN_COUNT_LOW(0x00100000) – флаг установлен, если со времени последней успешной попытки ввода PIN-кода администратора была предпринята, по меньшей мере, одна неудачная попытка ввода этого PIN-кода, и не установлен в противном случае.CKF_SO_PIN_FINAL_TRY(0x00200000) – флаг установлен, если у администратора осталась последняя попытка ввода PIN-кода, и не установлен в других случаях.CKF_SO_PIN_LOCKED(0x00400000) – флаг установлен, если PIN-код администратора заблокирован, и не установлен в противном случае.CKF_SO_PIN_TO_BE_CHANGED(0x00800000) – установлен, если PIN-код администратора установлен по умолчанию при инициализации или срок его действия истек, т.е. PIN-код необходимо изменить. Всегда не установлен.CKF_ERROR_STATE(0x01000000) – установлен, если токен не прошел самопроверку FIPS 140-2 и находится в состоянии ошибки. Всегда не установлен.
Используется в:
CK_SESSION_INFO
Указатель на структуру CK_SESSION_INFO.
typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR;
CK_SESSION_INFO
typedef struct CK_SESSION_INFO {
CK_SLOT_ID slotID;
CK_STATE state;
CK_FLAGS flags;
CK_ULONG ulDeviceError;
} CK_SESSION_INFO;
CK_SLOT_ID slotID
Идентификатор слота.
CK_STATE state
Состояние сеанса.
CK_FLAGS flags
Флаги, определяющие тип сессии.
CK_ULONG ulDeviceError
Код ошибки, определяемый криптографическим устройством. Не поддерживается.
Поле flags может содержать следующие флаги:
CKF_RW_SESSION(0x00000002) – установлен, если сеанс поддерживает и чтение, и запись. Не установлен, если сеанс поддерживает только чтение.CKF_SERIAL_SESSION(0x00000004) – этот флаг добавлен для обратной совместимости и должен быть всегда установлен.
Используется в:
JC_ISD_DATA
Указатель на структуру JC_ISD_DATA.
typedef JC_ISD_DATA CK_PTR JC_ISD_DATA_PTR;
JC_ISD_DATA
typedef struct JC_ISD_DATA {
CK_UTF8CHAR model[32];
CK_BYTE manufacturingDate[8];
} JC_ISD_DATA;
CK_UTF8CHAR model(32)
Название модели
CK_BYTE manufacturingDate(8)
Дата производства в формате ГГГГММДД.
Используется в:
JC_TOKEN_PROPERTIES
Указатель на структуру JC_TOKEN_PROPERTIES.
typedef JC_TOKEN_PROPERTIES CK_PTR JC_TOKEN_PROPERTIES_PTR;
JC_TOKEN_PROPERTIES
typedef struct JC_TOKEN_PROPERTIES {
CK_BYTE_PTR pAttr;
CK_ULONG ulAttrSize;
CK_BYTE_PTR pJaCartaTag;
CK_ULONG ulJaCartaTagSize;
CK_BYTE_PTR pSerialNumber;
CK_ULONG ulSerialNumberSize;
CK_ULONG ulManufactureDate;
CK_ULONG ulAppletCount;
JC_APPLET_TYPE_PTR pApplets;
} JC_TOKEN_PROPERTIES;
CK_BYTE_PTR pAttr
Массив атрибутов.
CK_ULONG ulAttrSize
Размер массива атрибутов в байтах.
CK_BYTE_PTR pJaCartaTag
Тег считывателя.
CK_ULONG ulJaCartaTagSize
Размер тега в байтах.
CK_BYTE_PTR pSerialNumber
Серийный номер считывателя.
CK_ULONG ulSerialNumberSize
Размер серийного номера считывателя в байтах.
CK_ULONG ulManufactureDate
Дата производства в секундах начиная с 01.01.1970.
CK_ULONG ulAppletCount
Количество апплетов, установленных на токене.
JC_APPLET_TYPE_PTR pApplets
Типы приложений (апплетов). Возможные значения:
JC_APPLET_TYPE_CRYPTO_TOKEN(1) – приложение Криптотокен;JC_APPLET_TYPE_CRYPTO_TOKEN_2(2) – приложение GOST;JC_APPLET_TYPE_LASER(3) – приложение PKI;JC_APPLET_TYPE_DATA_STORE(4) – приложение LT;JC_APPLET_TYPE_FKH(5) – FKH;JC_APPLET_TYPE_PRO_JAVA(6) – приложение PRO JavaJC_APPLET_TYPE_PRO(7) – приложение PROJC_APPLET_TYPE_VASCO_CARDLESS(8) – Антифрод-терминал в бескарточном режимеJC_APPLET_TYPE_WEBPASS(9) – приложение Webpass.
Используется в:
JC_VERSION_INFO
Указатель на структуру JC_VERSION_INFO.
typedef JC_VERSION_INFO CK_PTR JC_VERSION_INFO_PTR;
JC_VERSION_INFO
Версия библиотеки.
typedef struct JC_VERSION_INFO {
CK_ULONG ulMajor;
CK_ULONG ulMinor;
CK_ULONG ulRelease;
CK_ULONG ulBuild;
} JC_VERSION_INFO;
CK_ULONG ulMajor
Главная версия библиотеки.
CK_ULONG ulMinor
Дополнительная версия библиотеки.
CK_ULONG ulRelease
Номер релиза.
CK_ULONG ulBuild
Номер сборки.
Используется в:
CK_GOSTR3410_DERIVE_PARAMS
Параметры для выработки ключа согласования.
typedef struct CK_GOSTR3410_DERIVE_PARAMS {
CK_EC_KDF_TYPE kdf;
CK_BYTE_PTR pPublicData;
CK_ULONG ulPublicDataLen;
CK_BYTE_PTR pUKM;
CK_ULONG ulUKMLen;
} CK_GOSTR3410_DERIVE_PARAMS;
CK_EC_KDF_TYPE kdf
Идентификатор используемой диверсификации ключа. Может принимать следующие значения:
CKD_NULL– Диверсификация ключа не применяется.CKD_CPDIVERSIFY_KDF– Диверсификация ключа выполняется по алгоритму, определённому в RFC 4357 (раздел 6.5).
CK_BYTE_PTR pPublicData
указатель на буфер, содержащий ключ проверки ЭП получателя. Ключ представлен в виде последовательной записи координат точки X и Y. Каждая координата представляет собой вектор длиной 32 байта в порядке от младшего к старшему (little-endian).
CK_ULONG ulPublicDataLen
Длина буфера, содержащего открытый ключ получателя. Указывается в байтах, должна равняться 64.
CK_BYTE_PTR pUKM
Указатель на буфер с данными UKM в представлении от младшего к старшему (little-endian).
CK_ULONG ulUKMLen
Размер буфера для UKM. Должен принимать значение 8.
CK_GOSTR3410_KEY_WRAP_PARAMS
Параметры экспорта ключа.
typedef struct CK_GOSTR3410_KEY_WRAP_PARAMS {
CK_BYTE_PTR pWrapOID;
CK_ULONG ulWrapOIDLen;
CK_BYTE_PTR pUKM;
CK_ULONG ulUKMLen;
CK_OBJECT_HANDLE hKey;
} CK_GOSTR3410_KEY_WRAP_PARAMS;
CK_BYTE_PTR pWrapOID
Объектный идентификатор (OID) для обозначения параметров создания общего ключа.
CK_ULONG ulWrapOIDLen
Длина объектного идентификатора.
CK_BYTE_PTR pUKM
Указатель на буфер с данными UKM в представлении от младшего к старшему (little-endian). Если принимает значение NULL_PTR, используется случайное значение UKM. При экспорте виртуального секретного ключа параметр pUKM не передаётся.
CK_ULONG ulUKMLen
Размер буфера для UKM. Должен принимать значение 8.
CK_OBJECT_HANDLE hKey
Указатель на исходный ключ.
CK_ECDH1_DERIVE_PARAMS
Параметры механизм согласования ключей CKM_GOST_KEG
typedef struct CK_ECDH1_DERIVE_PARAMS {
CK_EC_KDF_TYPE kdf;
CK_ULONG ulSharedDataLen;
CK_BYTE_PTR pSharedData;
CK_ULONG ulPublicDataLen;
CK_BYTE_PTR pPublicData;
} CK_ECDH1_DERIVE_PARAMS;
typedef CK_ECDH1_DERIVE_PARAMS CK_PTR CK_ECDH1_DERIVE_PARAMS_PTR;
CK_EC_KDF_TYPE kdf
Механизм диверсификации. В структуре не используется и должен быть установлен в CKD_NULL
CK_ULONG ulSharedDataLen
Длина используемой величины UKM в байтах
CK_BYTE_PTR pSharedData
Указатель на величину UKM
CK_ULONG ulPublicDataLen
Длина ключа проверки ЭП в байтах (64 или 128 байт).
CK_BYTE_PTR pPublicData
Указатель на ключ проверки ЭП.