Структуры

CK_C_INITIALIZE_ARGS

Используется функцией C_Initialize().

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(). Ускорение обеспечивается засчет отключения проверки целостности и корректности функционирования. Рекомендуется использовать только для целей разработки и тестирования.

    Предупреждение

    Данный флаг поддерживается только апплетом Криптотокен.

  • CKF_DISABLE_CRYPTO_TOKEN (0x00000004) – установка этого флага отключает работу с апплетом Криптотокен.

  • CKF_DISABLE_CRYPTO_TOKEN2 (0x00000008) – установка этого флага отключает работу с апплетом Криптотокен-2.

  • CKF_DISABLE_DATASTORE (0x00000010) – установка этого флага отключает работу с апплетом Datastore.

  • CKF_DISABLE_LASER (0x00000020) – установка этого флага отключает работу с апплетом Laser.

CK_INFO

Используется функцией C_GetInfo().

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. В текущей версии библиотеки это поле принимает значение v2.30.

CK_UTF8CHAR manufacturerID(32)

Идентификатор, определяющий разработчика библиотеки Cryptoki. Поле идентификатора принимает значение Aladdin R.D..

CK_FLAGS flags

Зарезервированное поле флагов. Должно принимать значение 0.

CK_UTF8CHAR libraryDescription(32)

Описание библиотеки Cryptoki: JaCarta PKCS #11 Module.

CK_VERSION libraryVersion

Версия библиотеки Cryptoki: v1.0.

CK_FUNCTION_LIST

Используется функцией C_GetFunctionList().

CK_FUNCTION_LIST
typedef struct CK_FUNCTION_LIST {
  CK_VERSION version;
  CK_C_Initialize C_Initialize;
  CK_C_Finalize C_Finalize;
  CK_C_GetInfo C_GetInfo;
  CK_C_GetFunctionList C_GetFunctionList;
  CK_C_GetSlotList C_GetSlotList;
  CK_C_GetSlotInfo C_GetSlotInfo;
  CK_C_GetTokenInfo C_GetTokenInfo;
  CK_C_GetMechanismList C_GetMechanismList;
  CK_C_GetMechanismInfo C_GetMechanismInfo;
  CK_C_InitToken C_InitToken;
  CK_C_InitPIN C_InitPIN;
  CK_C_SetPIN C_SetPIN;
  CK_C_OpenSession C_OpenSession;
  CK_C_CloseSession C_CloseSession;
  CK_C_CloseAllSessions C_CloseAllSessions;
  CK_C_GetSessionInfo C_GetSessionInfo;
  CK_C_GetOperationState C_GetOperationState;
  CK_C_SetOperationState C_SetOperationState;
  CK_C_Login C_Login;
  CK_C_Logout C_Logout;
  CK_C_CreateObject C_CreateObject;
  CK_C_CopyObject C_CopyObject;
  CK_C_DestroyObject C_DestroyObject;
  CK_C_GetObjectSize C_GetObjectSize;
  CK_C_GetAttributeValue C_GetAttributeValue;
  CK_C_SetAttributeValue C_SetAttributeValue;
  CK_C_FindObjectsInit C_FindObjectsInit;
  CK_C_FindObjects C_FindObjects;
  CK_C_FindObjectsFinal C_FindObjectsFinal;
  CK_C_EncryptInit C_EncryptInit;
  CK_C_Encrypt C_Encrypt;
  CK_C_EncryptUpdate C_EncryptUpdate;
  CK_C_EncryptFinal C_EncryptFinal;
  CK_C_DecryptInit C_DecryptInit;
  CK_C_Decrypt C_Decrypt;
  CK_C_DecryptUpdate C_DecryptUpdate;
  CK_C_DecryptFinal C_DecryptFinal;
  CK_C_DigestInit C_DigestInit;
  CK_C_Digest C_Digest;
  CK_C_DigestUpdate C_DigestUpdate;
  CK_C_DigestKey C_DigestKey;
  CK_C_DigestFinal C_DigestFinal;
  CK_C_SignInit C_SignInit;
  CK_C_Sign C_Sign;
  CK_C_SignUpdate C_SignUpdate;
  CK_C_SignFinal C_SignFinal;
  CK_C_SignRecoverInit C_SignRecoverInit;
  CK_C_SignRecover C_SignRecover;
  CK_C_VerifyInit C_VerifyInit;
  CK_C_Verify C_Verify;
  CK_C_VerifyUpdate C_VerifyUpdate;
  CK_C_VerifyFinal C_VerifyFinal;
  CK_C_VerifyRecoverInit C_VerifyRecoverInit;
  CK_C_VerifyRecover C_VerifyRecover;
  CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
  CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
  CK_C_SignEncryptUpdate C_SignEncryptUpdate;
  CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
  CK_C_GenerateKey C_GenerateKey;
  CK_C_GenerateKeyPair C_GenerateKeyPair;
  CK_C_WrapKey C_WrapKey;
  CK_C_UnwrapKey C_UnwrapKey;
  CK_C_DeriveKey C_DeriveKey;
  CK_C_SeedRandom C_SeedRandom;
  CK_C_GenerateRandom C_GenerateRandom;
  CK_C_GetFunctionStatus C_GetFunctionStatus;
  CK_C_CancelFunction C_CancelFunction;
  CK_C_WaitForSlotEvent C_WaitForSlotEvent;
} CK_FUNCTION_LIST;

