Статус: Новичок
  Группы: Участники
 Зарегистрирован: 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