Дополню вопрос информацией. На данный момент я нашёл несколько вариантов работы с лицензией для КриптоПро JCSP, но я не уверен в том, корректно ли я с ними работаю.
У объекта, созданного через конструктор
Код:final License license = new ru.CryptoPro.JCP.tools.License()
Мы можем вызывать следующие методы для получения информации о лицензии:
Код:license.verifyLicense(); // Проверяет состояние лицензии (значение -1 указывает на просроченную лицензию).
license.getProductID(); // Возвращает ключ текущей лицензии. Локально и на стенде сервера возвращаемое значение тестовой лицензии одинаково: CF20X-X0030-00BAA-****-****.
license.getEndDate(); // Возвращает дату и время истечения текущей лицензии.
license.getDescriptionString(); // Возвращает текстовое описание текущей лицензии.
На локальной машине, у которой есть купленная, действующая лицензия для Крипто Про CSP. Приведу результат вызова методов:
Код:log.info(license.verifyLicense()); // -1
log.info(license.getEndDate()); // Sun Feb 25 15:15:13 MSK 2024
log.info(license.getDescriptionString()); // "Просроченная серверная неограниченная лицензия для лицензия на право использования на одном сервере с неограниченным кол-вом ядер с шифрованием (общая)."
На сервере с действующей лицензией для КриптоПро CSP и тестовой для JCSP:
Код:log.info(license.verifyLicense()); // 1
log.info(license.getEndDate()); // Wed Dec 25 14:57:26 MSK 2024
log.info(license.getDescriptionString()); // "Temporary server unlimited license for the license for usage on one server with unlimited amount of cores with encryption (common)."
Метод getProductID() возвращает одинаковое значение как локально, так и на сервере. Однако если вызывать следующую команду через консоль на локальной машине:
Код:java -cp .;*; ru.CryptoPro.JCSP.JCSPLicense
Получаем следующий результат:
Код:Determined encoding IBM866 not supported.
Use English locale.
License verify:
Type: Server, sign and encrypt
Allowed amount of cores: Unlimited
Serial number: PF405-60030-*****-**
Validity: Until Feb 25, 2024
Valid license.
Поле серийного номера отличается от productId возвращаемом из кода. Возможно это разные поля, но как тогда получить тот же серийный номер тестовой лицензии при вызове из кода информации о текущей лицензии?
Вопросы:
1. Возможно ли программно задать лицензию без использования контрольной панели (которая не добавлена в проект) и без создания нового LicenseLoader, который наследуется от ru.CryptoPro.JCP.tools.LicenseLoader (как это описано в LicenseLoader.pdf)?
2. Если для решения задачи требуется контрольная панель, какой JAR-файл нужно добавить в проект и как правильно его вызвать из кода? Используя вызов следующей команды через консоль:
Код:java -cp .;*; ru.CryptoPro.JCP.ControlPane.MainControlPane
Получаю ошибку:
Код:Error: Unable to initialize main class ru.CryptoPro.JCP.ControlPane.MainControlPane
Caused by: java.lang.NoClassDefFoundError: com/intellij/uiDesigner/core/Spacer
3. Если потребуется создавать собственный LicenseLoader для ввода лицензии из программного кода, как должен выглядеть метод:
Код:public AbstractLicense getNewLicense() throws Exception;
В приложении используются следующие библиотеки от Крипто Про: AdES-core, ASN1P, asn1rt, bcpkix-jdk15on-1.60, bcprov-jdk15on-1.60, bootstrapfx-core-0.4.0, CAdES, J6CF, J6Oscar, JCP, JCPRevCheck, JCPRevTools, JCryptoP, JCSP, Rutoken.
Отредактировано пользователем 27 сентября 2024 г. 17:32:11(UTC)
| Причина: Не указана