Структура содержит указатели на все методы Cryptoki API.

CK_ATTRIBUTE

Используется функциями:

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 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

Используется функцией C_GetMechanismInfo().

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

Используется функцией C_GetSlotInfo().

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

Используется функцией C_GetTokenInfo().

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-библиотекой апплетов/устройств это поле принимает следующие значения:

  • eToken GOST для апплета Криптотокен,
  • JaCarta Laser для апплета Laser,
  • JaCarta DS для апплета Datastore.
  • JaCarta для апплета Laser в случае, если он инициализирован с использованием Единого клиента JaCarta.
  • CNS для апплета Laser в случае, если он инициализирован с использованием стороннего ПО.
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 (0x00000001) – флаг установлен, когда устройство работает в гостевом режиме, и не установлен, когда устройство работает в режимах, требующих ввода 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

Используется функцией C_GetSessionInfo().

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) – этот флаг добавлен для обратной совместимости и должен быть всегда установлен.

CK_GOSTR3410_DERIVE_PARAMS

Используется функцией C_GenerateKey().

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;
kdf

Идентификатор используемой диверсификации ключа.

pPublicData

указатель на буфер, содержащий ключ проверки ЭП получателя. Ключ представлен в виде последовательной записи координат точки X и Y. Каждая координата представляет собой вектор длиной 32 байта в порядке от младшего к старшему (little-endian).

ulPublicDataLen

Длина буфера, содержащего открытый ключ получателя. Указывается в байтах, должна равняться 64.

pUKM

Указатель на буфер, содержащий параметр UKM (RFC 4357) в представлении от младшего к старшему (little-endian).

ulUKMLen

Длина буфера, содержащего UKM. Указывается в байтах, должна равняться 8.

Поле kdf может принимать следующие параметры:

  • CKD_NULL – общий ключ выводится по алгоритму, описанному в подразделе 5.2 RFC 4357.
  • CKD_CPDIVERSIFY_KDF – при выводе общего ключа сначала применяется алгоритм, описанный в подразделе 5.2 RFC 4357, а затем результат выполнения этого алгоритма подвергается диверсификации по алгоритму, описанному в подразделе 6.5 того же документа.

SWYX_PROPERTIES_RESPONSE

Используется функцией C_jcCtrl().

SWYX_PROPERTIES_RESPONSE
typedef struct SWYX_PROPERTIES_RESPONSE {
  CK_BYTE bDisplayType;
  CK_ULONG wLcdMaxCharacters;
  CK_ULONG wLcdMaxLines;
  CK_ULONG wGraphicMaxWidth;
  CK_ULONG wGraphicMaxHeight;
  CK_BYTE bGraphicColorDepth;
  CK_ULONG wMaxVirtualSize;
} SWYX_PROPERTIES_RESPONSE;
CK_BYTE bDisplayType

Тип экрана:

  • 0 – текстовый,
  • 1 – графический.
CK_ULONG wLcdMaxCharacters

Максимальное количество символов в одной строке.

CK_ULONG wLcdMaxLines

Максимальное количество строк.

CK_ULONG wGraphicMaxWidth

Ширина экрана в точках.

CK_ULONG wGraphicMaxHeight

