Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,987   Сказал «Спасибо»: 605 раз Поблагодарили: 2351 раз в 1847 постах
  
	 
	
     | 
    
        
            
		      
                SignData(True = отсоединённая подпись SignData(FALSE = присоединённая подпись (как на тестовой странице с плагином).
 
     | 
 | 
            
	 
        
    
    
        
              1 пользователь поблагодарил Андрей * за этот пост.  
     | 
    
        
            tonax оставлено 22.07.2021(UTC)
          
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 20.07.2021(UTC) Сообщений: 13
  Сказал(а) «Спасибо»: 6 раз
  
	 
	
     | 
    
        
            
		      
                Автор: Андрей *  SignData(True = отсоединённая подпись  SignData(FALSE = присоединённая подпись (как на тестовой странице с плагином).
   С найденным сертификатом и SignData(FALSE - заработало ура!!!  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 20.07.2021(UTC) Сообщений: 13
  Сказал(а) «Спасибо»: 6 раз
  
	 
	
     | 
    
        
            
		      
                А по поводу поиска сертификата, можете помочь? Поиск по номеру не находит Код:
//Поиск сертификата по серийному номеру
function getSignerCertificate(SerialNumber: string): Variant;
const
  CAPICOM_CURRENT_USER_STORE = 2;
var
  oStore: Variant;
  i: integer;
begin
  result := Unassigned;
  oStore := CreateOLEObject('CAdESCOM.Store');
  oStore.Open(CAPICOM_CURRENT_USER_STORE);
  for i := 1 to oStore.Certificates.Count - 1 do
    if oStore.Certificates.Item[i].SerialNumber = SerialNumber then
    begin
      result := oStore.Certificates.Item[i];
      Exit;
    end;
end;
 
 А по отпечатку отлично находит. Код:
//Подпись по отпечатку
function GetCertificateOfStamp(thumbprint: string; var oCertificate: olevariant; var onErr: string): boolean;
const
  CAPICOM_MY_STORE = 'MY';
  CAPICOM_CERTIFICATE_FIND_SHA1_HASH = $00000000;
  CAPICOM_CURRENT_USER_STORE = 2;
  CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
var
  oStore, oCertificates: olevariant;
  x: integer;
begin
  onErr := '';
  result := false;
  try
    oStore := CreateOleObject('CAdESCOM.Store');
    oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
    oCertificates := oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, widestring(thumbprint));
    x := oCertificates.Count;
    if x = 0 then
    begin
      onErr := 'Не найден сертификат с отпечатком: [' + thumbprint + ']';
      exit;
    end;
    oCertificate := oCertificates.Item[1]; // oCertificates.Item(1);
    result := true;
  except
    on e: exception do
    begin
      onErr := 'Не удалось получить доступ к сертификату с отпечатком: [' + thumbprint + '] ' + e.Message;
    end;
  end;
end;
 
 Выше в ветке написано, что надежнее искать по отпечатку. Т.е. не следует обращать внимание на проблемы с поиском сертификата по номеру?  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,987   Сказал «Спасибо»: 605 раз Поблагодарили: 2351 раз в 1847 постах
  
	 
	
     | 
    
        
            
		      
                getSignerCertificate(SerialNumber - что указано, скопировано из ... просмотра свойств сертификата?
  У меня искалось, по указанному мною номеру (моему).
  Серийный номер - не уникален и могут быть коллизии (например, можно сгенерировать с нужным номером сертификат (тестовый) - тогда какой будет использоваться?)
     | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 20.07.2021(UTC) Сообщений: 13
  Сказал(а) «Спасибо»: 6 раз
  
	 
	
     | 
    
        
            
		      
                Автор: Андрей *  getSignerCertificate(SerialNumber - что указано, скопировано из ... просмотра свойств сертификата?
  У меня искалось, по указанному мною номеру (моему).
  Серийный номер - не уникален и могут быть коллизии (например, можно сгенерировать с нужным номером сертификат (тестовый) - тогда какой будет использоваться?)
   в SerialNumber строка, скопированная из св-в сертификата.  Ладно, пока будет искать по отпечатку... А можно как-то вызвать диалог выбора сертификата, чтобы пользователь сам выбирал?  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,987   Сказал «Спасибо»: 605 раз Поблагодарили: 2351 раз в 1847 постах
  
	 
	
     | 
    
        
            
		      
                Автор: tonax  Автор: Андрей *  getSignerCertificate(SerialNumber - что указано, скопировано из ... просмотра свойств сертификата?
  У меня искалось, по указанному мною номеру (моему).
  Серийный номер - не уникален и могут быть коллизии (например, можно сгенерировать с нужным номером сертификат (тестовый) - тогда какой будет использоваться?)
   в SerialNumber строка,  скопированная из св-в сертификата.  Ладно, пока будет искать по отпечатку...  0)  Желательно использовать правильные типы и параметры (widestring   + oStore.Open(CAPICOM_CURRENT_USER_STORE,CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);    ) 1) в цикле для отладки всегда можно добавить вывод серийных номеров, с которыми сравнение выполняется 2) серийный номер в Item[i].SerialNumber - не содержит "пробелов", которые есть при просмотре сертификатов. Цитата: А можно как-то вызвать диалог выбора сертификата, чтобы пользователь сам выбирал?
  https://docs.cryptopro.r...%d0%b5%d0%ba%d1%82-storeПеречислить сертификаты, получить у каждого нужные сведения и показывать в своём диалоге.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 20.07.2021(UTC) Сообщений: 13
  Сказал(а) «Спасибо»: 6 раз
  
	 
	
     | 
    
        
            
		      
                Автор: Андрей *  Автор: tonax  Автор: Андрей *  getSignerCertificate(SerialNumber - что указано, скопировано из ... просмотра свойств сертификата?
  У меня искалось, по указанному мною номеру (моему).
  Серийный номер - не уникален и могут быть коллизии (например, можно сгенерировать с нужным номером сертификат (тестовый) - тогда какой будет использоваться?)
   в SerialNumber строка,  скопированная из св-в сертификата.  Ладно, пока будет искать по отпечатку...  0)  Желательно использовать правильные типы и параметры (widestring   + oStore.Open(CAPICOM_CURRENT_USER_STORE,CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);    ) 1) в цикле для отладки всегда можно добавить вывод серийных номеров, с которыми сравнение выполняется 2) серийный номер в Item[i].SerialNumber - не содержит "пробелов", которые есть при просмотре сертификатов. Цитата: А можно как-то вызвать диалог выбора сертификата, чтобы пользователь сам выбирал?
  https://docs.cryptopro.r...%d0%b5%d0%ba%d1%82-storeПеречислить сертификаты, получить у каждого нужные сведения и показывать в своём диалоге.  Отлично, а где можно посмотреть список других св-в объекта Store.Certificates.Item[i], по типу SerialNumber, например дату выдачи и окончания?  По ссылке  https://docs.cryptopro.r...%d0%b5%d0%ba%d1%82-store посмотрел, не нашел  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,987   Сказал «Спасибо»: 605 раз Поблагодарили: 2351 раз в 1847 постах
  
	 
	
     | 
    
        
            
		      
                cadescom/cadescom_class/ certificatesICertificateПредоставляет методы для работы с сертификатом открытого ключа. Расширяет интерфейс CAPICOM.Certificate. Далее в MSDN  по ссылке   | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 31.05.2016(UTC) Сообщений: 2,874
  Сказал(а) «Спасибо»: 657 раз Поблагодарили: 508 раз в 479 постах
  
	 
	
     | 
    
        
     | 
    
        
              1 пользователь поблагодарил nickm за этот пост.  
     | 
    
        
            tonax оставлено 23.07.2021(UTC)
          
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,987   Сказал «Спасибо»: 605 раз Поблагодарили: 2351 раз в 1847 постах
  
	 
	
     | 
    
         | 
 | 
            
	 
        
    
    
        
              1 пользователь поблагодарил Андрей * за этот пост.  
     | 
    
        
            tonax оставлено 23.07.2021(UTC)
          
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close