Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Для работы с USB-токенами необходимо

Начиная с iOS/iPadOS 16.2 стала возможна работа USB-токенов.
Для включения поддержки USB-токенов достаточно только обновления RtPcsc.framework до версии 4.0.0 или новее.


Описание интерфейса RtPcsc для работы с NFC/VCR

Warning
titleiOS\iPadOS 16-16.1

На iOS 16.0.x, 16.1.x (до 16.2) могут не работать длительные операции, такие как: генерация ключей, подпись и проверка подписи, аппаратное хеширование. Конкретный список недоступных операций зависит от производительности устройства.

Для работы с Рутокен ЭЦП Bluetooth необходимо

Добавить в Info.plist ключ UISupportedExternalAccessoryProtocols со значением com.aktivco.rutokenecp.

Code Block
languagexml
titleInfo.plist
<key>UISupportedExternalAccessoryProtocols</key>
<array>
  <string>com.aktivco.rutokenecp</string>
</array>

Описание интерфейса RtPcsc для работы с NFC/VCR

Изменилось поведение функции SCardGetStatusChange

Начиная с версии RtPcsc 5.0.0 для обнаружения нового считывателя с помощью "\\?PnP?\Notification", необходимо указывать количество уже известных приложению считывателей в верхнем слове dwCurrentState.

Например, так:

SCARD_READERSTATE state;
state.szReader = "\\\\?PnP?\\Notification";
state.dwCurrentState = (1 << 16);

Если ожидаемое приложением количество считывателей не совпадет с реальным, управление будет сразу же возвращено, а в верхнем слове dwEventState будет содержаться текущее количество считывателей.

Пример работы с функцией SCardGetStatusChange, учитывающий поведение описанное на GitHub.

Expand
titleDeprecated API для работы с NFC устройствами...
  1. Перед началом взаимодействия с Рутокен ЭЦП 3.0 NFC запустите функцию startNFC. Функция определена во фреймворке RtPcsc.
  2. Функция startNFC запускает в отдельном потоке окно с просьбой приложить NFC карту к телефону или планшету. На вход она принимает callback, который будет вызван в случае ошибок, например если окно закрылось по таймауту или пользователь нажал на клавишу "Отмена".
  3. После окончания взаимодействия с NFC токеном запустите функцию stopNFC из фреймворка RtPcsc. 
  4. Поток с окном предложения приложить токен и поток работы с PKCS#11 функциями надо синхронизировать: токен не сразу распознается системой и нужно некоторое время подождать прежде чем начать работать с ним. 

...

  • при RUTOKEN_CONTROL_CODE_START_NFC: параметр задан в формате "\(waitMessage)\0\(workMessage)\0\0" и содержит два сообщения:
    • waitMessage отображается во время ожидания карты,
    • workMessage отображается во время работы с картой;
  • при RUTOKEN_CONTROL_CODE_STOP_NFC: параметр содержит сообщение о завершении работы с картой;
  • при RUTOKEN_CONTROL_CODE_STOP_NFC_WITH_ERROR: параметр содержит сообщение о завершении работы с картой с уведомлением об ошибке;
  • при RUTOKEN_CONTROL_CODE_LAST_NFC_STOP_REASON: параметр не используется.

Рекомендуемый порядок работы с Рутокеном с NFC

...

  • получить список доступных ридеров с помощью функции SCardListReaders;
  • если ридер еще не появился – дождаться его появления с помощью функции SCardGetStatusChange;
  • вызов функции SCardConnect для нужного ридера с параметром dwShareMode == SCARD_SHARE_DIRECT;
  • вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_START_NFC;
  • работа с Рутокеном;
  • вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_STOP_NFC;
  • вызов функции SCardDisconnect.

...