Expand | ||
---|---|---|
| ||
|
RtPcsc - фреймворк для работы с Рутокен ЭЦП Bluetooth, виртуальными считывателями Рутокен VCR, а также NFC-устройствами семейства Рутокен ЭЦП.
...
Info |
---|
Внимание! Приложение со встроенным RtPcsc.framework может быть запущено только на физических устройствах Apple, не на эмуляторе. Обратите внимание, что работа с VCR API доступна только на iPad. |
Для работы с
...
Добавить в Info.plist ключ UISupportedExternalAccessoryProtocols со значением com.aktivco.rutokenecp.
Code Block | ||||
---|---|---|---|---|
| ||||
<key>UISupportedExternalAccessoryProtocols</key>
<array>
<string>com.aktivco.rutokenecp</string>
</array>
|
Для работы с NFC устройствами Рутокен необходимо
...
Info |
---|
Внимание! Убедитесь, что ваш сертификат разработчика для iOS позволяет разрабатывать приложения для работы с NFC устройствами. |
Для работы с виртуальными считывателями (Рутокен VCR) необходимо
в Info.plist добавить ключ Bonjour services со значениями:
Code Block language xml title Entitlements.plist <key>NSBonjourServices</key>
...
<array> <string>_ru-rutoken-vcr._udp</string> <string>_ru-rutoken-vcr._tcp</string>
...
</array>
в Info.plist добавить ключ Privacy - Local Network Usage Description с описанием причины необходимости доступа, например: Доступ необходим для работы с VCR
Code Block language xml title Entitlements.plist <key>NSLocalNetworkUsageDescription</key> <string>Доступ необходим для работы с виртуальным считывателем Рутокен</string>
Работа в приложениях с VCR API на macOS в режиме совместимости с iPad
Добавить в Entitlements.plist ключ keychain-access-groups.
Чтобы в приложении для iPadOS, когда оно запускается в режиме совместимости на macOS, работал VCR API необходимо:
Info | ||
---|---|---|
| ||
Примеры готовых приложений можно найти в репозиториях на GitHub: rutoken-demobank-ios и rutoken-demoshift-ios. |
Для работы с USB-токенами необходимо
Начиная с iOS/iPadOS 16 стала возможна работа USB-токенов.
Для включения поддержки USB-токенов достаточно только обновления RtPcsc.framework до версии 4.0.0 или новее.
Warning | ||
---|---|---|
| ||
На iOS 16.0.x, 16.1.x (до 16.2) могут не работать длительные операции, такие как: генерация ключей, подпись и проверка подписи, аппаратное хеширование. Конкретный список недоступных операций зависит от производительности устройства. |
Для работы с Рутокен ЭЦП Bluetooth необходимо
Добавить в Info.plist ключ UISupportedExternalAccessoryProtocols со значением com.aktivco.rutokenecp.
Code Block | ||||
---|---|---|---|---|
| ||||
<key>UISupportedExternalAccessoryProtocols</key>
<array>
<string>com.aktivco.rutokenecp</string>
</array> |
Описание интерфейса RtPcsc для работы с NFC/VCR
...
Expand | ||
---|---|---|
| ||
|
...
Работа с виртуальным считывателем
Для спаривания запуска процедуры создания пары с новым виртуальным считывателем необходимо вызвать функцию NSString* generatePairingQR(void), она возвращает изображение QR-кода в виде base64 строки. Для спаривания этого необходимо отобразить QR-код на экране и считать его с помощью приложения Рутокен VCR.
Info |
---|
Функция NSString* generatePairingQR(void) служит для создания сертификата и временного секрета для сопряжения. Процедура сопряжения начнется после вызова хотя бы одной функции из интерфейса RtPcsc.framework. |
Для получения списка спаренных сопряженных считывателей необходимо вызвать функцию NSArray* listPairedVCR(void).
Функция возвращает массив словарей, содержащих информацию о считывателях. Для каждого считывателя Рутокен VCR существует один сертификат, который хранится в keychain. Он необходим, чтобы удостовериться, что данные устройства (iPad и iPhone) спаренысопряжены.
Ключи словаря:
- name - имя считывателя
- cert - сертификат считывателя в виде BASE64-строки
- fingerprint - SHA1-хеш от сертификата считывателя
Для отмены спаривания разрыва пары со считывателем необходимо вызвать функцию BOOL unpairVCR(NSData* vcrId).
Функция возвращает true, если спаривание отмененоразрыв произошёл успешно, и false в противном случае. В качестве параметра она принимает SHA1-хеш от сертификата считывателя, спаривание пару с которым котором необходимо отменитьразорвать.
Рекомендуемый порядок работы с VCR
...
- Вызвать функцию SCardEstablishContext
- Сгенерировать сгенерировать QR-код для спаривания создания пары с помощью функции generatePairingQR
- осуществить спаривание с VCR
- Запустить процесс ожидания подключения ридеров, вызвав функцию SCardGetStatusChange
- Осуществить сопряжение с VCR и дождаться подключения ридера на уровне RtPcsc получить список доступных считывателей с помощью функции SCardListReaders (для iPad будут отображаться доступные виртуальные считыватели)
- вызов Вызов функции SCardConnect для нужного считывателя с параметром dwShareMode == SCARD_SHARE_DIRECT
- вызов Вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_START_NFC
- работа Работа с Рутокеном
- вызов Вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_STOP_NFCвызов функции SCardDisconnect
- Вызов функции SCardDisconnect
Пример работы с API
Примеры работы с API есть в репозитории на GitHub rutoken-demoshift-ios в файле https://github.com/AktivCo/rutoken-demoshift-ios/blob/master/demoshift/PcscWrapper/PcscWrapper.swift