Структуры

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

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

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

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

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

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

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

CK_ULONG ulPublicDataLen

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

CK_BYTE_PTR pUKM

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

CK_ULONG ulUKMLen

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

CK_GOSTR3410_KEY_WRAP_PARAMS

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 (RFC 4357) в представлении от младшего к старшему (little-endian).

CK_ULONG ulUKMLen

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

CK_OBJECT_HANDLE hKey

Указатель на исходный ключ.

AFT_GET_READER_VERSION_RESPONCE

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

AFT_GET_READER_VERSION_RESPONCE
typedef struct AFT_GET_READER_VERSION_RESPONCE {
  CK_CHAR m_OSVersion[4];
  CK_CHAR m_ApplicationVersion[4];
} AFT_GET_READER_VERSION_RESPONCE;
CK_CHAR m_OSVersion

Версия ОС Антифрод-терминала.

CK_CHAR m_ApplicationVersion

Версия приложения, установленного на терминале.

AFT_PIN_VERIFY_ARGUMENTS

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

AFT_PIN_VERIFY_ARGUMENTS
typedef struct AFT_PIN_VERIFY_ARGUMENTS {
  CK_ULONG m_AFTLanguage;
  CK_BYTE m_AFTTimeout;
} AFT_PIN_VERIFY_ARGUMENTS;
CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский. Язык, используемый Антифрод-терминалом для отображения приглашений пользователю.

CK_BYTE m_AFTTimeout

Тайм-аут ожидания ввода пользователя на Антифрод-терминале. Измеряется в секундах, 0 - тайм-аут по умолчанию, равен 60 сек.

AFT_PIN_VERIFY_RESPONCE

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

AFT_PIN_VERIFY_RESPONCE
typedef struct AFT_PIN_VERIFY_RESPONCE {
  CK_BYTE m_PIN[32];
} AFT_PIN_VERIFY_RESPONCE;
CK_BYTE m_PIN[32]

Запрошенный PIN-код.

AFT_SWYX_START_ARGUMENTS

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

AFT_SWYX_START_ARGUMENTS
typedef struct AFT_SWYX_START_ARGUMENTS {
  CK_BYTE m_bReference[8];
} AFT_SWYX_START_ARGUMENTS;
CK_BYTE m_bReference[8]

Идентификатор транзакции. В журнале операций Антифрод-терминала представлен в виде: <Reference>0123456789ABCDEF</Reference>. Записывается в журнал по окончании работы в SWYX-режиме для предотвращения атаки на повтор транзакции.

AFT_SWYX_DISPLAY_ARGUMENTS

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

AFT_SWYX_DISPLAY_ARGUMENTS
  typedef struct AFT_SWYX_DISPLAY_ARGUMENTS {
    CK_BYTE m_swyxDisplayTimeout;
    CK_ULONG m_AFTLanguage;
    CK_ULONG m_textLength;
    CK_BYTE m_DisplayIndex;
    CK_UTF8CHAR m_text[];
} AFT_SWYX_DISPLAY_ARGUMENTS;
CK_BYTE m_swyxDisplayTimeout

Тайм-аут подтверждения подписи пользователем на Антифрод-терминале. Измеряется в 5-секундных интервалах, 0 - бесконечный тайм-аут.

CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский. Язык, используемый Антифрод-терминалом для отображения приглашений пользователю.

CK_ULONG m_textLength

Длина текста, выводимого на экран Антифрод-терминала.

CK_BYTE m_DisplayIndex

Условный номер сообщения, отображаемого внизу экрана при запросе подписания:

  • 0 - “Sign=OK” (“Подписать=OK”, в зависимости от языка).
  • 1 - “Confirm=OK” (“Подтвердить=OK”, в зависимости от языка).

Необязательный параметр. По умолчанию значение 0.

CK_UTF8CHAR m_text[]

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

SWYX_PROPERTIES_RESPONSE

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

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 бита), 4 - цветной (4 бита).

CK_ULONG wMaxVirtualSize

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

AFT_PIN_MODIFY_ARGUMENTS

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

