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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Илья Кузьмин  
#1 Оставлено : 31 августа 2020 г. 14:41:28(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 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, после очищения данных приложения все становится нормально, но до поры до времени

Offline Евгений Афанасьев  
#2 Оставлено : 31 августа 2020 г. 20:49:00(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Здравствуйте.
Судя по ошибкам, такое возможно, если CSPConfig.init() вернул ошибку, то есть инициализация не выполнилась (часть объектов не создана), но, допустим, на ошибку не отреагировали и продолжили выполнение.
Используется провайдер внутри приложения или ACSP отдельно? Какой версии? Как используется провайдер?
Offline Илья Кузьмин  
#3 Оставлено : 1 сентября 2020 г. 9:43:06(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
Судя по ошибкам, такое возможно, если 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)
}
Offline Евгений Афанасьев  
#4 Оставлено : 1 сентября 2020 г. 14:57:51(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Код:

override suspend fun initInfrastructure() {
val initResult = CSPConfig.init(context)
Timber.d(mapCryptoProResponse(initResult))
}

В случае initResult != 0 (ошибка) - каково поведение приложения?
Offline Илья Кузьмин  
#5 Оставлено : 1 сентября 2020 г. 15:58:44(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Код:

override suspend fun initInfrastructure() {
val initResult = CSPConfig.init(context)
Timber.d(mapCryptoProResponse(initResult))
}

В случае initResult != 0 (ошибка) - каково поведение приложения?


продолжается инициализация провайдеров, ошибка сохраняется и выдается пользователю уже когда будет открыт главный экран
Offline Евгений Афанасьев  
#6 Оставлено : 1 сентября 2020 г. 16:46:31(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Если была ошибка инициализации, то с определенной долей вероятности может сломать загрузка 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.
Offline Илья Кузьмин  
#7 Оставлено : 1 сентября 2020 г. 18:24:43(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Если была ошибка инициализации, то с определенной долей вероятности может сломать загрузка 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.


А что можно с этим делать. Просто ситуация странная, на чистой установке все работает хорошо, но после какого-то момента происходит такая ошибка. Может я могу какие-нибудь логи собрать?
Offline Евгений Афанасьев  
#8 Оставлено : 1 сентября 2020 г. 18:37:04(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Для начала можно посмотреть, что вернула CSPConfig.init(). Допустим, выводить предупреждающее сообщение в случае ошибки CSPConfig.init() и закрывать приложение, чтобы оно не падало, а затем выяснять причины: после ошибки подключить телефон в режиме разработчика, утилитой adb из состава android sdk получить логи с ошибками, приложить тут. Возможно, нужно обновить SDK.

Отредактировано пользователем 1 сентября 2020 г. 18:41:09(UTC)  | Причина: Не указана

Offline Илья Кузьмин  
#9 Оставлено : 2 сентября 2020 г. 12:16:10(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Для начала можно посмотреть, что вернула 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


Хотя как я уже говорил, эта проблема не возникает после чистой установки
Offline Евгений Афанасьев  
#10 Оставлено : 2 сентября 2020 г. 12:43:29(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Если это единственная ошибка в логе, то вопрос: лицензия валидная? Работа ломается не через 3 месяца, когда истекает срок триальной лицензии?
Offline Илья Кузьмин  
#11 Оставлено : 2 сентября 2020 г. 13:45:10(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Если это единственная ошибка в логе, то вопрос: лицензия валидная? Работа ломается не через 3 месяца, когда истекает срок триальной лицензии?


Да, судя по тому что возвращает sdk лицензия на 100+ дней ещё осталась. Конректно в какой то момент ломается проверка лицензии, не сразу а через несколько запусков с дебаггером
Offline Евгений Афанасьев  
#12 Оставлено : 3 сентября 2020 г. 12:29:37(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Больше нет ошибок в logcat до вывода сообщений о лицензии? Если нет, то пробуйте после такой ошибки выкачать файл /etc/license.ini из папки приложения и, если в нем нет долгосрочной лицензии, прикрепить тут.
Offline Илья Кузьмин  
#13 Оставлено : 4 сентября 2020 г. 20:04:43(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Больше нет ошибок в logcat до вывода сообщений о лицензии? Если нет, то пробуйте после такой ошибки выкачать файл /etc/license.ini из папки приложения и, если в нем нет долгосрочной лицензии, прикрепить тут.


Сейчас поймал побольше логов

Цитата:

