Статус: Участник
  Группы: Участники
 Зарегистрирован: 24.01.2008(UTC) Сообщений: 16  Откуда: Москва  
	 
	
     | 
    
        
            
		      
                Добрый день. Как закрытый ключ связать с сертификатом? Есть импортированная в хранилище ключевая пара, мне надо, чтобы он был привязан к сертификату. Отредактировано пользователем 25 января 2008 г. 17:13:25(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
  
	 
	
     | 
    
        
            
		      
                CertSetCertificateContextProperty    | 
С уважением,  Юрий Строжевский  | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 24.01.2008(UTC) Сообщений: 16  Откуда: Москва  
	 
	
     | 
    
        
            
		      
                Прекрасно :) А какие параметры передавать в эту функцию? Если не сложно, то дайте код. 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
  
	 
	
     | 
    
        
            
		      
                Я в Вас верю - сами догадаетесь какие параметры туда передавать. Главное - наличие MSDN, где можно про эти параметры почитать :)    | 
С уважением,  Юрий Строжевский  | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 24.01.2008(UTC) Сообщений: 16  Откуда: Москва  
	 
	
     | 
    
        
            
		      
                А не кажется ли вам, что если вопрос задается здесь на форуме, то ищется ответ сколько-нибудь развернутый, а не отсыл в гугл/мсдн/фак? 
  И потом, если вы гуру, то зачем скрываете свои знания? :)  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
  
	 
	
     | 
    
        
            
		      
                Тогда задам вопрос я: 1) Вы посмотрели MSDN по этой функции? 2) Посмотрели примеры использования этой функции (там же в MSDN)? 3) Что-то попробывали? 4) Что не получилось?    | 
С уважением,  Юрий Строжевский  | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 24.01.2008(UTC) Сообщений: 16  Откуда: Москва  
	 
	
     | 
    
        
            
		      
                Вот это уже другой разговор :) Я опишу задачу, ок? Есть сертификат, есть экспортированная пара ключей. Мне надо установить этот сертификат и ключи в систему и связать их друг с другом. Что у меня есть: сертификат в системе сохраняется, ключи в хранилище тоже попадают. Но привязать друг к другу не получается. Код:
// получаю имя контейнера провайдера
CryptGetProvParam(hProv, PP_CONTAINER, PByte(Buf), BufSize, 0);
WideBuf1 := Buf;
provInfo.pwszContainerName := PWideChar(WideBuf1);
// получаю имя провайдера
CryptGetProvParam(hProv, PP_NAME, PByte(Buf), BufSize, 0)
WideBuf2 := Buf;
provInfo.pwszContainerName := PWideChar(WideBuf2);
// получаю тип провайдера 
CryptGetProvParam(hProv, PP_PROVTYPE, @DWordBuf, BufSize, 0)
provInfo.dwProvType := DWordBuf;
// заполняем 
provInfo.dwFlags := 0;
provInfo.cProvParam := 0;  
provInfo.rgProvParam := nil;
provInfo.dwKeySpec := AT_SIGNATURE;
// выставляем
CertSetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, 0, @provInfo)
// пробовал и это
CertSetCertificateContextProperty(pCert, CERT_KEY_PROV_HANDLE_PROP_ID, 0, @hProv)
// и это тоже пробовал
KeyContext.cbSize := SizeOf(CERT_KEY_CONTEXT);
KeyContext.hCryptProv := hProv;
KeyContext.dwKeySpec := AT_SIGNATURE;
CertSetCertificateContextProperty(pCert, CERT_KEY_CONTEXT_PROP_ID, 0, @KeyContext)
 
 Код проглатывается без ошибок, однако сертификат не связывается к ключом. То, что ключ привязан к сертификату, проверяю, открывая сертфикат в mmc/certificates.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 24.01.2008(UTC) Сообщений: 16  Откуда: Москва  
	 
	
     | 
    
        
            
		      
                Решил проблему таки. Сертификат в хранилище надо было добавлять уже после того, как добавлены ключи и установлена привязка ключей и сертификата. И достаточно было следующего кода для привязки ключей и сертификата. Код:provInfo.pwszContainerName := nil;
provInfo.pwszProvName := nil;
provInfo.dwProvType := PROV_GOST_DH;
provInfo.dwFlags := 0;
provInfo.cProvParam := 0;  
provInfo.rgProvParam := nil;
provInfo.dwKeySpec := AT_SIGNATURE;
CertSetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, 0, @provInfo)
 
 Отредактировано пользователем 25 января 2008 г. 18:56:54(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
  
	 
	
     | 
    
        
            
		      
                Немного не понял: а "provInfo.pwszProvName" где? Почему два раза "provInfo.pwszContainerName "?    | 
С уважением,  Юрий Строжевский  | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
  
	 
	
     | 
    
        
            
		      
                Нет, сертификат сначала надо добавить в хранилище, а потом устанавливать связь с контейнером ключей.    | 
С уважением,  Юрий Строжевский  | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close