AFT_PIN_MODIFY_ARGUMENTS
typedef struct AFT_PIN_MODIFY_ARGUMENTS {
  CK_ULONG m_AFTLanguage;
  CK_BYTE m_AFTTimeout;
  CK_BYTE  m_Confirmation;
  CK_BYTE  m_Message1Idx;
  CK_BYTE  m_Message2Idx;
} AFT_PIN_MODIFY_ARGUMENTS;
CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский.

CK_BYTE m_AFTTimeout

Тайм-аут ожидания ввода пользователя на Антифрод-терминале. Измеряется в секундах, 0 - тайм-аут по умолчанию, равен 60 сек.

CK_BYTE m_Confirmation

0x01 - запросить подтверждение нового PIN-кода, 0x00 - не запрашивать.

CK_BYTE m_Message1Idx

Отображаемое на экране Антифрод-терминала сообщение при запросе на ввод пользователем PIN-кода.

CK_BYTE m_Message2Idx

Отображаемое на экране Антифрод-терминала сообщение при запросе на ввод пользователем PIN-кода.

Примечание

Подробнее об отображении на экране сообщений см. m_MessageIdx.

AFT_ENTER_ADMIN_PIN_ARGUMENTS

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

AFT_ENTER_ADMIN_PIN_ARGUMENTS
typedef struct AFT_ENTER_ADMIN_PIN_ARGUMENTS {
  CK_ULONG m_AFTLanguage;
  CK_BYTE m_AFTTimeout;
  CK_BYTE  m_Confirmation;
  CK_BYTE  m_Message1Idx;
  CK_BYTE  m_Message2Idx;
} AFT_ENTER_ADMIN_PIN_ARGUMENTS;
CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский.

CK_BYTE m_AFTTimeout

Тайм-аут ожидания ввода пользователя на Антифрод-терминале. Измеряется в секундах, 0 - тайм-аут по умолчанию, равен 60 сек.

CK_BYTE m_Confirmation

0x01 - запросить подтверждение нового PIN-кода, 0x00 - не запрашивать.

CK_BYTE m_Message1Idx

Отображаемое на экране Антифрод-терминала сообщение при запросе на ввод пользователем PIN-кода.

CK_BYTE m_Message2Idx

Отображаемое на экране Антифрод-терминала сообщение при запросе на ввод пользователем PIN-кода.

Примечание

Подробнее об отображении на экране сообщений см. m_MessageIdx.

AFT_SAVE_ADMIN_PIN_ARGUMENTS

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

AFT_SAVE_ADMIN_PIN_ARGUMENTS
typedef struct AFT_SAVE_ADMIN_PIN_ARGUMENTS {
  CK_ULONG m_AFTLanguage;
  CK_BYTE m_AFTTimeout;
  CK_BYTE  m_PINLength;
  CK_BYTE  m_PINvalue[];
} AFT_SAVE_ADMIN_PIN_ARGUMENTS;
CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский.

CK_BYTE m_AFTTimeout

Тайм-аут ожидания ввода пользователя на Антифрод-терминале. Измеряется в секундах, 0 - тайм-аут по умолчанию, равен 60 сек.

CK_BYTE m_PINLength

Длина PIN-кода.

CK_BYTE m_PINvalue[]

Значение PIN-кода.

AFT_INIT_CARD_ARGUMENTS

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

AFT_INIT_CARD_ARGUMENTS
typedef struct AFT_INIT_CARD_ARGUMENTS {
  CK_ULONG m_AFTLanguage;
  CK_BYTE m_AFTTimeout;
} AFT_INIT_CARD_ARGUMENTS;
CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский.

CK_BYTE m_AFTTimeout

Тайм-аут ожидания ввода пользователя на Антифрод-терминале. Измеряется в секундах, 0 - тайм-аут по умолчанию, равен 60 сек.

AFT_LOGIN_SO_ARGUMENTS

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

AFT_LOGIN_SO_ARGUMENTS
typedef struct AFT_LOGIN_SO_ARGUMENTS {
  CK_ULONG m_AFTLanguage;
  CK_BYTE m_AFTTimeout;
} AFT_LOGIN_SO_ARGUMENTS;
CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский.