E/System: Uncaught exception thrown by finalizer
E/System: java.lang.RuntimeException: java.security.InvalidKeyException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object ru.CryptoPro.JCSP.MSCAPI.cl_5.clone()' on a null object reference
at ru.CryptoPro.JCSP.Cipher.GostMac.engineUpdate(Unknown Source:31)
at javax.crypto.Mac.update(Mac.java:574)
at ru.CryptoPro.ssl.android.pc_0.cl_4.b(Unknown Source:15)
at ru.CryptoPro.ssl.android.pc_0.cl_4.a(Unknown Source:23)
at ru.CryptoPro.ssl.android.pc_0.cl_4.a(Unknown Source:6)
at ru.CryptoPro.ssl.android.cl_38.a(Unknown Source:47)
at ru.CryptoPro.ssl.android.cl_51.b(Unknown Source:2)
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:56)
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:133)
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:1)
at ru.CryptoPro.ssl.android.cl_51.c(Unknown Source:53)
at ru.CryptoPro.ssl.android.cl_51.close(Unknown Source:10)
at ru.CryptoPro.ssl.android.cl_51.finalize(Unknown Source:9)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:291)
at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:278)
at java.lang.Daemons$Daemon.run(Daemons.java:139)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.security.InvalidKeyException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object ru.CryptoPro.JCSP.MSCAPI.cl_5.clone()' on a null object reference
at ru.CryptoPro.JCSP.Key.GostSecretKey.extractSpec(Unknown Source:139)
at ru.CryptoPro.JCSP.Cipher.GostMac.prepare(Unknown Source:14)
at ru.CryptoPro.JCSP.Cipher.GostMac.engineUpdate(Unknown Source:0)
at javax.crypto.Mac.update(Mac.java:574) 
at ru.CryptoPro.ssl.android.pc_0.cl_4.b(Unknown Source:15) 
at ru.CryptoPro.ssl.android.pc_0.cl_4.a(Unknown Source:23) 
at ru.CryptoPro.ssl.android.pc_0.cl_4.a(Unknown Source:6) 
at ru.CryptoPro.ssl.android.cl_38.a(Unknown Source:47) 
at ru.CryptoPro.ssl.android.cl_51.b(Unknown Source:2) 
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:56) 
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:133) 
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:1) 
at ru.CryptoPro.ssl.android.cl_51.c(Unknown Source:53) 
at ru.CryptoPro.ssl.android.cl_51.close(Unknown Source:10) 
at ru.CryptoPro.ssl.android.cl_51.finalize(Unknown Source:9) 
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:291) 
at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:278) 
at java.lang.Daemons$Daemon.run(Daemons.java:139) 
at java.lang.Thread.run(Thread.java:923) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object ru.CryptoPro.JCSP.MSCAPI.cl_5.clone()' on a null object reference
at ru.CryptoPro.JCSP.Key.JCSPSecretKeySpec.clone(Unknown Source:4)
at ru.CryptoPro.JCSP.Key.GostSecretKey.extractSpec(Unknown Source:129)
at ru.CryptoPro.JCSP.Cipher.GostMac.prepare(Unknown Source:14) 
at ru.CryptoPro.JCSP.Cipher.GostMac.engineUpdate(Unknown Source:0) 
at javax.crypto.Mac.update(Mac.java:574) 
at ru.CryptoPro.ssl.android.pc_0.cl_4.b(Unknown Source:15) 
at ru.CryptoPro.ssl.android.pc_0.cl_4.a(Unknown Source:23) 
at ru.CryptoPro.ssl.android.pc_0.cl_4.a(Unknown Source:6) 
at ru.CryptoPro.ssl.android.cl_38.a(Unknown Source:47) 
at ru.CryptoPro.ssl.android.cl_51.b(Unknown Source:2) 
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:56) 
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:133) 
at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:1) 
at ru.CryptoPro.ssl.android.cl_51.c(Unknown Source:53) 
at ru.CryptoPro.ssl.android.cl_51.close(Unknown Source:10) 
at ru.CryptoPro.ssl.android.cl_51.finalize(Unknown Source:9) 
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:291) 
at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:278) 
at java.lang.Daemons$Daemon.run(Daemons.java:139) 
at java.lang.Thread.run(Thread.java:923) 
E/cpcsp: <cpcsp>OpenContainer!OpenContainer kcar_open fail (0x80090016)
E/cpcsp: <libssp>BOOL CryptAcquireContextA(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD)!failed: LastError = 0x80090016
E/cpcsp: <cpcsp>OpenContainer!OpenContainer kcar_open fail (0x80090016)
E/cpcsp: <libssp>BOOL CryptAcquireContextA(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD)!failed: LastError = 0x80090016
E/cpcsp: <cpcsp>OpenContainer!OpenContainer kcar_open fail (0x80090016)
E/cpcsp: <libssp>BOOL CryptAcquireContextA(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD)!failed: LastError = 0x80090016
E/cpcsp: <cpcsp>LicWarning!CryptoPro CSP license is expired or not yet valid.


