Функции управления сеансами

C_OpenSession

C_OpenSession(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY Notify, CK_SESSION_HANDLE_PTR phSession)
Параметры:
  • slotID (in) – идентификатор слота.
  • flags (in) – флаги, определяющие тип сеанса.
  • pApplication (in) – определяемый приложением указатель, который будет передан возвратному уведомлению (notification callback). Должен принимать значение NULL_PTR.
  • Notify (in) – адрес функции возвратного уведомления (notification callback). Должен принимать значение NULL_PTR.
  • phSession (out) – указатель на объект, который получает дескриптор нового сеанса.

Открывает сеанс между приложением и токеном в заданном слоте.

Примечание

Аргументы pApplication и Notify – должны принимать значение NULL_PTR.

Результат:
  • CKR_ARGUMENTS_BAD – недопустимые аргументы.
  • CKR_CRYPTOKI_NOT_INITIALIZED – функция не может быть выполнена, т.к. библиотека Cryptoki еще не была инициализирована (см. C_Initialize()).
  • CKR_DEVICE_ERROR – возникла проблема с токеном и/или слотом.
  • CKR_DEVICE_REMOVED – токен был изъят из слота.
  • CKR_DEVICE_MEMORY – памяти токена недостаточно для данной операции.
  • CKR_FUNCTION_FAILED – выполнение функции было прервано или она не может быть выполнена.
  • CKR_GENERAL_ERROR – общий сбой при работе с библиотекой.
  • CKR_HOST_MEMORY – компьютер, на котором запущена библиотека, не имеет достаточно памяти для выполнения функции.
  • CKR_OK – функция выполнена успешно.
  • CKR_SESSION_COUNT – открыто слишком большое количество сеансов.

    Примечание

    Данный аргумент возвращается только функцией C_OpenSession.

  • CKR_SESSION_PARALLEL_NOT_SUPPORTED – данный токен не поддерживает параллельные сеансы.

    Примечание

    Данный аргумент возвращается только функцией C_OpenSession.

  • CKR_SESSION_READ_WRITE_SO_EXISTS – сеанс чтения/записи уже открыт, администратор не имеет возможности залогиниться.
  • CKR_SLOT_ID_INVALID – недопустимый идентификатор слота.
  • CKR_TOKEN_NOT_PRESENT – в слоте отсутствует токен.
  • CKR_TOKEN_NOT_RECOGNIZED – токен не поддерживается.
  • CKR_TOKEN_WRITE_PROTECTED – данный токен защищен от записи.

Совет

Полный список ошибок см. в приложении.

C_CloseSession

C_CloseSession(CK_SESSION_HANDLE hSession)
Параметры:
  • hSession (in) – дескриптор сеанса.

Закрывает сеанс между приложением и токеном. При выполнении освобождает все буферы памяти, выделенные в рамках текущего сеанса (аналогично вызову функции freeBuffer()).

Запускается в режимах

Результат:
  • CKR_CRYPTOKI_NOT_INITIALIZED – функция не может быть выполнена, т.к. библиотека Cryptoki еще не была инициализирована (см. C_Initialize()).
  • CKR_DEVICE_ERROR – возникла проблема с токеном и/или слотом.
  • CKR_DEVICE_REMOVED – токен был изъят из слота.
  • CKR_DEVICE_MEMORY – памяти токена недостаточно для данной операции.
  • CKR_FUNCTION_FAILED – выполнение функции было прервано или она не может быть выполнена.
  • CKR_GENERAL_ERROR – общий сбой при работе с библиотекой.
  • CKR_HOST_MEMORY – компьютер, на котором запущена библиотека, не имеет достаточно памяти для выполнения функции.
  • CKR_OK – функция выполнена успешно.
  • CKR_SESSION_CLOSED – сеанс был закрыт в момент выполнения функции.
  • CKR_SESSION_HANDLE_INVALID – недопустимый дескриптор сеанса.

Совет

Полный список ошибок см. в приложении.

C_CloseAllSessions

C_CloseAllSessions(CK_SLOT_ID slotID)
Параметры:
  • slotID (in) – идентификатор слота.

Закрывает все сеансы на данном слоте. При выполнении освобождает все буферы памяти, выделенные в рамках всех закрываемых сеансов (аналогично вызову функции freeBuffer()).

Запускается в режимах

Результат:
  • CKR_CRYPTOKI_NOT_INITIALIZED – функция не может быть выполнена, т.к. библиотека Cryptoki еще не была инициализирована (см. C_Initialize()).
  • CKR_DEVICE_ERROR – возникла проблема с токеном и/или слотом.
  • CKR_DEVICE_REMOVED – токен был изъят из слота.
  • CKR_DEVICE_MEMORY – памяти токена недостаточно для данной операции.
  • CKR_FUNCTION_FAILED – выполнение функции было прервано или она не может быть выполнена.
  • CKR_GENERAL_ERROR – общий сбой при работе с библиотекой.
  • CKR_HOST_MEMORY – компьютер, на котором запущена библиотека, не имеет достаточно памяти для выполнения функции.
  • CKR_OK – функция выполнена успешно.
  • CKR_SLOT_ID_INVALID – недопустимый идентификатор слота.
  • CKR_TOKEN_NOT_PRESENT – в слоте отсутствует токен.

Совет

Полный список ошибок см. в приложении.

C_GetSessionInfo

C_GetSessionInfo(CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo)
Параметры:
  • hSession (in) – дескриптор сеанса.
  • pInfo (out) – указатель на объект для записи информации о сеансе.

Функция C_GetSessionInfo записывает информацию о сеансе в структуру CK_SESSION_INFO.

Запускается в режимах