CK_BYTE m_AFTTimeout

Тайм-аут ожидания ввода пользователя на Антифрод-терминале. Измеряется в секунднах, 0 - тайм-аут по умолчанию, равен 60 сек.

AFT_SET_USER_PIN_ARGUMENTS

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

AFT_SET_USER_PIN_ARGUMENTS
typedef struct AFT_SET_USER_PIN_ARGUMENTS {
  CK_ULONG m_AFTLanguage;
  CK_BYTE m_AFTTimeout;
} AFT_SET_USER_PIN_ARGUMENTS;
CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский.

CK_BYTE m_AFTTimeout

Тайм-аут ожидания ввода пользователя на Антифрод-терминале. Измеряется в секундах, 0 - тайм-аут по умолчанию, равен 60 сек.

AFT_VERIFY_PIN_ARGUMENTS

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

AFT_VERIFY_PIN_ARGUMENTS
typedef struct AFT_VERIFY_PIN_ARGUMENTS {
  CK_ULONG m_AFTLanguage;
  CK_BYTE m_AFTTimeout;
  CK_BYTE  m_MessageIdx;
} AFT_VERIFY_PIN_ARGUMENTS;
CK_ULONG m_AFTLanguage

Код языка. 0x0409 - английский, 0x0419 - русский.

CK_BYTE m_AFTTimeout

Тайм-аут ожидания ввода пользователя на Антифрод-терминале. Измеряется в секундах, 0 - тайм-аут по умолчанию, равен 60 сек.

CK_BYTE m_MessageIdx

Отображаемое на экране Антифрод-терминала сообщение при запросе на ввод пользователем PIN-кода.

Примечание

Подробнее об отображении на экране сообщений см. m_MessageIdx.

AFT_IS_CARDLESS_MODE_SUPPORTED_RESPONCE

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

AFT_IS_CARDLESS_MODE_SUPPORTED_RESPONCE
typedef struct AFT_IS_CARDLESS_MODE_SUPPORTED_RESPONCE {
  CK_BYTE m_CardlessSupport;
} AFT_IS_CARDLESS_MODE_SUPPORTED_RESPONCE;
CK_BYTE m_CardlessSupport

Поддержка бескарточного режима работы. 1 - поддерживается, 0 - не поддерживается.

m_MessageIdx

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

m_MessageIdx

Значение m_MessageIdx определяет сообщение, которое выводится на экран терминала при запросе на ввод или подтверждение пользователем PIN-кода (операции AFT_ENTER_ADMIN_PIN, AFT_VERIFY_PIN и AFT_PIN_MODIFY). m_MessageIdx представляет собой 1 байт, разделенный на два полубайта (правый и левый) по 4 бита. Правый (младший) полубайт определяет первую строку сообщения, выводимого на экран, и соответствует битам 0-3. Левый (старший) полубайт соответствует битам 4-7 и определяет вторую строку сообщения.

Правый полубайт может принимать значение в диапазоне от 0 до 2, левый от 0 до 3. Каждому значению полубайта соответствует одна строка текста (см. таблицу ниже.) Значение целого байта определяет весь отображаемый на экране текст. Например, байт со значением 0x20 соответствует следующему сообщению: Введите PIN-код администратора.

Возможные значения каждого полубайта и соответствующий им текст приведены в таблицах ниже.

Для русского языка:

Правый (младший) полубайт, биты 0-3 Левый (старший) полубайт, биты 4-7:
Значение Выводимый текст Значение Выводимый текст
0 “Введите PIN-код” 0 пустая строка
1 “Введите новый PIN” 1 “пользователя”
2 “Повторите PIN” 2 “администратора”
3 “подписи”

Для английского языка:

Правый (младший) полубайт, биты 0-3 Левый (старший) полубайт, биты 4-7:
Значение Выводимый текст Значение Выводимый текст
0 “Enter PIN” 0 пустая строка
1 “Enter new PIN” 1 “of user”
2 “Repeat PIN” 2 “of admin”
3 “for signature”

JC_WP_INFO

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

