| 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 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) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                Здравствуйте.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) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                Это работать не будет, т.к. лицензия не для 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) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                Самый простой способ, пожалуй, есть вы просто покажете окно 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) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                Если лицензия ограничена по дате, в параметре должно быть количество дней до даты истечения срока действия лицензии. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 10.07.2015(UTC)
 Сообщений: 8
 
 | 
            
		      
                Все получилось. Остался последний вопрос Можно ли вытащить серийный номер, введенный в CSP, чтобы передать его в этот метод. Вводить пользователю серийник каждый раз не вариант, "креактивнее" просто intent'ом приложение запустить. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                Вытащить серийный номер можно разве что из /<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