Статус: Новичок
Группы: Участники
Зарегистрирован: 10.07.2015(UTC) Сообщений: 8
|
Хочу программно получить сведения о лицензии: public void getLicence() { License license = null; try { license = new License(); license.getEndDate(); } catch (IOException e) { e.printStackTrace(); }
} В конструкторе класса License происходит исключение:
java.io.IOException: java.lang.IllegalArgumentException: length not equals serial length
В приложении ACSP все сведения отображаются.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. License - это класс JCP? Который в JCP.jar в вашем приложении? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.07.2015(UTC) Сообщений: 8
|
Да в JCP.jar. Если быть совсем точным тут JCP.jar\ru\CryptoPro\JCP\tools\License.class Отредактировано пользователем 10 июля 2015 г. 10:05:58(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Это работать не будет, т.к. лицензия не для JCP, а для CSP (если точнее, для libcspjni.so внутри ACSP.apk). |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.07.2015(UTC) Сообщений: 8
|
Автор: afev Это работать не будет, т.к. лицензия не для JCP, а для CSP (если точнее, для libcspjni.so внутри ACSP.apk). Есть ли способ получить сведения о лицензии ACSP? Отредактировано пользователем 10 июля 2015 г. 10:31:36(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Самый простой способ, пожалуй, есть вы просто покажете окно ACSP с лицензией. Более сложный: в JInitCSP есть пакет ru.cprocsp.ACSP.tools.license, в нем класс CSPLicense. Если вызвать его метод initFromClient после выполнения CSPConfig.init() и загрузки jar-библиотек, то можно попробовать использовать метод check. Этот метод принимает серийный номер и выдает статус лицензии, тип, дату установки, оставшееся время: Код:
public static final int LICENSE_STATUS_OK = 0; // Лицензия проверена успешно.
public static final int LICENSE_STATUS_INVALID = 1; // Некорректная лицензия.
public static final int LICENSE_STATUS_EXPIRED = 2; // Срок действия лицензии истек.
public static final int LICENSE_TYPE_PERMANENT = 2; // Тип лицензии: постоянная.
public static final int LICENSE_TYPE_EXPIRED = -1; // Тип лицензии: истекшая.
byte[] encodedLicenseDate = new byte[65];
int[] encodedExpiredThroughDays = new int[1];
int[] licenseTypeBuff = new int[1];
int status = CSPLicense.check(true, <serial>, encodedLicenseDate, encodedExpiredThroughDays, licenseTypeBuff);
В нашем случае метод не используется широко, поэтому в возможностях ограничен. Отредактировано пользователем 10 июля 2015 г. 10:46:24(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.07.2015(UTC) Сообщений: 8
|
Автор: afev Самый простой способ, пожалуй, есть вы просто покажете окно ACSP с лицензией. Более сложный: в JInitCSP есть пакет ru.cprocsp.ACSP.tools.license, в нем класс CSPLicense. Если вызвать его метод initFromClient после выполнения CSPConfig.init() и загрузки jar-библиотек, то можно попробовать использовать метод check. Этот метод принимает серийный номер и выдает статус лицензии, тип, дату установки, оставшееся время: Код:
public static final int LICENSE_STATUS_OK = 0; // Лицензия проверена успешно.
public static final int LICENSE_STATUS_INVALID = 1; // Некорректная лицензия.
public static final int LICENSE_STATUS_EXPIRED = 2; // Срок действия лицензии истек.
public static final int LICENSE_TYPE_PERMANENT = 2; // Тип лицензии: постоянная.
public static final int LICENSE_TYPE_EXPIRED = -1; // Тип лицензии: истекшая.
byte[] encodedLicenseDate = new byte[65];
int[] encodedExpiredThroughDays = new int[1];
int[] licenseTypeBuff = new int[1];
int status = CSPLicense.check(true, <serial>, encodedLicenseDate, encodedExpiredThroughDays, licenseTypeBuff);
В нашем случае метод не используется широко, поэтому в возможностях ограничен. Спасибо. Работает. Дату декодировал, а как можно декодировать параметр encodedExpiredThroughDay?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Если лицензия ограничена по дате, в параметре должно быть количество дней до даты истечения срока действия лицензии. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.07.2015(UTC) Сообщений: 8
|
Все получилось. Остался последний вопрос Можно ли вытащить серийный номер, введенный в CSP, чтобы передать его в этот метод. Вводить пользователю серийник каждый раз не вариант, "креактивнее" просто intent'ом приложение запустить.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Вытащить серийный номер можно разве что из /<app_dir>/cprocsp/etc/license.ini. Но нужно учитывать, что а) вводить лицензию надо в ACSP б) license.ini берется из ACSP при запуске вашего приложения (то есть чтобы обновить файл, потребуется остановить ваше приложение, тогда при инициализации новый файл license.ini скопируется из ACSP). |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close