Статус: Новичок
  Группы: Участники
 Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
  
	 
	
     | 
    
        
            
		      
                Добрый день. На android девайсе установлена ACSP, через панель управления скопировал контейнер с тестовым сертификатом. Так же создал ключевой контейнер и прописал данные сертификата через ACSP. В списке личных, отображаются оба контейнера с сертификатами, вообщем все вроде бы хорошо. Теперь пытаюсь получить данные контейнера в своем приложении. Делаю как и многие вот так: Код:
class SignController(private val clientAlias: String? = null,
                     private val clientPassword: String? = null) {
  fun requestSign(signable: ByteArray): ByteArray {
    val keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME).apply { load(null, null) }
    val privateKey = keyStore.getKey(clientAlias, clientPassword?.toCharArray()) as PrivateKey?
    val certificate = keyStore.getCertificate(clientAlias) as X509Certificate?
    if (privateKey == null || certificate == null) throw Error("Private key or/and certificate is null.")
    return Signature.getInstance(privateKey.algorithm, JCSP.PROVIDER_NAME).run {
      initSign(privateKey)
      update(signable)
      sign()
    }
  }
}
 
 Как бы я не изощрялся keyStore.aliases() возвращается с пустым вектором. Соответственно нет приватного ключа нет сертификата и обе переменные null. В activity есть вызов  Код:val initCode = CSPConfig.init(activity) 
 и вызов Код:fun initJavaProviders() {
    // Загрузка Java CSP (хеш, подпись, шифрование,
    // генерация контейнеров).
    if (Security.getProvider(JCSP.PROVIDER_NAME) == null) {
      Security.addProvider(JCSP())
    }
    // Инициализация XML DSig (хеш, подпись).
    XmlInit.init()
  }
 
 В документации не смог найти причину, так же обнаружил в how_to_build.doc, информацию о intnet 'ах. Подскажите пожалуйста следующее: 1) Как можно и нужно обращаться к KeyStore за контейнером из ACSP 2) Можно ли это сделать без intent 'ов из моего приложения в ACSP? Если да, как? Отредактировано пользователем 17 апреля 2018 г. 16:00:47(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                Здравствуйте. Автор: sibuty  1) Как можно и нужно обращаться к KeyStore за контейнером из ACSP 2) Можно ли это сделать без intent 'ов из моего приложения в ACSP? Если да, как?  1) Только с помощью интентов (доступ к файлам другого приложения ограничен). 2) Пока нет.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Новичок
  Группы: Участники
 Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
  
	 
	
     | 
    
        
            
		      
                Тогда такой вопрос, если у меня будет носитель, например RuToken, к нему я смогу обратиться заменив согласно доке
  тут, вот этот параметр JCSP.HD_STORE_NAME val keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME).apply { load(null, null) }? 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
         | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Новичок
  Группы: Участники
 Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
  
	 
	
     | 
    
        
            
		      
                Ага, спасибо, понял принял. :)
  То есть выходит хранилище HD_STORE_NAME в рамках каждого app будет свое, а в случае носителя, RuToken к примеру, мне даже не нужно будет ставить ACSP?  Т.к. я смогу через SDK свободно получить данные?
  И еще такой вопрос, копирование контейнера всегда происходит в HD_STORE_NAME ACSP, в случае общения по intent 'ам? А если я хочу использовать SDK, мне нужно руками подключать сертификат к HD_STORE_NAME хранилищу в моем app? 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                HDIMAGE - да, внутри каждого приложения. ACSP нужен, т.к. он содержит csp. При вызове интентов используются контейнеры внутри acsp (скопированные туда или созданные там). На счет Sdk не понял. Сертификат извлекается из контейнера.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Новичок
  Группы: Участники
 Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
  
	 
	
     | 
    
        
            
		      
                Добрый день. Имел ввиду следующее, если я хочу работать с носителем RuToken, и если я буду использовать JCSP то мне будет необходимо приложение ACSP, но если я буду использовать JCP, я смогу получить доступ к контейнеру и к сертификату на носителе не имея на девайсе ACSP? Отредактировано пользователем 18 апреля 2018 г. 13:41:28(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                Добрый день. В любом случае необходим ACSP, т.к. это и есть провайдер. JCSP, условно, переадресует запросы (CSP). JCP - криптопровайдер на java, доступа к носителям не имеет.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Новичок
  Группы: Участники
 Зарегистрирован: 12.04.2018(UTC) Сообщений: 5
  
	 
	
     | 
    
        
            
		      
                Ок, понял. Спасибо еще раз за пояснения. :) 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close