Результат:
  • CKR_ARGUMENTS_BAD – недопустимые аргументы.
  • CKR_CRYPTOKI_NOT_INITIALIZED – функция не может быть выполнена, т.к. библиотека Cryptoki еще не была инициализирована (см. C_Initialize()).
  • CKR_DEVICE_ERROR – возникла проблема с токеном и/или слотом.
  • CKR_DEVICE_REMOVED – токен был изъят из слота.
  • CKR_DEVICE_MEMORY – памяти токена недостаточно для данной операции.
  • CKR_FUNCTION_FAILED – выполнение функции было прервано или она не может быть выполнена.
  • CKR_GENERAL_ERROR – общий сбой при работе с библиотекой.
  • CKR_HOST_MEMORY – компьютер, на котором запущена библиотека, не имеет достаточно памяти для выполнения функции.
  • CKR_OK – функция выполнена успешно.
  • CKR_SESSION_CLOSED – сеанс был закрыт в момент выполнения функции.
  • CKR_SESSION_HANDLE_INVALID – недопустимый дескриптор сеанса.

Совет

Полный список ошибок см. в приложении.

C_Login

C_Login(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen)
Параметры:
  • hSession (in) – дескриптор сеанса.
  • userType (in) – тип пользователя.
  • pPin (in) – указатель на PIN-код пользователя/администратора.
  • ulPinLen (in) – размер PIN-кода пользователя/администратора.

Функция C_Login используется для ввода PIN-кода и перехода в режим пользователя или администратора. При работе с Антифрод-терминалом ввод PIN-кода происходит с экрана терминала, а не с клавиатуры.

Библиотека Cryptoki поддерживает следующие значения для параметра userType:

  • CKU_USER – пользователь.
  • CKU_SO – администратор.

Значение PIN-кода по умолчанию для каждого апплета:

  Laser Криптотокен Datastore
Пользователь 11111111 Не установлен 1234567890
Администратор 00000000 1234567890 Не установлен

Примечание

Cryptoki-библиотека не поддерживает значение CKU_CONTEXT_SPECIFIC параметра userType.

Запускается в режимах

Результат:
  • CKR_ARGUMENTS_BAD – недопустимые аргументы.
  • CKR_CRYPTOKI_NOT_INITIALIZED – функция не может быть выполнена, т.к. библиотека Cryptoki еще не была инициализирована (см. C_Initialize()).
  • CKR_DEVICE_ERROR – возникла проблема с токеном и/или слотом.
  • CKR_DEVICE_MEMORY – памяти токена недостаточно для данной операции.
  • CKR_DEVICE_REMOVED – токен был изъят из слота.
  • CKR_FUNCTION_CANCELED – функция была отменена в момент исполнения.
  • CKR_FUNCTION_FAILED – выполнение функции было прервано или она не может быть выполнена.
  • CKR_GENERAL_ERROR – общий сбой при работе с библиотекой.
  • CKR_HOST_MEMORY – компьютер, на котором запущена библиотека, не имеет достаточно памяти для выполнения функции.
  • CKR_OK – функция выполнена успешно.
  • CKR_OPERATION_NOT_INITIALIZED – в указанном сеансе нет активной операции данного типа.
  • CKR_PIN_INCORRECT – неверный PIN-код.
  • CKR_SESSION_CLOSED – сеанс был закрыт в момент выполнения функции.
  • CKR_PIN_LOCKED – указанный PIN-код заблокирован и не может быть использован.
  • CKR_SESSION_HANDLE_INVALID – недопустимый дескриптор сеанса.
  • CKR_SESSION_READ_ONLY_EXISTS – сеанс на чтение уже открыт и администратор не может быть залогинен.
  • CKR_USER_ALREADY_LOGGED_IN – пользователь уже залогинен.

    Примечание

    Данный аргумент возвращается только функцией C_Login.

  • CKR_USER_ANOTHER_ALREADY_LOGGED_IN – указанный пользователь не может быть залогинен в данном сеансе, так как другой пользователь уже залогинен в нем.

    Примечание

    Данный аргумент возвращается только функцией C_Login.

  • CKR_USER_PIN_NOT_INITIALIZED – PIN-пользователя не инициализирован (см. C_InitPIN()).

    Примечание

    Данный аргумент возвращается только функцией C_Login.

  • CKR_USER_TOO_MANY_TYPES – невозможно залогинить больше пользователей, чем позволяет токен/библиотека.
  • CKR_USER_TYPE_INVALID – недопустимый тип пользователя.

Совет

Полный список ошибок см. в приложении.

C_Logout

C_Logout(CK_SESSION_HANDLE hSession)
Параметры:
  • hSession (in) – дескриптор сеанса.

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

Запускается в режимах

Результат:
  • CKR_CRYPTOKI_NOT_INITIALIZED – функция не может быть выполнена, т.к. библиотека Cryptoki еще не была инициализирована (см. C_Initialize()).
  • CKR_DEVICE_ERROR – возникла проблема с токеном и/или слотом.
  • CKR_DEVICE_MEMORY – памяти токена недостаточно для данной операции.
  • CKR_DEVICE_REMOVED – токен был изъят из слота.
  • CKR_FUNCTION_FAILED – выполнение функции было прервано или она не может быть выполнена.
  • CKR_GENERAL_ERROR – общий сбой при работе с библиотекой.
  • CKR_HOST_MEMORY – компьютер, на котором запущена библиотека, не имеет достаточно памяти для выполнения функции.
  • CKR_OK – функция выполнена успешно.
  • CKR_SESSION_CLOSED – сеанс был закрыт в момент выполнения функции.
  • CKR_SESSION_HANDLE_INVALID – недопустимый дескриптор сеанса.
  • CKR_USER_NOT_LOGGED_IN – действие не может быть выполнено, т.к. пользователь не залогинен.

Совет

Полный список ошибок см. в приложении.