JC_WP_INFO
typedef struct JC_WP_INFO {
  JC_WP_MODE Mode;
  CK_ULONG LastErrorCode;
  CK_BYTE SerialNumber[4];
  CK_ULONG ButtonClickCount;
  CK_ULONG USBConnectionCount;
} JC_WP_INFO;
JC_WP_MODE Mode

Режим работы. WebPass может работать в следующих режимах:

  • JC_WEBPASS_MODE_CCID (0x01) – работа только по интерфейсу CCID;
  • JC_WEBPASS_MODE_HID (0x02) – работа только по интерфейсу HID;
  • JC_WEBPASS_MODE_HID_CCID (0x03) – работа как по интерфейсу CCID, так и HID.
CK_ULONG LastErrorCode

Код последней ошибки.

CK_BYTE SerialNumber

Серийный номер.

CK_ULONG ButtonClickCount

Количество нажатий на кнопку.

CK_ULONG USBConnectionCount

Количество подключений к USB.

JC_ISD_DATA

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

JC_ISD_DATA
typedef struct JC_ISD_DATA {
      CK_UTF8CHAR model[32];
      CK_BYTE manufacturingDate[8];
    } JC_ISD_DATA
CK_UTF8CHAR model

Название модели

CK_BYTE manufacturingDate

Дата производства в формате ГГГГММДД

JC_TOKEN_PROPERTIES

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

JC_TOKEN_PROPERTIES
typedef struct JC_TOKEN_PROPERTIES {
  CK_BYTE * Attr;
  CK_ULONG AttrSize;
  CK_BYTE * JaCartaTag;
  CK_ULONG JaCartaTagSize;
  CK_BYTE * SerialNumber;
  CK_ULONG SerialNumberSize;
  CK_ULONG ManufactureDate;
  CK_ULONG AppletCount;
  JC_APPLET_TYPE * Applets;
    } JC_TOKEN_PROPERTIES
CK_BYTE Attr

Массив атрибутов.

CK_ULONG AttrSize

Размер массива атрибутов в байтах.

CK_BYTE JaCartaTag

Тег считывателя.

CK_ULONG JaCartaTagSize

Размер тега в байтах.

CK_BYTE SerialNumber

Серийный номер считывателя.

CK_ULONG SerialNumberSize

Размер серийного номера считывателя в байтах.

CK_ULONG ManufactureDate

Дата производства в секундах начиная с 01.01.1970.

CK_ULONG AppletCount

Количество апплетов, установленных на токене.

JC_APPLET_TYPE Applets

Типы апплетов. Возможные значения:

  • JC_APPLET_TYPE_CRYPTO_TOKEN (1) – апплет Криптотокен;
  • JC_APPLET_TYPE_CRYPTO_TOKEN_2 (2) – апплет Криптотокен 2;
  • JC_APPLET_TYPE_LASER (3) – апплет Laser;
  • JC_APPLET_TYPE_DATA_STORE (4) – апплет Datastore;
  • JC_APPLET_TYPE_FKH (5) – FKH;
  • JC_APPLET_TYPE_PRO_JAVA (6) – апплет PRO Java;
  • JC_APPLET_TYPE_PRO (7) – апплет PRO;
  • JC_APPLET_TYPE_VASCO_CARDLESS (8) – Антифрод-терминал в бескарточном режиме;
  • JC_APPLET_TYPE_WEBPASS (9) – апплет Webpass.

JC_CT2_EXTENDED_INFO

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

JC_CT2_EXTENDED_INFO
typedef struct JC_CT2_EXTENDED_INFO {
  CK_BYTE Major;
  CK_BYTE Minor;
  CK_BYTE Release;
  CK_ULONG UnlockCount;
  CK_BYTE PersonalizationInfo[64];
  CK_BYTE CheckSum[32];
  JC_CT2_PIN_STATE UserPINState;
  JC_CT2_PIN_STATE SignPINState;
  JC_CT2_PIN_STATE PUKState;
  CK_BBOOL SULoginThrowSM;
  CK_BBOOL UserPUKEnabled;
  JC_CT2_PIN_POLICY UserPinPolicy;
  JC_CT2_PIN_POLICY UserSignPinPolicy;
  JC_CT2_SECURE_MESSAGING_STATE SecureMessagingState;
    } JC_CT2_EXTENDED_INFO
