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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline DimaArts  
#1 Оставлено : 10 июля 2015 г. 9:56:23(UTC)
DimaArts

Статус: Новичок

Группы: Участники
Зарегистрирован: 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 все сведения отображаются.
Offline Евгений Афанасьев  
#2 Оставлено : 10 июля 2015 г. 9:57:21(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 705 раз в 666 постах
Здравствуйте.
License - это класс JCP? Который в JCP.jar в вашем приложении?
Offline DimaArts  
#3 Оставлено : 10 июля 2015 г. 9:59:44(UTC)
DimaArts

Статус: Новичок

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

Да в JCP.jar. Если быть совсем точным тут JCP.jar\ru\CryptoPro\JCP\tools\License.class

Отредактировано пользователем 10 июля 2015 г. 10:05:58(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#4 Оставлено : 10 июля 2015 г. 10:24:48(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 705 раз в 666 постах
Это работать не будет, т.к. лицензия не для JCP, а для CSP (если точнее, для libcspjni.so внутри ACSP.apk).
Offline DimaArts  
#5 Оставлено : 10 июля 2015 г. 10:26:06(UTC)
DimaArts

Статус: Новичок

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

Автор: afev Перейти к цитате
Это работать не будет, т.к. лицензия не для JCP, а для CSP (если точнее, для libcspjni.so внутри ACSP.apk).

Есть ли способ получить сведения о лицензии ACSP?

Отредактировано пользователем 10 июля 2015 г. 10:31:36(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#6 Оставлено : 10 июля 2015 г. 10:45:00(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 705 раз в 666 постах
Самый простой способ, пожалуй, есть вы просто покажете окно 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)  | Причина: Не указана

Offline DimaArts  
#7 Оставлено : 10 июля 2015 г. 11:21:52(UTC)
DimaArts

Статус: Новичок

Группы: Участники
Зарегистрирован: 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?
Offline Евгений Афанасьев  
#8 Оставлено : 10 июля 2015 г. 11:25:16(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 705 раз в 666 постах
Если лицензия ограничена по дате, в параметре должно быть количество дней до даты истечения срока действия лицензии.
Offline DimaArts  
#9 Оставлено : 10 июля 2015 г. 12:08:07(UTC)
DimaArts

Статус: Новичок

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

Все получилось. Остался последний вопрос Можно ли вытащить серийный номер, введенный в CSP, чтобы передать его в этот метод. Вводить пользователю серийник каждый раз не вариант, "креактивнее" просто intent'ом приложение запустить.
Offline Евгений Афанасьев  
#10 Оставлено : 10 июля 2015 г. 12:27:21(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 705 раз в 666 постах
Вытащить серийный номер можно разве что из /<app_dir>/cprocsp/etc/license.ini. Но нужно учитывать, что а) вводить лицензию надо в ACSP б) license.ini берется из ACSP при запуске вашего приложения (то есть чтобы обновить файл, потребуется остановить ваше приложение, тогда при инициализации новый файл license.ini скопируется из ACSP).
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.