Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
Добрый вечер,
При работе с Feitian считывателем возникла пара вопросов: 1) Порядок подключения считывателя. а) При подключении устройства с картой, обрабатываем событие "EAAccessoryDidConnectNotification", b) в обработчике создаем EASession для работы с этим девайсом (EAAccessory), c) затем открываем входящий поток ([[_session inputStream] open]). d) После этого я вижу в обработчике событий потока (- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode) ивент NSStreamEventOpenCompleted. Правильно ли я понимаю, что после этого контейнеры на смарт карте будут доступны нам через крипто API фреймворка КриптоПРО?
2) Какой должен быть путь до контейнера на смарт карте при подключении считывателя? Что-то типа "\\\\.\\Reader\\container".
Используется смарт карта "Магистра" (СКЗИ "ФОРОС Исполнение №1"), записывали контейнер на нее через КриптоПРО на Windows, на Windows и на Mac OS КриптоПРО находит контейнер на карте (для проверки использовали считыватель Gemalto).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
Здравствуйте. 1) зависит от того какую версию фреймворка и модуля поддержки считывателя используете. В свежих версиях вся работа с EAAccessory убрана внутрь модуля поддержки считывателя, вам ничего не нужно будет делать, только добавить устройство в plist 2) да, "\\\\.\\Reader\\container" |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
Понятно, спасибо. Еще пара вопросов: 1) Как можно узнать имя ридера в пути к контейнеру "\\\\.\\Reader\\container" ? Я пробовал "Feitian iR301U Contact Reader 0" (так его называет КриптоПРО CSP на Windows) - не получается. Команда "list_pcsc" (КриптоПРО на Mac OS) не выдает ничего при подключенном к компьютеру ридере.
2) В каком хранилище следует искать сертификаты со смарт карты (например я пытаюсь искать сертификаты через CertEnumCertificatesInStore) ? "MY", "TRUST"?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
1)Можно перечислить считыватели при помощи GetProvParam PP_ENUMREADERS.
2)Если сертификат записан внутрь контейнера на смарткарте, то ни в каком -- надо открыть контейнер и потом получить ключ и получить сертификат через вызов GetKeyParam KP_CERTIFICATE |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
Здравствуйте, столкнулся с крэшем приложения при использовании смарт карты.
На карте "Магистра" храним пару ключей в контейнере. На айпэде создаем сертификат (как описано в предыдущем посте) и связываем его с закрытым ключом в контейнере. Проверяю существование сертификата и то, что он связан с закрытым ключом (CertFindCertificateInStore, CryptAcquireCertificatePrivateKey) - всё нормально. Задаем настройки stunnel.
При отправке сетевого запроса, приложение крэшится. В крэш логе я вижу следующее: Thread 14 Crashed: 0 lk3 0x000ced6e SCardTransmit (winscard.m:661) 1 lk3 0x002d45f8 pcsc_cmd_t0 + 1060 2 lk3 0x002d1fd0 trust_select_application + 116 3 lk3 0x002d2100 trust_unique_num + 100 4 lk3 0x002d1cdc trust_same_media + 72 5 lk3 0x002b357c supsys_call + 128 6 lk3 0x002da020 pcsc_lock + 1144 7 lk3 0x002d9820 pcsc_call + 512 8 lk3 0x002b35d4 supsys_call + 216 9 lk3 0x002c4c7c rdr_restore_call + 72 10 lk3 0x002c4734 rdr_lock + 36 11 lk3 0x0024b724 rdr_lock + 184 12 lk3 0x0023788c carrier_login + 688 13 lk3 0x0023c1a8 key_carrier_load_container + 100 14 lk3 0x00217878 GetProvParam + 7304 15 lk3 0x001ff494 CPCGetProvParam + 596 16 lk3 0x0022f140 CPGetProvParam + 88 17 lk3 0x00100838 CryptGetProvParam + 228 18 lk3 0x003136f8 SSPCPAcquireProvider + 608 19 lk3 0x00308db4 CPSSPCreateCredentials + 888 20 lk3 0x00302f10 CPAcquireCredentialsHandleA + 20 21 lk3 0x00833c00 CreateClientCredentials + 372 22 lk3 0x008346e4 handshake + 48 23 lk3 0x0083699c do_client + 1708 24 lk3 0x00837d44 run_client + 700 25 lk3 0x00838044 client + 312 26 libsystem_c.dylib 0x39d6930e _pthread_start + 306 27 libsystem_c.dylib 0x39d691d4 thread_start + 4
Лог stunnel: 2013.10.08 12:56:01 LOG5[34074:91713536]: Threading:PTHREAD Sockets:SELECT,IPv4 2013.10.08 12:56:01 LOG6[34074:91713536]: file ulimit = 2560 (can be changed with 'ulimit -n') 2013.10.08 12:56:01 LOG6[34074:91713536]: FD_SETSIZE = 1024 (some systems allow to increase this value) 2013.10.08 12:56:01 LOG5[34074:91713536]: 0 clients allowed 2013.10.08 12:56:01 LOG7[34074:91713536]: FD 22 in non-blocking mode 2013.10.08 12:56:01 LOG7[34074:91713536]: FD 24 in non-blocking mode 2013.10.08 12:56:01 LOG7[34074:91713536]: FD 25 in non-blocking mode 2013.10.08 12:56:01 LOG7[34074:91713536]: SO_REUSEADDR option set on accept socket 2013.10.08 12:56:01 LOG7[34074:91713536]: lk3app bound to 127.0.0.1:9443 2013.10.08 12:56:01 LOG7[34074:91713536]: Created pid file /var/mobile/Applications/71715B5C-B4A8-4DB0-A2BA-120E8A007203/Documents/../Library/stunnel.pid 2013.10.08 12:56:02 LOG7[34074:91713536]: lk3app accepted FD=37 from 127.0.0.1:62273 2013.10.08 12:56:02 LOG7[34074:97660928]: client start 2013.10.08 12:56:02 LOG7[34074:97660928]: lk3app started 2013.10.08 12:56:02 LOG7[34074:97660928]: FD 37 in non-blocking mode 2013.10.08 12:56:02 LOG7[34074:97660928]: TCP_NODELAY option set on local socket 2013.10.08 12:56:02 LOG5[34074:97660928]: lk3app connected from 127.0.0.1:62273 2013.10.08 12:56:02 LOG7[34074:97660928]: FD 44 in non-blocking mode 2013.10.08 12:56:02 LOG7[34074:97660928]: lk3app connecting 2013.10.08 12:56:02 LOG7[34074:97660928]: connect_wait: waiting 10 seconds 2013.10.08 12:56:02 LOG7[34074:97660928]: connect_wait: connected 2013.10.08 12:56:02 LOG7[34074:97660928]: Remote FD=44 initialized 2013.10.08 12:56:02 LOG7[34074:97660928]: TCP_NODELAY option set on remote socket 2013.10.08 12:56:02 LOG7[34074:97660928]: start SSPI connect 2013.10.08 12:56:02 LOG5[34074:97660928]: mutual auth in on. try to read the certificate 2013.10.08 12:56:02 LOG7[34074:97660928]: open file /var/mobile/Applications/71715B5C-B4A8-4DB0-A2BA-120E8A007203/Documents/client.cer with certificate
Возможно, Вы сталкивались с данной проблемой или можете посмотреть что происходит в функции SCardTransmit в файле winscard.m.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
Здравствуйте. Этот вызов: 0 lk3 0x000ced6e SCardTransmit (winscard.m:661)
в котором происходит креш находится внутри модуля поддержки считыателя, который пишут производители считывателя. winscard.m -- их код, к которому у меня нет доступа. Могу посоветовать только использовать последние модули поддержки -- из последней сборки фреймворка или можно посмотреть на сайте Feitian, есть ли более новые. Также можно сообщить им о креше, вероятно они смогут понять в чём дело. |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
Добрый день.
Получил ответ от производителя ридеров Feitian, попробовал с последней версией библиотеки - 1.5 - не помогло (http://download.ftsafe.com/files/reader/FT_iR301_SDK_v1.5_20130828Beta.zip).
У меня такой вопрос - Вы тестировали смарт карту "Магистра" с stunnel? Я пробовал подписать и верифицировать файл ключом с карты - все работает отлично, проблемы возникают именно при отправке сетевого запроса через stunnel.
Еще в SDK от Feitian, есть версия библиотеки для дебага, при ее использовании в лог печатается информация о записи/чтении с карты. Если у Вас есть "Магистра" под рукой, запустите пожалуйста с дебажной версией библиотеки, можно будет сравнить с моим результатом и попросить помочь сотрудников "СмартПарка".
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
А если подключиться к УЦ через нашу панель и в типе аутентификации выбрать сертификат(тот самый, ключ к которому лежит на магистре), всё нормально? Просто действия с ключами в этом случае и в случае использования stunnel будут одинаковые -- клиентский TLS.
У меня не крешится, но наличие или отсутствие креша может зависеть от кучи разных факторов, например от прошивки самого считывателя. Я имела дело с десятком считывателей Feitian, которые выглядели совершенно одинаково, но отличались прошивкой -- половина из них работала, другая нет. Наверное есть более сложные дефекты при которых считыватель работает, но не всегда или работает, но время от времени в драйвере что-то крешится.
Кроме того может быть важно сочетание прошивки считывателя и используемого модуля поддержки, а также SDK iOS. Например все ранние версии библиотек крешили приложение при запуске, если для линковки использовать линкер из SDK 4.2. Я писала Feitian об этом, не знаю исправили они или нет. |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
Запустил панель из фреймворка. В "взаимодействие с УЦ" выбрал сертификат (Аутентификация/По сертификату), потом установил корневой сертификат, зашел в "Отправить запрос на сертификат", тут фреймворк спросил пароль на контейнер на карте. Вроде бы все работает. Прискорбно, что считыватели Feitian так плохо работают. А по Вашему опыту, ридер из комплекта "Аладдина" для мобильных разработок - с ним такие же проблемы могут возникнуть, или он все-таки понадежнее? Судя по обсуждению в теме http://www.cryptopro.ru/...t=6548&p=2#post41759 stunnel работает нормально с этим комплектом.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
У меня очень небольшой опыт работы со считывателями от Аладдин -- у меня один их считыватель, он работает. Для статистики одного считывателя мало. Могу сказать что компания Аладдин при использовании их считывателей берет на себя проблемы обеспечения соответствия версии прошивки считывателя и модуля поддержки (это одна из основных причин проблем). Соответственно, с возникающими проблемами при использовании их считывателя можно обращаться к ним. Скорость решения проблем скорее всего будет зависеть от их характера -- какие-то проблемы будут решаться быстрее чем с Feitian. |
Татьяна ООО Крипто-Про |
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close