Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2012(UTC) Сообщений: 119 Откуда: Digital Design Сказал «Спасибо»: 19 раз Поблагодарили: 1 раз в 1 постах
|
Добрый день. Пытаюсь победить такую проблему, но КП, видимо, сильнее.. Мне нужно использовать методы КП внутри нескольких динамических фремворков, которые в свою очередь линкуются в приложение. Возможно ли это? У меня получилось прилинковать КП, но, видимо, какие-то внутренние проверки блокируют работу с методами криптографии. Я уже все перепробовал, неделю, наверное, положил на попытки заставить работать всё это дело.. Схема такая: Код:
Фреймворк 1
/ \
КП Приложения
\ /
Фреймворк 2 — Фреймворк 3
Все 3 фреймворка используют функции КП. У нас несколько приложений с похожей функциональностью в плане криптографии. Пытаемся избавиться от дублирования кода. Помогите, пожалуйста, разобраться, а то у меня уже руки опускаются. Отредактировано пользователем 3 июня 2019 г. 11:21:06(UTC)
| Причина: Не указана |
ВАСИЛИЙ АНИСИМОВ Ведущий iOS разработчик в «Digital Design» www.digdes.ru |
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,261
Сказал(а) «Спасибо»: 21 раз Поблагодарили: 443 раз в 322 постах
|
В конечном приложении должны быть прошиты контрольные суммы. Делается вызовом ConfigureApplication (см. ReadMe.txt). Это одна из самых популярных ошибок при сборке. Вторая по популярности - ошибочные настройки Strip-а (см. тот же ReadMe.txt). |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2012(UTC) Сообщений: 119 Откуда: Digital Design Сказал «Спасибо»: 19 раз Поблагодарили: 1 раз в 1 постах
|
Естественно, всё это сделано. "Стрипы" отключены везде, где только можно. КП пытается проверить контрольные суммы в каждом бинарнике, к которому прилинкован. Я добавил прописывание чексуммы во все три фреймоврка, но этого, видимо, тоже не достаточно. КП не прилинкован напрямую в конечное приложение, приложение использует только API фреймворков 1-3, а фреймворки в свою очередь дергают API КП. Я сначала тоже боролся с проверкой чексуммы, но это победил, КП перестал на нее ругатся при старте, и больше никаких ошибок не пишет. Возможно ли включить расширенное логирование какое-то, чтобы узнать в чём причина?
|
ВАСИЛИЙ АНИСИМОВ Ведущий iOS разработчик в «Digital Design» www.digdes.ru |
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,261
Сказал(а) «Спасибо»: 21 раз Поблагодарили: 443 раз в 322 постах
|
Управление журналированием в config.ini в секции debug. Но ведь и сейчас вы получаете какие-то ошибки? Какая функция и какую ошибку возвращает и что вываливается в консоль XCode? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2012(UTC) Сообщений: 119 Откуда: Digital Design Сказал «Спасибо»: 19 раз Поблагодарили: 1 раз в 1 постах
|
Сейчас не отрабатывает функция CertDuplicateCertificateContext, она выдает 0x0, а CSP_GetLastError говорит что всё ок и выдает null. При подключении КП напрямую всё работает нормально. Ошибок вроде как нет никаких в логе, смущает, что все логи КП дублируя несколько раз, типа: Цитата: Trying to encrypt /var/mobile/Containers/Data/Application/EE91C628-001D-46A0-B02B-AE5163F55F32/Documents/../Documents/cprocsp/keys, /var/mobile/Containers/Data/Application/EE91C628-001D-46A0-B02B-AE5163F55F32/Documents/../Documents/cprocsp/users/stores. Encryption succeeded.
Trying to encrypt /var/mobile/Containers/Data/Application/EE91C628-001D-46A0-B02B-AE5163F55F32/Documents/../Documents/cprocsp/keys, /var/mobile/Containers/Data/Application/EE91C628-001D-46A0-B02B-AE5163F55F32/Documents/../Documents/cprocsp/users/stores. Encryption succeeded.
Trying to encrypt /var/mobile/Containers/Data/Application/EE91C628-001D-46A0-B02B-AE5163F55F32/Documents/../Documents/cprocsp/keys, /var/mobile/Containers/Data/Application/EE91C628-001D-46A0-B02B-AE5163F55F32/Documents/../Documents/cprocsp/users/stores. Encryption succeeded.
КП последняя релизная, 4.0r4. Я сегодня-завтра могу попробовать сделать тестовое приложение, воспроизводящее эту мою боль, если поможет.. |
ВАСИЛИЙ АНИСИМОВ Ведущий iOS разработчик в «Digital Design» www.digdes.ru |
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,261
Сказал(а) «Спасибо»: 21 раз Поблагодарили: 443 раз в 322 постах
|
Глянул на код: CertDuplicateCertificateContext() не может вернуть NULL и не выставить код ошибки. Последний релиз 4.0 - это CSP 4.0 R5 - 2019-03-11 КриптоПро CSP 4.0.9969 Bayes. 5.0 ещё свежее: 2019-05-07 КриптоПро CSP 5.0.11453 Fury. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2012(UTC) Сообщений: 119 Откуда: Digital Design Сказал «Спасибо»: 19 раз Поблагодарили: 1 раз в 1 постах
|
Ну не приснилось же мне :) Под релизом я имею в виду сертифицированную версию |
ВАСИЛИЙ АНИСИМОВ Ведущий iOS разработчик в «Digital Design» www.digdes.ru |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2012(UTC) Сообщений: 119 Откуда: Digital Design Сказал «Спасибо»: 19 раз Поблагодарили: 1 раз в 1 постах
|
Постараюсь сделать тестовое приложение-пример в ближайшее время. |
ВАСИЛИЙ АНИСИМОВ Ведущий iOS разработчик в «Digital Design» www.digdes.ru |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2012(UTC) Сообщений: 119 Откуда: Digital Design Сказал «Спасибо»: 19 раз Поблагодарили: 1 раз в 1 постах
|
Так, я всё наврал. Ошибка в лог пишется, cpcsp: 0x106992b80: :730 CPCReleaseContext (hProv=1069842484, dwFlags=0x0). Result=1, Err=0x80090020 И CSP_GetLastError выдаёт 0x57.
В тестовом приложении не получилось воспроизвести, видимо, кейс сложнее.. |
ВАСИЛИЙ АНИСИМОВ Ведущий iOS разработчик в «Digital Design» www.digdes.ru |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2012(UTC) Сообщений: 119 Откуда: Digital Design Сказал «Спасибо»: 19 раз Поблагодарили: 1 раз в 1 постах
|
Все, я понял в чем проблема, меня наконец осенило: Если КП линкуется динамически в несколько фреймворков, в каждом фреймворке он работает по отдельности. И если в одном фреймворке вызвать метод другого фреймворка с передачей контекста сертификата, к примеру, то КП во втором фреймворке ничего не знает о контексте из первого и всё ломается. Тестовое приложение: https://www.dropbox.com/...ramework%20Test.zip?dl=0Можно ли что-то с этим сделать? Если линковать статически, то всё ок, но мне нужна динамическая линковка, так как в проекте свифтовый код. Отредактировано пользователем 5 июня 2019 г. 19:22:47(UTC)
| Причина: Опечатка |
ВАСИЛИЙ АНИСИМОВ Ведущий iOS разработчик в «Digital Design» www.digdes.ru |
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close