CK_BYTE Major;

Главная версия прошивки.

CK_BYTE Minor;

Дополнительная версия прошивки.

CK_BYTE Release;

Номер выпуска прошивки.

CK_ULONG UnlockCount;

Количество разблокировок.

CK_BYTE PersonalizationInfo;

Информация о персонализации.

CK_BYTE CheckSum;

Контрольная сумма.

JC_CT2_PIN_STATE UserPINState;

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

JC_CT2_PIN_STATE SignPINState;

Состояние PIN-кода подписи. См. JC_CT2_PIN_STATE.

JC_CT2_PIN_STATE PUKState;

Состояние PUK-кода. См. JC_CT2_PIN_STATE.

CK_BBOOL SULoginThrowSM;

Признак необходимости ввода PIN-кода администратора в закрытом виде.

CK_BBOOL UserPUKEnabled;

Признак разрешения пользователю менять PUK-код.

JC_CT2_PIN_POLICY UserPinPolicy;

Политика PIN-кода пользователя. См. JC_CT2_PIN_POLICY.

JC_CT2_PIN_POLICY UserSignPinPolicy;

Политика PIN-кода подписи. См. JC_CT2_PIN_POLICY.

JC_CT2_SECURE_MESSAGING_STATE SecureMessagingState;

Состояние защищенного канала. Может принимать значения:

  • JC_CT2_SECURE_MESSAGING_STATE_NONE (0) – Защищенный канал выключен;
  • JC_CT2_SECURE_MESSAGING_STATE_NOT_FINISHED (1) – Защищенный канал в процессе установки;
  • JC_CT2_SECURE_MESSAGING_STATE_SIMPLE (2) – Защищенный канал включен;
  • JC_CT2_SECURE_MESSAGING_STATE_EXCLUSIVE (3) – Защищенный канал включен в эксклюзивном режиме.

JC_CT2_PIN_POLICY

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

JC_CT2_PIN_POLICY
typedef struct JC_CT2_PIN_POLICY {
  CK_BBOOL UseUpperCaseLetters;
  CK_BBOOL UseLowerCaseLetters;
  CK_BBOOL UseDigits;
  CK_BBOOL UseSpecial;
  CK_BBOOL PinMustBeChanged;
  CK_ULONG MinPinLengthAddition;
    } JC_CT2_PIN_POLICY
CK_BBOOL UseUpperCaseLetters

Обязательное наличие в PIN-коде прописных символов A-Z А-Я. Если установлено значение CK_TRUE, наличие обязательно, если CK_FALSE – необязательно.

CK_BBOOL UseLowerCaseLetters

Обязательное наличие в PIN-коде строчных символов a-z а-я. Если установлено значение CK_TRUE, наличие обязательно, если CK_FALSE – необязательно.

CK_BBOOL UseDigits

Обязательное наличие в PIN-коде цифр. Если установлено значение CK_TRUE, наличие обязательно, если CK_FALSE – необязательно.

CK_BBOOL UseSpecial

Обязательное наличие в PIN-коде специальных символов (находятся в диапазонах 20h–2Fh, 3Ah–40h, 5Bh–60h и 7Bh–7Eh). Если установлено значение CK_TRUE, наличие обязательно, если CK_FALSE – необязательно.

CK_BBOOL PinMustBeChanged

Признак необходимости смены PIN-кода. Если установлено значение CK_TRUE, смена PIN-кода обязательна, если CK_FALSE – необязательна.

CK_ULONG MinPinLengthAddition

Приращение длины PIN-кода относительно минимально возможной (6 символов), т.е. минимальная длина PIN-кода равна 6 + значение приращения. Такое значение может быть установлено равным от 0 до 7.

JC_CT1_PIN_COUNTERS

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

JC_CT1_PIN_COUNTERS
typedef struct JC_CT1_PIN_COUNTERS {
  CK_ULONG MaxPinErrors;
  CK_ULONG UserPinErrors;
  CK_ULONG AdminPinErrors;
    } JC_CT1_PIN_COUNTERS
