Функции для работы с Антифрод-терминалом

JC_Antifraud

JC_Antifraud(CK_ULONG slotId, CK_ULONG operation, CK_BYTE_PTR pArgument, CK_ULONG ulArgumentDataLen, CK_BYTE_PTR pResultingData, CK_ULONG_PTR pulResultingDataLen)
Параметры:
  • slotId (in) – идентификатор слота терминала (список всех слотов можно получить с помощью функции C_GetSlotList()).
  • operation (in) – код операции (см. ниже).
  • pArgument (in) – указатель на структуру с параметрами операции (описания структур, используемых функцией см. в приложении).
  • ulArgumentDataLen – размер структуры с параметрами операции (в байтах).
  • pResultingData (out) – указатель на массив байтов для записи выходных данных.
  • pulResultingDataLen (in/out) – размер массива выходных данных; при вызове функции ей передается требуемый размер (в байтах) массива pResultingData, после выполнения функция возвращает фактический размер массива выходных данных. Если фактический размер выходных данных превышает размер выделенного массива, функция возвращает сообщение об ошибке с указанием требуемого объема памяти.

Функция JC_Antifraud используется для получения сведений об Антифрод-терминале, работы с ключевой информацией, PIN-кодами, для активации и работы в SWYX-режиме, а также выполнения других административных операций на терминале.

Возможность выполнения операций без смарт-карты определяется версией прошивки Антифрод-терминала. Начиная с версии прошивки 24.32 (первое число - версия ОС терминала, второе - версия приложения) Антифрод-терминал поддерживает выполнение операций как с подключённой смарт-картой, так и без неё. Можно проверить возможность работы без смарт-карты, выполнив функцию с кодом операции AFT_IS_CARDLESS_MODE_SUPPORTED.

Режим работы терминала без подключённой смарт-карты предназначен для обеспечения безопасной работы с USB-токеном. В общем случае могут быть использованы любые токены, поддерживающие криптографические операции.

Ниже приведены коды операций и значения, записываемые в массив pResultingData для каждой операции.

