Re: Не видит Рутокен ЭЦП Bluetooth в crashlitycs.

dmtrii93, вам необходимо убедиться в следующем:

4.  Для сборки приложения с поддержкой bluetooth-токена Рутокен ЭЦП 2.0 Bluetooth
    от компании Актив добавьте в линковку фреймворк RtPcsc.framework
    из Рутокен SDK (http://www.rutoken.ru/developers/sdk/), а также системные фреймворки
    Security.framework и ExternalAccessory.framework.
    Это делается аналогично п.3 инструкции по сборке примера.

    Укажите путь к фреймворкам из SDK Рутокен в XCode (Targets\Build Settings\Framework Search Path).

    Добавьте фреймворк RtPcsc.framework
    из состава Рутокен SDK в Embedded binaries (Targets\General\Embedded Binaries)

    Добавьте в параметры цели сборки в "Other linker flags" флаг "-all_load".
    Добавьте в линковку согласно п.3 инструкции библиотеку libstdc++.6.0.9.tbd
    (актуально до тех пор, пока Rutoken SDK собирается с libstdc++, а не libc++).
    
    Добавьте в параметры цели сборки флаг "-force_load" (Targets\Build Settings\Other Linker Flags):
    -force_load /путь/к фреймворкам/рутокен_sdk/RtPcsc.framework/RtPcsc

    Добавьте в Info.plist вашего приложения:
 
    <key>NSBluetoothAlwaysUsageDescription</key>
        <string>Bluetooth будет использован для работы с устройствами Рутокен</string>
        <key>NSBluetoothPeripheralUsageDescription</key>
         <string>Access bluetooth smartcard</string>
        <key>UISupportedExternalAccessoryProtocols</key>
        <array>
          <string>com.aktivco.rutokenecp</string>
        </array>
  • Что в CPROCSP.framework/Resources/config.ini выставлен:
    [Parameters] # Параметры провайдера
    dynamic_readers = 1

Если эти условия выполнены, думаем, вам лучше обратиться за помощью в компанию КриптоПро.

Re: Не видит Рутокен ЭЦП Bluetooth в crashlitycs.

Подключить рутокен удалось, скопировали методы получения списков считывателей и контейнеров на считывателе, в результате рутокен есть в списке, выбираем его, вводим для него пароль, выполняем setActivationPassword и получаем следующее:
Initialization...
Get function list -> OK
Get extended function list -> OK
C_Initialize -> OK
C_GetSlotList -> OK
C_GetTokenInfo -> OK
Checking token with serial provided is availible -> OK
Checking secure messaging activation is required -> Failed
Secure messaging activation is not required
Finalizing...

После чего пытаемся считать названия контейнеров со считывателя(так же используем пример), но в результате получаем 0 элементов, хотя на считывателе есть один контейнер и в нашем старом приложении с использованием 4 версии криптопро (в ней setActivationPassword не используется, сразу считываются контейнеры) этот контейнер считывается. В чём может быть проблема?

Re: Не видит Рутокен ЭЦП Bluetooth в crashlitycs.

Здравствуйте, dmtrii93,
Уточните пожалуйста какую версию Рутокен SDK вы используете?
Как именно форматировали Рутокен?

Re: Не видит Рутокен ЭЦП Bluetooth в crashlitycs.

Фатеева Светлана пишет:

Здравствуйте, dmtrii93,
Уточните пожалуйста какую версию Рутокен SDK вы используете?
Как именно форматировали Рутокен?

в rutoken sdk в файлике version.txt написано sdk 20210319

форматирование выполнялось по умолчанию если не ошибаюсь, т.е. настройки форматирования не меняли и в
области Безопасность, шифрование радиоканала выбрано "Штатными средатвами", так как на рис:
https://forum.rutoken.ru/uploads/images/2021/11/26b044bc545220f4b9392c6239d47b53.jpg

Re: Не видит Рутокен ЭЦП Bluetooth в crashlitycs.

dmtrii93,
Обращаем ваше внимание, что функция CryptGetProvParam(PP_ENUMREADERS) с флагом CRYPT_UNIQU ввернет запись для каждого режима работы токена.

Соответственно, будет 3 считывателя на 1 токен

0x012a  0x03  Aktiv Rutoken ECP 0
               Rutoken ECP
               rutoken_ecp_36c873a9

0x012a  0x0b  Aktiv Rutoken ECP 0
               Rutoken ECP
               rutoken_crypt_36c873a9

0x012a  0x0b  Aktiv Rutoken ECP 0
               Rutoken ECP
               rutoken_pkcs_36c873a9

Возможно вы неправильно выбираете считыватель.
Рекомендуем проконсультироваться по этому вопросу с технической поддержкой компании Криптопро.