| 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 10.02.2015(UTC) Сообщений: 43   Откуда: РФСказал «Спасибо»: 14 раз
 | 
            
		      
                Доброго времени В настоящий момент удалось подписать файл методом .SignCades на выходе получаю либо присоединенный файл либо отдельный файл подписи .sig Скажите пожалуйста как осуществляется установка нескольких подписей на одном файл, (2 человека = 2 сертификата). Если подписать 2-мя сертификатами отвязанными подписями я получу 2 файла sig тут все понятно, но как получить один файл .sig после двойного подписания? В данном методе  не пойму как учитывается ранее созданная подпись | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Здравствуйте. В документации доступен поиск, который выдает ссылку на пример № 5 проверить существующую подпись - VerifyCades, а потом вызвать CoSignCades - добавить новую. | 
|  | 
    | 
              1 пользователь поблагодарил Андрей * за этот пост. |  | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 10.02.2015(UTC) Сообщений: 43   Откуда: РФСказал «Спасибо»: 14 раз
 | 
            
		      
                При подписании файла совмещенной подписью Цитата: Dim fromFileDim toFile
 fromFile = "C:\Users\makhmudov.damir\Downloads\cr\f.pdf"
 toFile = "C:\Users\makhmudov.damir\Downloads\cr\b.sig"
 
 Const CADES_BES = 1
 Const CADES_DEFAULT = 0
 Const CAPICOM_ENCODE_BASE64 = 0
 
 
 ' Укажите правильный серийный номер сертификата.
 Dim sSerialNumber : sSerialNumber = "1200648CA874DF6832C1AFCB12000200648CA8"
 
 Dim oSigner
 Set oSigner = CreateObject("CAdESCOM.CPSigner")
 oSigner.Certificate = GetSignerCertificate(sSerialNumber)
 
 Dim oSignedData
 Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
 Content = LoadFilew(fromFile)
 oSignedData.Content = Content
 
 Dim sSignedData
 ' Создание и проверка подписи CAdES BES
 sSignedData = oSignedData.SignCades(oSigner, CADES_BES, false, CAPICOM_ENCODE_BASE64)
 SaveFile toFile, sSignedData
 Получаю файл b.sig При проверке этого файла утилитой КриптоПРО Tools проверка проходит успешно При попытке проверить ее скриптом: Цитата: Dim oSignedDataSet oSignedData = CreateObject("CAdESCOM.CadesSignedData")
 
 Dim Message
 Message = LoadFile("C:\Users\makhmudov.damir\Downloads\cr\b.sig")
 
 res = oSignedData.VerifyCades (Message, 1, false)
 msgbox res
 получаю пустое сообщение, в доках написано: Возвращаемое значение имеет тип HRESULT. Значение S_OK означает успешное выполнение.что я делаю не так при проверке? При подписании отделенной подписью: Цитата: Dim fromFileDim toFile
 fromFile = "C:\Users\makhmudov.damir\Downloads\cr\f.pdf"
 toFile = "C:\Users\makhmudov.damir\Downloads\cr\b.sig"
 
 Const CADES_BES = 1
 Const CADES_DEFAULT = 0
 Const CAPICOM_ENCODE_BASE64 = 0
 
 
 ' Укажите правильный серийный номер сертификата.
 Dim sSerialNumber : sSerialNumber = "1200648CA874DF6832C1AFCB12000200648CA8"
 
 Dim oSigner
 Set oSigner = CreateObject("CAdESCOM.CPSigner")
 oSigner.Certificate = GetSignerCertificate(sSerialNumber)
 
 Dim oSignedData
 Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
 Content = LoadFilew(fromFile)
 oSignedData.Content = Content
 
 Dim sSignedData
 ' Создание и проверка подписи CAdES BES
 sSignedData = oSignedData.SignCades(oSigner, CADES_BES, true, CAPICOM_ENCODE_BASE64)
 SaveFile toFile, sSignedData
 Получаю файл e.sig (меньшего размера естественно) Но при попытке проверить его с помощью Крипто ПРО Tools указывая файл e.sig и оригинальный файл f.pdf Получаю ошибку: Цитата:Подпись 1/1:Ошибка при проверке (0x80091007: Неправильное значение хеша.)
 Cубъект: E=samrukov@gmail.com, CN=Damir, OU=TDMS, O=CSoft, L=Kazan, C=RU
 Отпечаток: F16E348A9B4DFA05B90F84E4046F65AC2FDC1972
 Время подписания: 17/07/2024 12:54:02 UTC
 Цепочка: CRYPTO-PRO Test Center 2 → Damir
 
 При попытке проверить подпись скриптом: Цитата:  Dim oSignedDataSet oSignedData = CreateObject("CAdESCOM.CadesSignedData")
 ' Загрузка подписанных данных для проверки
 fromFile = "C:\Users\makhmudov.damir\Downloads\cr\f.pdf"
 toFile = "C:\Users\makhmudov.damir\Downloads\cr\e.sig"
 
 Dim Content : Content = LoadFile(fromFile)
 Dim Message : Message = LoadFile(toFile)
 oSignedData.Content = Content
 
 ' Проверка отделенной подписи
 res = oSignedData.VerifyCades(Message, 1, True)
 msgbox res
 Получаю также пустое сообщение | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Возвращаемое значение имеет тип HRESULT. Значение S_OK 
 это не строка, зачем msgbox.
 
 Если будет ошибка - будет исключение.
 
 
 Или прикладывайте тестовые файлы (pdf или txt +  к ним sig)
 или смотрите что там внутри (asn1 редакторы или утилита у меня в подписи, покажет хеши из sig\сверить с хешем из присоединенной, файл же pdf не менялся?)
 | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 10.02.2015(UTC) Сообщений: 43   Откуда: РФСказал «Спасибо»: 14 раз
 | 
            
		      
                Не нашел утилит в подписи.   f.pdf (171kb) загружен 1 раз(а).  - оригинальный файл   e.zip (2kb) загружен 1 раз(а).  - файл подписи (пришлось запаковать тк диалог загрузки не поддерживает файл sig) | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                хеш у файла pdf: 18B8F01F801A33352D68AA8C16215F5D178291C2880496143C5A73C49B6CD994 а в файле sig: 6EB884A3C147A1A661D9FB4ECFE2A5372C7C15D2909FAA3F2C943DB635E60C93 предлагаю сделать как в js - закодировать в base64, указать, что данные закодированы и потом присвоить content вот в этом месте: Цитата:Content = LoadFilew(fromFile)oSignedData.Content = Content
 Читать - здесь . Пример на js - здесь участок: Код:
oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
                // Значение свойства ContentEncoding должно быть задано
                // до заполнения свойства Content
                yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
                yield oSignedData.propset_Content(dataInBase64);
   Snimok ehkrana ot 2024-07-17 17-45-58.png (16kb) загружен 2 раз(а).   Snimok ehkrana ot 2024-07-17 17-45-04.png (32kb) загружен 2 раз(а). | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 10.02.2015(UTC) Сообщений: 43   Откуда: РФСказал «Спасибо»: 14 раз
 | 
            
		      
                сделал как вы сказали Цитата:Dim oSignedDataSet oSignedData = CreateObject("CAdESCOM.CadesSignedData")
 oSignedData.ContentEncoding = 0
 Content_o = LoadFilew(fromFile)
 Content = Base64Encode(Content_o)
 oSignedData.Content = Content
 указал ContentEncoding = 0 как сказано тут провернул фарш в bas64 Цитата:Content = Base64Encode(Content_o) предварительно проверил на обычном тексте что ф-я точно отдает base64 создал подпись e.sig Утилита Крипто ПРО дает ту же ошибку неверного хэша | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Автор: Дамир Шамуков  сделал как вы сказали Цитата:Dim oSignedDataSet oSignedData = CreateObject("CAdESCOM.CadesSignedData")
 oSignedData.ContentEncoding = 0
 Content_o = LoadFilew(fromFile)
 Content = Base64Encode(Content_o)
 oSignedData.Content = Content
 указал ContentEncoding = 0 как сказано тут провернул фарш в bas64 Цитата:Content = Base64Encode(Content_o) предварительно проверил на обычном тексте что ф-я точно отдает base64 создал подпись e.sig Утилита Крипто ПРО дает ту же ошибку неверного хэша Внимательно перечитывать. В примере указано что? CADESCOM_BASE64_TO_BINARY Вводим слева в поиск и находим раздел . CADESCOM_BASE64_TO_BINARY	Кодировка BASE64.	0x01 А то, что сделано - указано 0 = бинарные данные, а они в base64 - хеш от base64 внутри рассчитался. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Код:  // Значение свойства ContentEncoding должно быть задано
                // до заполнения свойства Content
                yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
                yield oSignedData.propset_Content(dataInBase64);
 это для безопасной передачи бинарных данных внутрь плагина и далее в CSP - сообщаем, что данные dataInBase64 - это base64, внутри происходит декодирование.   | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
 Зарегистрирован: 10.02.2015(UTC) Сообщений: 43   Откуда: РФСказал «Спасибо»: 14 раз
 | 
            
		      
                Прошу прощения, а что именно туда  указать из: CADESCOM_BASE64_TO_BINARY	Кодировка BASE64.	0x01 CADESCOM_STRING_TO_UCS2LE	Кодировка UTF-8 или UNICODE.	0x00 при 0 и 1 подпись создает но неверный хэш  Текущий скрипт Цитата:oSignedData.ContentEncoding = 1Content_o = LoadFilew(fromFile)
 Content = Base64Encode(Content_o)
 oSignedData.Content = Content
 Отредактировано пользователем 17 июля 2024 г. 18:05:39(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close