Высота экрана в точках.

CK_BYTE bGraphicColorDepth

Цветность экрана:

  • 1 – черно-белый,
  • 2 – градации серого,
  • 4 – цветной.
CK_ULONG wMaxVirtualSize

Максимальное количество символов, одновременно помещающихся на экране.

JC_CTRL_SWYX_DISPLAY

Используется функцией C_jcCtrl().

JC_CTRL_SWYX_DISPLAY
typedef struct JC_CTRL_SWYX_DISPLAY {
  CK_BYTE bSwyxFunction;
  CK_BYTE bTimeout;
  CK_ULONG wLangId;
  CK_ULONG wLength4;
  CK_BYTE abB64UTF8[];
} SWYX_DISPLAY_COMMAND;
CK_BYTE bSwyxFunction

Байт, принимающий значение 0x02.

CK_BYTE bTimeout

Время ожидания терминалом нажатия пользователем кнопки OK или Отмена, выраженное числом 5-секундных интервалов, в случае бесконечного времени ожидания bTimeout=0x00.

CK_ULONG wLangId

Двухбайтовый идентификатор языка (например, для русского языка wLangId = 0x0419, см. USB Language Identifiers [PDF]) в представлении от младшего к старшему (little endian).

CK_ULONG wLength

Длина массива abB64UTF8[] в байтах, выраженная в представлении от младшего к старшему (little endian).

CK_BYTE abB64UTF8()

Байтовый массив, представляющий собой отображённый на экране Антифрод-терминала текст, переведённый из кодировки UTF-8 в кодировку Base64.

SWYX_DISPLAY_ARGUMENTS

Используется функцией C_jcCtrl().

SWYX_DISPLAY_ARGUMENTS
typedef struct SWYX_DISPLAY_ARGUMENTS {
  CK_BYTE swyxDisplayTimeout;
  CK_UTF8CHAR_PTR text;
  CK_ULONG textLength;
} SWYX_DISPLAY_ARGUMENTS;
CK_BYTE swyxDisplayTimeout

Время ожидания терминалом нажатия пользователем кнопки OK или Отмена, выраженное числом 5 секундных интервалов, в случае бесконечного времени ожидания bTimeout=0x00.

CK_UTF8CHAR_PTR text

Текст для отображения на экране Антифрод-терминала в кодировке UTF-8 длиной от 5 до 400 символов.

CK_ULONG textLength

Длина текста.

Поле text должно быть задано в кодировке UTF-8.

JCCTRL_PersonalizationData

Используется функцией C_jcCtrl().

JCCTRL_PersonalizationData
struct JCCTRL_PersonalizationData
{
  uint8_t IsPersonalized;
  uint8_t UserMaxAttempts;
  uint8_t UserMaxUnblock;
  uint8_t AdminMaxAttempts;
  EUserPINType UserPinType;
  uint8_t UserMinChars;
  uint8_t UserMaxChars;
  uint8_t UserMinAlphaChars;
  uint8_t UserMinLowerChars;
  uint8_t UserMinUpperChars;
  uint8_t UserMinDigits;
  uint8_t UserMinNonAlphaChars;
  uint8_t UserPinHistorySize;
  uint8_t AdminIsChalResp;
  uint8_t AdminMinChars;
  uint8_t AdminMaxChars;
  uint8_t AdminMinAlphaChars;
  uint8_t AdminMinLowerChars;
  uint8_t AdminMinUpperChars;
  uint8_t AdminMinDigits;
  uint8_t AdminMinNonAlphaChars;
  uint32_t UserPINValidForSeconds;
  uint32_t UserPINExpiresAfterDays;
  uint8_t BioImageQuality;
  uint32_t BioPurpose;
  uint8_t BioMaxFingers;
  uint8_t DefaultFinger;
  EBioType BioType;
  uint8_t BioMaxUnblock;
  uint8_t UserMustChangeAfterUnlock;
  uint8_t UserMaxRepeatingPin;
  uint8_t UserMaxSequencePin;
  uint8_t AdminMaxRepeatingPin;
  uint8_t AdminMaxSequencePin;
  uint8_t UserMustChangeAfterFirstUse;
  ESecureMessagingMode SecureMessagingMode;
};
uint8_t IsPersonalized

Определяет статус персонализации апплета: 1 – апплет персонализирован, 0 – не персонализирован.

