Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	Встраивание
	 » 
	Проблема получения сертификата подписчика - CertFindCertificateInStore
	 
	
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                это цитата из нашего wincryptex.h - добавьте себе в программу. Или собирайте под UNICODE | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                Хотя нет. Проблема возможно не в этом. Код:0, // encoding type. 0 или X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
  - нужно писать вместо  Код:X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
 | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 25.04.2009(UTC)
 Сообщений: 12
 
 | 
            
		      
                maxdm написал:это цитата из нашего wincryptex.h - добавьте себе в программу. Или собирайте под UNICODE в Вашем WinCryptEx.h я этого тоже не нашел  (  * \file $RCSfile: WinCryptEx.h,v $  * \version $Revision: 1.105.4.6 $  * \date $Date: 2002/10/04 11:39:34 $  * \author $Author: vasilij $ ) А X509_ASN_ENCODING | PKCS_7_ASN_ENCODING попробую чуть позже, хотя вроде пробывал. Отредактировано пользователем 19 мая 2009 г. 16:51:50(UTC)
 | Причина: Не указана | 
| Природа - МАТЬ, и её надо беречь! | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 |  | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 25.04.2009(UTC)
 Сообщений: 12
 
 | 
            
		      
                Всем, всем большое спасибо. Код:
	LPWSTR lpszCertSubject = L"Gafarov_Artur";
	// Get the certificate for the signer.
	if(pSignerCertContext = CertFindCertificateInStore(
        hCertStore,
		MY_ENCODING_TYPE,
        0,
		CERT_FIND_SUBJECT_STR,
		lpszCertSubject,
		NULL))
		Form1->Memo1->Lines->Add("Certificate was found");
	else
	{
		Form1->Memo1->Lines->Add("Certificate not found");
        exit(1);
	}
 Теперь работает :) Подключил хедер новой версии:  * \file $RCSfile: WinCryptEx.h,v $  * \version $Revision: 1.211 $  * \date $Date: 2007/10/12 14:35:32 $  * \author $Author: cross $ Отредактировано пользователем 19 мая 2009 г. 17:52:04(UTC)
 | Причина: Не указана | 
| Природа - МАТЬ, и её надо беречь! | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 21.12.2011(UTC) Сообщений: 45  Откуда: Москва | 
            
		      
                Здравствуйте, столкнулся с проблемой. Если имя пользователя  на кого выдан сертификат (CN) содержит русские буквы, то выдается ошибка  80092004 ("Объект или свойство не найдено"). Если CN содержит только латиницу, то все работает как надо.  Ниже приведен код функции с помощью которого создаю контекст сертификата. Если CertFindCertificateInStore(... CERT_FIND_SUBJECT_STR_A, L"Andrey" ,NULL))) то все хорошо работает. Если CertFindCertificateInStore(...CERT_FIND_SUBJECT_STR_A, L"Андрей" ,NULL))) то не работает.  Спасибо. Код:
bool GetCertContextFromSystemStore(PCCERT_CONTEXT *a_pCertContext,  DWORD dwCertEncodingType, LPWSTR a_StoreName,LPWSTR a_Name)
{
	HCERTSTORE hStore;					// Certificate store
	if(!(hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,          // The store provider type
		0,                               // The encoding type is// not needed				
		NULL,                            // Use the default HCRYPTPROV
		CERT_SYSTEM_STORE_CURRENT_USER,   // Set the store location in a// registry location				
		a_StoreName/*L"MY"*/ )                           // The store name as a Unicode // string				
		))
	{
		MyHandleError(_T("Не удалось найти сертификат."));
		CertCloseStore(hStore,0);
		return false;
	}
	
		if(!(*a_pCertContext=CertFindCertificateInStore(hStore,dwCertEncodingType,0,CERT_FIND_SUBJECT_STR_A, L"Andrey" ,NULL)))
		{
			MyHandleError(_T("Не найден сертификат в хранилище."));// handleError(EPOS_CERT_NOT_FOUND);
			return false;
		}		
	
	
	CertCloseStore(hStore,0);		
	return true; 
}
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 21.12.2011(UTC) Сообщений: 45  Откуда: Москва | 
            
		      
                Сертификаты Вложение(я):   Andrey.p7b (1kb) загружен 9 раз(а).  Андрей.pfx (2kb) загружен 8 раз(а).Пользователь andreyxvo прикрепил следующие файлы:   Безымянный.JPG (31kb) загружен 262 раз(а).  1.JPG (31kb) загружен 266 раз(а).  сертификаты.JPG (42kb) загружен 262 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 21.12.2011(UTC) Сообщений: 45  Откуда: Москва | 
            
		      
                Вроде решил. CertFindCertificateInStore(...CERT_FIND_SUBJECT_STR_A, L"Андрей" ,NULL))) Использую CERT_FIND_SUBJECT_STR_A, а проект в кодировке мультибайт. Поменял на CERT_FIND_SUBJECT_STR все заработало.    Пока заработало.
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	Встраивание
	 » 
	Проблема получения сертификата подписчика - CertFindCertificateInStore
	 
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close