Это уже на другой лицензии, на 274 дня
Offline Илья Кузьмин  
#14 Оставлено : 8 сентября 2020 г. 15:28:02(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Больше нет ошибок в logcat до вывода сообщений о лицензии? Если нет, то пробуйте после такой ошибки выкачать файл /etc/license.ini из папки приложения и, если в нем нет долгосрочной лицензии, прикрепить тут.


Автор: Евгений Афанасьев Перейти к цитате
Если это единственная ошибка в логе, то вопрос: лицензия валидная? Работа ломается не через 3 месяца, когда истекает срок триальной лицензии?


Наверно все дело в том что в license.ini на каждом новом запуске лицензия обрастает слэшами

Цитата:

ProductID = "\"\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" \
"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" \"\\" \
"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\1234-1234-1234-1\\\" \\\"" \
"1234-1234\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" \"\\\\\\\\\\\\\\\\\\\\\\\\\\" \
"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\""


я пока не понимаю в каком месте и почему
Offline Евгений Афанасьев  
#15 Оставлено : 8 сентября 2020 г. 15:39:42(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Как бы это воспроизвести?
Опишите, пожалуйста, что делаете.
Что-нибудь делаете с лицензией с помощью каких-нибудь классов JInitCSP для работы с ней? Допустим, установка новой лицензии, проверка текущей, и т.п.

Отредактировано пользователем 8 сентября 2020 г. 15:41:08(UTC)  | Причина: Не указана

Offline Илья Кузьмин  
#16 Оставлено : 8 сентября 2020 г. 16:07:29(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Как бы это воспроизвести?
Опишите, пожалуйста, что делаете.
Что-нибудь делаете с лицензией с помощью каких-нибудь классов JInitCSP для работы с ней? Допустим, установка новой лицензии, проверка текущей, и т.п.


Да, есть методы получения лицензии

Цитата:
CSPConfig.INSTANCE.cspProviderInfo.license


Ещё достаем форматированную лицензию

Цитата:
cryptoLicense.maskedSerialNumber


и проверка

Цитата:
val encodedExpiredThroughDays = IntArray(1)
val realLicense = cryptoLicense.serialNumber
val licenseType = IntArray(1)
CSPLicense.check(true, realLicense, ByteArray(65), encodedExpiredThroughDays, licenseType);
Offline Евгений Афанасьев  
#17 Оставлено : 8 сентября 2020 г. 16:08:39(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Спасибо, будем проверять.
Offline Илья Кузьмин  
#18 Оставлено : 8 сентября 2020 г. 17:24:52(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Спасибо, будем проверять.


Я локализировал проблему, кажется перезапись лицензии происходит в методе

Цитата:
CSPLicense.check


Но на чистом проекте тот же самый код работает нормально и не происходит никаких добавлений лишних символов. Подскажите, есть ли какая либо причина такого поведения? Может мы какие то конфиги неправильные используем или ещё что-то
Offline Евгений Афанасьев  
#19 Оставлено : 8 сентября 2020 г. 17:28:42(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,188
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 515 раз в 494 постах
Сложно сказать, будем воспроизводить, о результатах напишем. Вероятно, ошибка при записи, хотя с подобным не сталкивались.
Offline Илья Кузьмин  
#20 Оставлено : 8 сентября 2020 г. 19:00:12(UTC)
Илья Кузьмин

Статус: Участник

Группы: Участники
Зарегистрирован: 17.06.2020(UTC)
Сообщений: 23

Сказал(а) «Спасибо»: 2 раз
Автор: Евгений Афанасьев Перейти к цитате
Сложно сказать, будем воспроизводить, о результатах напишем. Вероятно, ошибка при записи, хотя с подобным не сталкивались.


Я сейчас тоже потыкал, увидел что на экспайреных лицензиях этого не происходит, на нашей лицензии такая история прям при каждом новом запуске приложения происходит. Если сделать CSPLicense.check(false,..) то все вроде хорошо, но тогда не показывает сколько времени осталось для лицензии
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.