Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Василий Анисимов  
#1 Оставлено : 1 июня 2019 г. 11:26:57(UTC)
Василий Анисимов

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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
Offline Русев Андрей  
#2 Оставлено : 4 июня 2019 г. 10:44:57(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
В конечном приложении должны быть прошиты контрольные суммы. Делается вызовом ConfigureApplication (см. ReadMe.txt). Это одна из самых популярных ошибок при сборке. Вторая по популярности - ошибочные настройки Strip-а (см. тот же ReadMe.txt).
Официальная техподдержка. Официальная база знаний.
Offline Василий Анисимов  
#3 Оставлено : 4 июня 2019 г. 11:40:34(UTC)
Василий Анисимов

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.04.2012(UTC)
Сообщений: 119
Мужчина
Российская Федерация
Откуда: Digital Design

Сказал «Спасибо»: 19 раз
Поблагодарили: 1 раз в 1 постах
Естественно, всё это сделано. "Стрипы" отключены везде, где только можно. КП пытается проверить контрольные суммы в каждом бинарнике, к которому прилинкован. Я добавил прописывание чексуммы во все три фреймоврка, но этого, видимо, тоже не достаточно.
КП не прилинкован напрямую в конечное приложение, приложение использует только API фреймворков 1-3, а фреймворки в свою очередь дергают API КП.
Я сначала тоже боролся с проверкой чексуммы, но это победил, КП перестал на нее ругатся при старте, и больше никаких ошибок не пишет. Возможно ли включить расширенное логирование какое-то, чтобы узнать в чём причина?

ВАСИЛИЙ АНИСИМОВ
Ведущий iOS разработчик в «Digital Design»
www.digdes.ru
Offline Русев Андрей  
#4 Оставлено : 4 июня 2019 г. 15:47:27(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
Управление журналированием в config.ini в секции debug. Но ведь и сейчас вы получаете какие-то ошибки? Какая функция и какую ошибку возвращает и что вываливается в консоль XCode?
Официальная техподдержка. Официальная база знаний.
Offline Василий Анисимов  
#5 Оставлено : 4 июня 2019 г. 16:26:55(UTC)
Василий Анисимов

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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
Offline Русев Андрей  
#6 Оставлено : 4 июня 2019 г. 18:59:29(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 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.
Официальная техподдержка. Официальная база знаний.
Offline Василий Анисимов  
#7 Оставлено : 5 июня 2019 г. 10:47:35(UTC)
Василий Анисимов

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.04.2012(UTC)
Сообщений: 119
Мужчина
Российская Федерация
Откуда: Digital Design

Сказал «Спасибо»: 19 раз
Поблагодарили: 1 раз в 1 постах
Ну не приснилось же мне :)
Под релизом я имею в виду сертифицированную версию
ВАСИЛИЙ АНИСИМОВ
Ведущий iOS разработчик в «Digital Design»
www.digdes.ru
Offline Василий Анисимов  
#8 Оставлено : 5 июня 2019 г. 10:48:42(UTC)
Василий Анисимов

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.04.2012(UTC)
Сообщений: 119
Мужчина
Российская Федерация
Откуда: Digital Design

Сказал «Спасибо»: 19 раз
Поблагодарили: 1 раз в 1 постах
Постараюсь сделать тестовое приложение-пример в ближайшее время.
ВАСИЛИЙ АНИСИМОВ
Ведущий iOS разработчик в «Digital Design»
www.digdes.ru
Offline Василий Анисимов  
#9 Оставлено : 5 июня 2019 г. 16:18:02(UTC)
Василий Анисимов

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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
Offline Василий Анисимов  
#10 Оставлено : 5 июня 2019 г. 19:11:17(UTC)
Василий Анисимов

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.