Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
Уважаемые сотрудники КриптоПро, не могли бы вы прокомментировать? Жалуются на зависание при установке электронной подписи на одном определенном типе устройств. В том числе, воспроизводится на CreateFile. Есть несколько устройств. Среди них несколько iPad 9 поколения (которые 2021 года). Одна и та же версия ios. Одни и те же ключевые контейнеры с одними и теми же сертификатами. На ipad9 зависает процедура подписания. На остальных устройствах работает. Пробовались разные сертификаты. Пробовались ключевые контейнеры как с паролем, так и без. Устройства перезапускались, приложения переустанавливались, версия ios обновлена до крайней. Контроль целостности успешен, лицензия активна. Зависает мертво. В случае CreateFile зависание случается на: Код:
do_low_sign
if(CryptMsgGetParam(
hMsg, // Handle to the message
CMSG_CONTENT_PARAM, // Parameter type
0, // Index
pbEncodedBlob, // Pointer to the blob
&cbEncodedBlob)) // Size of the blob
У меня такого устройства нету под рукой пока. На симуляторе не воспроизводится. Подскажите, чего может быть? Чего еще посмотреть? CPROCSP во время работы пишет что-то в протокол устройства. Можно как-то средствами самого фреймворка переопределить этот вывод куда-нибудь в другое место?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
Если попытаться переопределить stdout и stderr, то перед зависанием добавляется есть такие строчки: Код:
2022-09-01 14:37:37.783 CreateFile5[7535:721809] You shall not call CryptoPro CSP from main thread
2022-09-01 14:37:37.783 CreateFile5[7535:721809] cpui ios_modern_controls = 0
Отредактировано пользователем 1 сентября 2022 г. 16:14:03(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
В releasenotes-а есть такое: https://www.cryptopro.ru...&m=125801#post125801Цитата: ios: Дополнительная реализация окон на UIAlertController для swift-приложений, активируемая по ключу ios_modern_controls в конфиге (CPCSP-7041).
Не могли бы вы рассказать, что это за параметр и как его установить во что-нибудь не 0?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,521
Сказал(а) «Спасибо»: 42 раз Поблагодарили: 618 раз в 428 постах
|
Здравствуйте. Зависания бывают по двум причинам:
- У вас swift-приложение и вы не используете ios_modern_controls, его можно задать единицей в config.ini в секции [parameters]:
Код:[parameters]
ios_modern_controls = 1
В этой реализации окон не будет галки "Запомнить пароль" при его предъявлении.
- Вы вызываете криптографию из main thread. Начиная с 2020-11-24 КриптоПро CSP 5.0.12000 Kraken в этом случае в консоль XCode мы выбрасываем сообщение "You shall not call CryptoPro CSP from main thread", чтобы разработчик мог протыкать своё приложение под XCode и увидеть, что он сделал плохой код, а не ждать зависания у клиентов.
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
Давно нельзя вызывать криптографию из основного потока? Я про такое вспомнить не могу. В файлах описаний во фреймворке про это не сказано, в releasenotes-а (по ссылке из предыдущего поста) тоже. И стандартное приложение CreateFile этому не соответствует.
Правильно я понимаю, что такое поведение как-то связано с окном пароля? Если пароля нет, а все равно виснет - значит, это не про запуск из основного потока?
И вопрос тогда еще. Т.е. получается, что синхронное подписание я не смогу вызвать? Потому что если вызвать синхронно на неосновном потоке, а есть пароль, то видимо будет дедлок. Нет?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,521
Сказал(а) «Спасибо»: 42 раз Поблагодарили: 618 раз в 428 постах
|
Никогда было нельзя. Не только из-за окон, но и из-за времени, в течение которого основной поток можно блокировать работой. Имитацию синхронной работы несложно сделать с помощью ожидания снятия блокировки асинхронным кодом. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
Хорошо, я попробую на фоновом потоке. Спасибо. Цитата: У вас swift-приложение и вы не используете ios_modern_controls, его можно задать единицей в config.ini в секции [parameters]:
Что имеется в виду под swift-приложением? Что-то про SwiftUI? Приожение на objective-c с последующими вставками swift-кода и наоборот - это swift-приложения?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,521
Сказал(а) «Спасибо»: 42 раз Поблагодарили: 618 раз в 428 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.05.2012(UTC) Сообщений: 63   Откуда: Подмосковье Сказал «Спасибо»: 5 раз
|
На неосновном потоке зависания нет. Еще раз спасибо.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close