uint8_t UserMaxAttempts

Максимальное количество попыток ввода неправильного PIN-кода пользователя, до его блокировки (1-15).

uint8_t UserMaxUnblock

Максимальное количество разблокировок PIN-кода пользователя (0-15).

uint8_t AdminMaxAttempts

Максимальное количество попыток ввода неправильного PIN-кода администратора, до его блокировки (1-15).

EUserPINType UserPinType

Тип PIN-кода пользователя (см. EUserPINType).

uint8_t UserMinChars

Минимальное количество символов в PIN-коде пользователя.

uint8_t UserMaxChars

Максимальное количество символов в PIN-коде пользователя.

uint8_t UserMinAlphaChars

Минимальное количество символов латинского алфавита в PIN-коде пользователя.

uint8_t UserMinLowerChars

Минимальное количество символов латинского алфавита в нижнем регистре в PIN-коде пользователя.

uint8_t UserMinUpperChars

Минимальное количество символов латинского алфавита в верхнем регистре в PIN-коде пользователя.

uint8_t UserMinDigits

Минимальное количество цифр в PIN-коде пользователя.

uint8_t UserMinNonAlphaChars

Минимальное количество символов отличных от символов латинского алфавита в PIN-коде пользователя.

uint8_t UserPinHistorySize

Количество уникальных новых PIN-кодов пользователя, которое необходимо установить для возможности повторной установки старого PIN-кода пользователя (0-255).

uint8_t AdminIsChalResp

Использовать ли механизм challenge-response с ключом 3DES, вместо PIN-кода администратора (0-1). Параметры сложности PIN-кода неприменимы при значении этого параметра 1.

uint8_t AdminMinChars

Минимальное количество символов в PIN-коде администратора.

uint8_t AdminMaxChars

Максимальное количество символов в PIN-коде администратора.

uint8_t AdminMinAlphaChars

Минимальное количество символов латинского алфавита в PIN-коде администратора.

uint8_t AdminMinLowerChars

Минимальное количество символов латинского алфавита в нижнем регистре в PIN-коде администратора.

uint8_t AdminMinUpperChars

Минимальное количество символов латинского алфавита в верхнем регистре в PIN-коде администратора.

uint8_t AdminMinDigits

Минимальное количество цифр в PIN-коде администратора.

uint8_t AdminMinNonAlphaChars

Минимальное количество символов отличных от символов латинского алфавита в PIN-коде администратора.

uint32_t UserPINValidForSeconds

Время кеширования PIN-кода пользователя в секундах (0-9999).

uint32_t UserPINExpiresAfterDays

Время действия PIN-кода пользователя в днях (0-9999).

uint8_t BioImageQuality

Минимальное качество изображения отпечатка по умолчанию (0-100).

uint32_t BioPurpose

Значение FAR для биометрии по умолчанию (2861 1:100, 4396 1:1000, 5931 1:10000, 7466 1:100000, 9001 1:1000000).

uint8_t BioMaxFingers

Максимальное количество зарегистрированных отпечатков (1-10).

uint8_t DefaultFinger

Идентификатор пальца по умолчанию (1-10).

EBioType BioType

Тип биометрии.

uint8_t BioMaxUnblock

Максимальное количество разблокировок биометрии (0-15).

uint8_t UserMustChangeAfterUnlock

Требовать ли смены PIN-кода пользователя после его разблокировки (0-1).

uint8_t UserMaxRepeatingPin

Максимальное количество повторений одного символа в PIN-коде пользователя.

uint8_t UserMaxSequencePin

Максимальное количество последовательных повторений одного символа в PIN-коде пользователя.

uint8_t AdminMaxRepeatingPin

Максимальное количество повторений одного символа в PIN-коде администратора.

uint8_t AdminMaxSequencePin

Максимальное количество последовательных повторений одного символа в PIN-коде администратора.

uint8_t UserMustChangeAfterFirstUse

Пользователь должен сменить PIN-код после первого использования (0-1).

ESecureMessagingMode SecureMessagingMode

Режим обмена между токеном и компьютером (см. ESecureMessagingMode).

JC_BIO_SUPPORT_INFO

Используется функцией C_jcCtrl().

