Статус: Участник
Группы: Участники
Зарегистрирован: 17.06.2020(UTC) Сообщений: 23
Сказал(а) «Спасибо»: 2 раз
|
Здравствуйте! Уже не в первый раз встречаюсь с тем, что на андроид приложении в какой то момент что-то отваливается в криптопро. Изза этого не инициализируется ssl контекст и также вылетает получение лицензии с NPE Цитата: Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'int ru.CryptoPro.JCP.tools.pref_store.PrefStore.getInt(java.lang.String, int)' on a null object reference at ru.CryptoPro.ssl.android.util.TLSSettings.getDefaultSize(Unknown Source:8) at ru.CryptoPro.ssl.android.cl_49.<init>(Unknown Source:26) at ru.CryptoPro.ssl.android.SSLContextImpl.<init>(Unknown Source:12) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at java.security.Provider$Service.newInstance(Provider.java:1635) Цитата:Caused by: java.lang.IllegalStateException: CSPConfig.INSTANCE.cspProviderInfo must not be null Можете подсказать в чем может быть проблема? Провайдеры и инфраструктура инициализируется в Application, после очищения данных приложения все становится нормально, но до поры до времени
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Судя по ошибкам, такое возможно, если CSPConfig.init() вернул ошибку, то есть инициализация не выполнилась (часть объектов не создана), но, допустим, на ошибку не отреагировали и продолжили выполнение. Используется провайдер внутри приложения или ACSP отдельно? Какой версии? Как используется провайдер? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.06.2020(UTC) Сообщений: 23
Сказал(а) «Спасибо»: 2 раз
|
Автор: Евгений Афанасьев ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Здравствуйте. Судя по ошибкам, такое возможно, если CSPConfig.init() вернул ошибку, то есть инициализация не выполнилась (часть объектов не создана), но, допустим, на ошибку не отреагировали и продолжили выполнение. Используется провайдер внутри приложения или ACSP отдельно? Какой версии? Как используется провайдер? Провайдер используется внутри приложения. Версия 5.0.40424. Код такой Цитата: override suspend fun initInfrastructure() { val initResult = CSPConfig.init(context) Timber.d(mapCryptoProResponse(initResult)) }
override suspend fun initProviders() { if (Security.getProvider(JCSP.PROVIDER_NAME) == null) { Security.addProvider(JCSP()) }
if (Security.getProvider(Provider.PROVIDER_NAME) == null) { Security.addProvider(Provider()) }
cpSSLConfig.setDefaultSSLProvider(JCSP.PROVIDER_NAME) if (Security.getProvider(RevCheck.PROVIDER_NAME) == null) { Security.addProvider(RevCheck()) } AdESConfig.setDefaultProvider(JCSP.PROVIDER_NAME)
System.setProperty("ru.CryptoPro.CAdES.validate_tsp", "false") System.setProperty("com.sun.security.crl.timeout", "5") System.setProperty("ru.CryptoPro.crl.read_timeout", "5")
System.setProperty("com.sun.security.enableCRLDP", "true") System.setProperty("com.ibm.security.enableCRLDP", "true") System.setProperty("tls_prohibit_disabled_validation", "false") }
Вызывается в Application onCreate() Цитата: try { cryptoInitialization.initInfrastructure() cryptoInitialization.initProviders() } catch (ex: Exception) { Timber.d(ex) }
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Код:
override suspend fun initInfrastructure() {
val initResult = CSPConfig.init(context)
Timber.d(mapCryptoProResponse(initResult))
}
В случае initResult != 0 (ошибка) - каково поведение приложения? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.06.2020(UTC) Сообщений: 23
Сказал(а) «Спасибо»: 2 раз
|
Автор: Евгений Афанасьев ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Код:
override suspend fun initInfrastructure() {
val initResult = CSPConfig.init(context)
Timber.d(mapCryptoProResponse(initResult))
}
В случае initResult != 0 (ошибка) - каково поведение приложения? продолжается инициализация провайдеров, ошибка сохраняется и выдается пользователю уже когда будет открыт главный экран
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Если была ошибка инициализации, то с определенной долей вероятности может сломать загрузка JCSP. Например, в случае, Код:
Attempt to invoke interface method 'int ru.CryptoPro.JCP.tools.pref_store.PrefStore.getInt(java.lang.String, int)' on a null object reference
не существует объект для работы с хранилищем, а он создается при TLSSettings.init() в конце CSPConfig.init(), если он успешен. Аналогично ProviderInfo. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.06.2020(UTC) Сообщений: 23
Сказал(а) «Спасибо»: 2 раз
|
Автор: Евгений Афанасьев ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Если была ошибка инициализации, то с определенной долей вероятности может сломать загрузка JCSP. Например, в случае, Код:
Attempt to invoke interface method 'int ru.CryptoPro.JCP.tools.pref_store.PrefStore.getInt(java.lang.String, int)' on a null object reference
не существует объект для работы с хранилищем, а он создается при TLSSettings.init() в конце CSPConfig.init(), если он успешен. Аналогично ProviderInfo. А что можно с этим делать. Просто ситуация странная, на чистой установке все работает хорошо, но после какого-то момента происходит такая ошибка. Может я могу какие-нибудь логи собрать?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Для начала можно посмотреть, что вернула CSPConfig.init(). Допустим, выводить предупреждающее сообщение в случае ошибки CSPConfig.init() и закрывать приложение, чтобы оно не падало, а затем выяснять причины: после ошибки подключить телефон в режиме разработчика, утилитой adb из состава android sdk получить логи с ошибками, приложить тут. Возможно, нужно обновить SDK. Отредактировано пользователем 1 сентября 2020 г. 18:41:09(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.06.2020(UTC) Сообщений: 23
Сказал(а) «Спасибо»: 2 раз
|
Автор: Евгений Афанасьев ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Для начала можно посмотреть, что вернула CSPConfig.init(). Допустим, выводить предупреждающее сообщение в случае ошибки CSPConfig.init() и закрывать приложение, чтобы оно не падало, а затем выяснять причины: после ошибки подключить телефон в режиме разработчика, утилитой adb из состава android sdk получить логи с ошибками, приложить тут. Возможно, нужно обновить SDK. По логам я вижу что после нескольких раз запуска дебаггера появляется такая ошибка Цитата: E/cpcsp: <cpcsp>LicWarning!CryptoPro CSP license is not set or corrupted. E/cpcsp: <cpcsp>VerifyLicense!license not found E/cpcsp: <cpcsp>DWORD CPCAcquireContext(HCRYPTMODULE, HCRYPTPROV *, CHAR *, DWORD, PVTABLEPROVSTRUC)!License fail cc=0x7620fcd460 hCSP=0x7660f62240 E/cpcsp: <libssp>BOOL CryptAcquireContextA(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD)!failed: LastError = 0x8009001D
Хотя как я уже говорил, эта проблема не возникает после чистой установки
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Если это единственная ошибка в логе, то вопрос: лицензия валидная? Работа ломается не через 3 месяца, когда истекает срок триальной лицензии? |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close