Операция Код Назначение
Операции, выполняемые с подключенной смарт-картой и без смарт-карты
AFT_GET_READER_VERSION 0 Получение версии ОС и версии приложения для Антифрод-терминала
AFT_PIN_VERIFY 1 Предъявление PIN-кода пользователя / администратора с помощью Антифрод-терминала
AFT_PIN_MODIFY 2 Смена PIN-кода пользователя / администратора
AFT_PIN_GET_COPY 3 Зарезервировано для дальнейшего использования
AFT_SWYX_START 4 Включение SWYX-режима работы Антифрод-терминала
AFT_SWYX_STOP 5 Завершение SWYX-режима работы Антифрод-терминала
AFT_SWYX_DISPLAY 6 Отображение текста на экране Антифрод-терминала
AFT_GET_PROPERTIES 7 Получение характеристик Антифрод-терминала
AFT_ENROLL 8 Получение открытого ключа Антифрод-терминала
AFT_CTRL_SWYX_GET_APPLET_SN 9 Получение серийного номера апплета Антифрод-терминала
AFT_PERFORM_PERSONALIZATION 15 Генерация собственной ключевой пары Антифрод-терминала
AFT_IS_CARDLESS_MODE_SUPPORTED 16 Проверка, поддерживает ли Антифрод-терминал бескарточный режим работы
Операции, выполняемые только с подключенной смарт-картой
AFT_ENTER_ADMIN_PIN 10 Ввод PIN-кода администратора на Антифрод-терминале и сохранение его на внутреннем чипе терминала
AFT_SAVE_ADMIN_PIN 11 Подтверждение PIN-кода администратора, полученного из приложения, и сохранение его на внутреннем чипе терминала
AFT_INIT_CARD 12 Инициализация подключенной смарт-карты с помощью сохраненного PIN-кода администратора
AFT_SET_USER_PIN 13 Предъявление сохраненного PIN-кода администратора для подключенной смарт-карты (в рамках операции установки PIN-кода пользователя)
AFT_VERIFY_PIN 14 Предъявление PIN-кода пользователя/администратора с помощью Антифрод-терминала с выбором отображаемого сообщения
  • AFT_GET_READER_VERSION - получение данных о версии ОС Антифрод-терминала и версии установленного приложения. Параметров у операции нет. В качестве значения pResultingData функция возвращает указатель на структуру AFT_GET_READER_VERSION_RESPONCE.
  • AFT_PIN_VERIFY – предъявление PIN-кода пользователя или администратора. Происходит запрос на ввод PIN-кода на терминале и передача его в зашифрованном виде в приложение. Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_PIN_VERIFY_ARGUMENTS.
    • pResultingData - функция возвращает указатель на структуру AFT_PIN_VERIFY_RESPONCE.
  • AFT_PIN_MODIFY – смена PIN-кода пользователя/администратора. Происходит запрос на ввод PIN-кода на терминале и передача в зашифрованном виде в приложение. Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_PIN_MODIFY_ARGUMENTS.
    • pResultingData - функция возвращает указатель на структуру AFT_PIN_VERIFY_RESPONCE.
  • AFT_SWYX_START – начать работу в SWYX режиме. Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_SWYX_START_ARGUMENTS, содержащую значение bReference - идентификатор транзакции (для предотвращения атаки с повтором транзакции).
    • pResultingData - функция возвращает статус выполнения операции.
  • AFT_SWYX_STOP – закончить работу в SWYX режиме. Параметров у операции нет. В качестве значения pResultingData функция возвращает указатель на массив байт с журналом операций и подписью терминала (последние 64 байта).
  • AFT_SWYX_DISPLAY – отобразить информацию на экране терминала. Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_SWYX_DISPLAY_ARGUMENTS.
    • pResultingData - функция возвращает статус выполнения операции.
  • AFT_GET_PROPERTIES – получение свойств терминала. Параметров у операции нет. В качестве значения pResultingData функция возвращает указатель на структуру AFT_SWYX_PROPERTIES.
  • AFT_ENROLL – получение открытого ключа терминала. В качестве pResultingData возвращает указатель на массив длиной 64 байта с открытым ключом. Возвращает сообщение об ошибке, если ключевая пара терминала еще не была сгенерирована, т.е. еще не выполнялась операция AFT_PERFORM_PERSONALIZATION (см. ниже).
  • AFT_CTRL_SWYX_GET_APPLET_SN – получение серийного номера апплета. В качестве pResultingData возвращает указатель на массив длиной 8 байт с серийным номером апплета.
  • AFT_ENTER_ADMIN_PIN - ввод с клавиатуры Антифрод-терминала и сохранение PIN-кода администратора (не более 15 символов) на внутреннем чипе терминала. Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_ENTER_ADMIN_PIN_ARGUMENTS.
    • pResultingData - функция возвращает статус выполнения операции.
  • AFT_SAVE_ADMIN_PIN - сохранить PIN-код администратора (ограничение - 32 символа) на внутреннем чипе терминала. При этом запрашивается подтверждение у пользователя - на экран Антифрод-терминала выводится следующее сообщение: Сохранить ключ администратора безопасности? (Store security admin’s key в случае английского языка). Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_SAVE_ADMIN_PIN_ARGUMENTS.
    • pResultingData - функция возвращает статус выполнения операции.
  • AFT_INIT_CARD - инициализация подключенной смарт-карты с помощью сохраненнного PIN-кода администратора. При этом на экран Антифрод-терминала выводится следующее сообщение: Инициализировать смарт-карту? (Initialize smart card? в случае английского языка). Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_INIT_CARD_ARGUMENTS.
    • pResultingData - функция возвращает статус выполнения операции.
  • AFT_PERFORM_PERSONALIZATION - генерация собственной ключевой пары Антифрод-терминала. Входные и выходные данные отсутствуют. В случае отказа пользователя возвращается код CKR_FUNCTION_REJECTED (0x00000200).
  • AFT_IS_CARDLESS_MODE_SUPPORTED - проверить, поддерживает ли Антифрод-терминал бескарточный режим работы. Параметров у операции нет. В качестве значения pResultingData функция возвращает указатель на структуру AFT_IS_CARDLESS_MODE_SUPPORTED_RESPONCE.
  • AFT_SET_USER_PIN - предъявление сохраненного PIN-кода администратора для подключенной смарт-карты. Необходимо в рамках операции установки PIN-кода пользователя. Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_SET_USER_PIN_ARGUMENTS.
    • pResultingData - функция возвращает статус выполнения операции.
  • AFT_VERIFY_PIN - предъявление PIN-кода пользователя на подключенную смарт-карту с выводом на экран терминала сообщения, определенного в m_MessageIdx. Используются следующие входные/выходные данные:
    • pArgument - функции передается указатель на структуру AFT_VERIFY_PIN_ARGUMENTS.
    • pResultingData - функция возвращает статус выполнения операции.

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

Результат:Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.

Примечание

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