CK_ULONG MaxPinErrors

Максимально допустимое количество ошибок ввод PIN-кода.

CK_ULONG UserPinErrors

Текущее количество ошибок ввод PIN-кода пользователя.

CK_ULONG AdminPinErrors

Текущее количество ошибок ввод PIN-кода администратора.

JC_DS_PIN_COUNTERS

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

JC_DS_PIN_COUNTERS
typedef struct JC_DS_PIN_COUNTERS {
  CK_ULONG UserMaxErrors;
  CK_ULONG UserPinErrors;
  CK_ULONG AdmiMaxErrors;
  CK_ULONG AdmiPinErrors;
} JC_DS_PIN_COUNTERS
CK_ULONG UserMaxErrors

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

CK_ULONG UserPinErrors

Текущее количество ошибок ввод PIN-кода пользователя.

CK_ULONG AdmiMaxErrors

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

CK_ULONG AdmiPinErrors

Текущее количество ошибок ввод PIN-кода администратора.

JC_PKI_PERSONALIZATION_INFO

Используется функциями JC_PKI_SetComplexity() и JC_PKI_GetComplexity().

JC_PKI_PERSONALIZATION_INFO
typedef struct JC_PKI_PERSONALIZATION_INFO {
  JC_PKI_SECURE_MESSAGING_MODE SecureMessagingMode;
  CK_BYTE NewAdminPinLength;
  CK_BYTE NewAdminPin;
} JC_PKI_PERSONALIZATION_INFO
JC_PKI_SECURE_MESSAGING_MODE SecureMessagingMode

Режим защищенного обмена между токеном и компьютером:

  • JC_PKI_SECURE_MESSAGING_MODE_OFF (0x00) – защищенный канал выключен;
  • JC_PKI_SECURE_MESSAGING_MODE_RSA (0x01) – защищенный канал на ключевых парах по алгоритму RSA;
  • JC_PKI_SECURE_MESSAGING_MODE_EC (0x02) – защищенный канал на ключевых парах по алгоритму EC;
CK_BYTE NewAdminPinLength

Длина нового PIN-кода администратора. Может быть равной 0.

CK_BYTE NewAdminPin

Массив байт с новым PIN-кодом администратора.

JC_PKI_PIN_INFO

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

JC_PKI_PIN_INFO
typedef struct JC_PKI_PIN_INFO {
  CK_BYTE UserPinRemains;
  CK_BYTE UserBioPinRemains;
  CK_BYTE AdminPinRemains;
} JC_PKI_PIN_INFO
CK_BYTE UserPinRemains

Количество попыток ввода PIN-кода пользователя.

CK_BYTE UserBioPinRemains

Количество попыток аутентификации пользователя через BIO.

CK_BYTE AdminPinRemains

Количество попыток ввода PIN-кода администратора.

JC_PKI_BIO_SUPPORT_INFO

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

JC_PKI_BIO_SUPPORT_INFO
typedef struct JC_PKI_BIO_SUPPORT_INFO {
  CK_BBOOL Enabled;
  JC_PKI_AUTHTYPE AuthType;
} JC_PKI_BIO_SUPPORT_INFO
CK_BBOOL Enabled

Поддерживается ли биометрия. Если установлено значение CK_TRUE - поддерживается, CK_FALSE - не поддерживается.

JC_PKI_AUTHTYPE AuthType

Тип аутентификации для апплета Laser. Возможные значения:

  • JC_PKI_AUTHTYPE_UNDEFINED (0x00) – тип аутентификации неизвестен;
  • JC_PKI_AUTHTYPE_PIN (0x01) – по ПИН-коду;
  • JC_PKI_AUTHTYPE_BIO (0x03) – по отпечатку пальца;
  • JC_PKI_AUTHTYPE_PIN_OR_BIO (0x04) – по ПИН-коду или отпечатку пальца;
  • JC_PKI_AUTHTYPE_PIN_AND_BIO (0x05) – по ПИН-коду и отпечатку пальца;