JC_BIO_SUPPORT_INFO
struct JC_BIO_SUPPORT_INFO
{
    CK_BBOOL m_BiometryEnabled;
    enum JC_CTRL_AUTHTYPE m_AuthType;
    CK_ULONG m_OptionalDataLength;
    CK_BYTE_PTR m_OptionalData;
};
CK_ULONG m_BiometryEnabled

Определяет, поддерживается ли биометрия.

enum JC_CTRL_AUTHTYPE m_AuthType

Тип аутентификации.

CK_ULONG m_OptionalDataLength

Длина дополнительных данных. Должна быть кратна трем.

CK_BYTE_PTR m_OptionalData

Указатель на дополнительные данные. Данные состоят из 0 и более 3-х байтовых последовательностей:

  1. Идентификатор реализации биометрии (JC_CTRL_BIOMETRY_TYPE),
  2. Используется или нет нативная реализация биометрии (01 если используется),
  3. Используется ли нативная реализация биометрии по умолчанию (01 если используется).

JC_CTRL_AUTHTYPE

Используется функцией C_jcCtrl().

JC_CTRL_AUTHTYPE
enum JC_CTRL_AUTHTYPE
{
    JC_CTRL_AUTHTYPE_PIN,
    JC_CTRL_AUTHTYPE_BIO,
    JC_CTRL_AUTHTYPE_PIN_OR_BIO,
    JC_CTRL_AUTHTYPE_PIN_AND_BIO
};
JC_CTRL_AUTHTYPE_PIN

Аутентификация посредством PIN-кода.

JC_CTRL_AUTHTYPE_BIO

Аутентификация посредством биометрии.

JC_CTRL_AUTHTYPE_PIN_OR_BIO

Аутентификация посредством PIN-кода или биометрии.

JC_CTRL_AUTHTYPE_PIN_AND_BIO

Аутентификация посредством PIN-кода и биометрии.

JC_CTRL_BIOMETRIC_ENROLL_DATA

Используется функцией C_jcCtrl().

JC_CTRL_BIOMETRIC_ENROLL_DATA
struct JC_CTRL_BIOMETRIC_ENROLL_DATA
{
    CK_BYTE m_FingerIndex;
    CK_BYTE * m_PublicData;
    CK_ULONG m_PublicDataLen;
    CK_BYTE * m_PrivateData;
    CK_ULONG m_PrivateDataLen;
    CK_BYTE * m_DeviceName;
    CK_ULONG m_DeviceNameLen;
};
CK_BYTE m_FingerIndex

Идентификатор пальца, где 1 – мизинец левой руки, 10 – мизинец правой руки.

CK_BYTE * m_PublicData

Публичные биометрические данные.

CK_ULONG m_PublicDataLen

Размер публичных биометрических данных.

CK_BYTE * m_PrivateData

Личные биометрические данные.

CK_ULONG m_PrivateDataLen

Размер личных биометрических данных.

CK_BYTE * m_DeviceName

Название устройства.

CK_ULONG m_DeviceNameLen

Размер названия устройства.

EUserPINType

Используется структурой JCCTRL_PersonalizationData.

EUserPINType
typedef enum
{
      UserPINTypeUndefined = 0x00,
      UserPINTypePIN = 0x01,
      UserPINTypeBio = 0x03,
      UserPINTypePINorBIO = 0x04,
      UserPINTypePINandBIO = 0x05
} EUserPINType;
UserPINTypeUndefined

Тип авторизации пользователя не определен.

UserPINTypePIN

Тип авторизации пользователя – PIN-код.

UserPINTypeBio

Тип авторизации пользователя – биометрия.

UserPINTypePINorBIO

Тип авторизации пользователя – PIN-код или биометрия.

UserPINTypePINandBIO

Тип авторизации пользователя – PIN-код и биометрия.

ESecureMessagingMode

Используется структурой JCCTRL_PersonalizationData.

ESecureMessagingMode
typedef enum
{
      SecureMessagingModeOFF = 0x00,
      SecureMessagingModeRSA = 0x01,
      SecureMessagingModeECC = 0x02
} ESecureMessagingMode;
SecureMessagingModeOFF

Зашифрование сообщений не происходит.

SecureMessagingModeRSA

Зашифрование сообщений происходит с использованием алгоритма RSA.

SecureMessagingModeECC

Зашифрование сообщений происходит с использованием алгоритма ECC.