| 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 01.10.2019(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Вроде нашел -out <file>   Output PKCS#7 filename | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 01.10.2019(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Попробую подставить CADESCOM_PKCS7_TYPE | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Эксперт
 Группы: Участники
 Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская областьСказал(а) «Спасибо»: 110 разПоблагодарили: 397 раз в 367 постах
 
 | 
            
		      
                Автор: sergei100  2) bDetached = -1; Это false Чисто для справки: это похоже код из 1с, а язык 1с это кириллический диалект Visual Basic. Так вот, в Visual Basic -1 (минус единица) это True (так как в двоичном представлении все биты установлены в 1), а 0 это False (все биты установлены в 0). Для других значений уже идут нюансы, но обычно все остальные значения трактуются тоже как True. Цитата:Андрей Вы правы detached исправил на true. Но пока не получается, еще что странно CadesSignedData возвращает строку без символов 10-13 равную 7 286 символов, а cmd равную 4 508 сим, не понимаю пока в чем проблема.  Возможно размер разный из-за включения полей cades-bes и сертификата. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 01.10.2019(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Вот так работает: Функция ПодписатьCAdES(ТекстДляПодписи, ComОбъектСертификата)	 	CADESCOM_CADES_TYPE = 1;  	bDetached           = 1; 	EncodingType        = 0; 	 	oSigner = Новый  COMОбъект("CAdESCOM.CPSigner"); // Объект, задающий параметры создания и содержащий информацию об усовершенствованной подписи. 	oSigner.Certificate = ComОбъектСертификата; 	oSigner.Options = 2; 	oSigner.KeyPin = "ПарольОтУКЭП";	 	oSignedData = Новый  COMОбъект("CAdESCOM.CadesSignedData"); // Объект CadesSignedData предоставляет свойства и методы для работы с усовершенствованной подписью. 	oSignedData.ContentEncoding = 1; 	oSignedData.Content = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ТекстДляПодписи));	 	sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_TYPE, bDetached, EncodingType); // Метод добавляет к сообщению усовершенствованную подпись.	 	Возврат УбратьСимволы10_13(sSignedMessage); // Подпись в формате Base64	 КонецФункции После того как подставил oSigner.Options = 2; все заработало. Но до конца не понимаю что это, в справке сказано получает или устанавливает параметры сертификата, а какие параметры? где их найти? Отредактировано пользователем 2 октября 2019 г. 12:50:11(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Эксперт
 Группы: Участники
 Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская областьСказал(а) «Спасибо»: 110 разПоблагодарили: 397 раз в 367 постах
 
 |  | 
    | 
              1 пользователь поблагодарил two_oceans за этот пост. |  | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Автор: two_oceans  https://docs.microsoft.com/ru-ru/windows/win32/seccrypto/signer-options вот эти похоже: включается один сертификат, цепочка без корневого или вся цепочка. Да, верно. Насчёт -1 = подразумевалось true, но смущает ответ. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Автор: sergei100  Вот так работает: Код:
Функция ПодписатьCAdES(ТекстДляПодписи, ComОбъектСертификата)
	
	CADESCOM_CADES_TYPE = 1; 
	bDetached           = 1;
	EncodingType        = 0; 
	
	oSigner = Новый  COMОбъект("CAdESCOM.CPSigner"); // Объект, задающий параметры создания и содержащий информацию об усовершенствованной подписи.
	oSigner.Certificate = ComОбъектСертификата;
	oSigner.Options = 2;
	oSigner.KeyPin = "ПарольОтУКЭП";
	
	oSignedData = Новый  COMОбъект("CAdESCOM.CadesSignedData"); // Объект CadesSignedData предоставляет свойства и методы для работы с усовершенствованной подписью.
	oSignedData.ContentEncoding = 1;
	oSignedData.Content = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ТекстДляПодписи));
	
	sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_TYPE, bDetached, EncodingType); // Метод добавляет к сообщению усовершенствованную подпись.
	
	Возврат УбратьСимволы10_13(sSignedMessage); // Подпись в формате Base64
	
КонецФункции
 После того как подставил oSigner.Options = 2; все заработало.   Чтобы читабельнее было... | 
|  | 
    | 
              1 пользователь поблагодарил Андрей * за этот пост. |  | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 01.10.2019(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Ну да все правильно Options = 2(CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY). Сразу и количество символов в строке уменьшилось с 7 286 на 4 508.Всем спасибо за участие!
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 01.10.2019(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Да и по поводу bDetached, -1 получается = true ? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Эксперт
 Группы: Участники
 Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская областьСказал(а) «Спасибо»: 110 разПоблагодарили: 397 раз в 367 постах
 
 | 
            
		      
                Автор: sergei100  Да и по поводу bDetached, -1 получается = true ? Тут возможна разница из-за того как разные языки программирования и среды программирования представляют логический тип в двоичном виде. Почти наверняка СОМ объекты написаны на языке родственном Си, а язык 1с родственнен VisualBasic. Для VisualBasic и его диалектов, все верно -1 = true. Вернее 0 = False (как передается наружу, так и принимется извне), все остальные двоичные значения логического типа принимаемые извне VisualBasic считает True, но сам VisualBasic передает наружу -1 (минус единицу) как True. Другие языки могут аналогично считать 0 = False, все остальное True, но при этом передавать наружу 1 (единицу) как True (это поведение языков семейства Pascal). Оба поведения совместимы за счет восприятия всех прочих значений как True. Так просто удобнее воспринимать при компиляции в машинный код за счет отдельного флага процессора для результата равного ноль. Для получения 0, 1, -1 со времен intel 80386 есть специальные быстрые инструкции процессора (xor a,a = 0; инвертирование бит от 0 = -1; inc от 0 = 1). Проблемы начинаются если тип не точно логический, а, например, включает значение "неизвестно" как третий вариант кроме True и False. Там уже надо типом перечислением вводить точные значения. Отредактировано пользователем 3 октября 2019 г. 5:31:01(UTC)
 | Причина: Не указана | 
    | 
              1 пользователь поблагодарил two_oceans за этот пост. |  | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close