| 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 11.02.2021(UTC)
 Сообщений: 11
 
 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Автор: Санчир Момолдаев  тогда думаю подойдет обычная подпись через SignedCms Код:ContentInfo contentInfo = new ContentInfo(dataToSign);
SignedCms signedCms = new SignedCms(contentInfo, true);
CmsSigner cmsSigner = new CmsSigner(certificate);
signedCms.ComputeSignature(cmsSigner);
Byte[] signatureResult = signedCms.Encode();
 Не проходит подпись сообщения через NET, через JS проходит, видимо дело в преобразованиях уточню мне нужно подписать сообщение вида: Цитата:{"destination":"nmcades","requestid":44,"objid":14,"method":"SetHashValue","params":[{"type":"string","value":"D23B36DE601FEB70D77FEB9D5252CE380C2024A20B47561497E50751547D1705"}]}
 поставляю D23B36DE601FEB70D77FEB9D5252CE380C2024A20B47561497E50751547D1705 в функцию JS (указано выше) подпись проходит. поставляю в функцию Net, через преобразования        Цитата:byte[] message = Encoding.ASCII.GetBytes(postData.Message); на выходе делаю преобразования обратное Convert.ToBase64String(signedCms.Encode()) - подпись не верна! Отредактировано пользователем 8 июля 2021 г. 15:44:07(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Здравствуйте. Цитата:уточню мне нужно подписать сообщение вида:
 
 Цитата:
 {"destination":"nmcades","requestid":44,"objid":14,"method":"SetHashValue","params":[{"type":"string","value":"D23B36DE601FEB70D77FEB9D5252CE380C2024A20B47561497E50751547D1705"}]}
 
 
 поставляю D23B36DE601FEB70D77FEB9D5252CE380C2024A20B47561497E50751547D1705 в функцию JS (указано выше) подпись проходит.
 
 Вы путаете интерфейсы и возможности. Подписать строку (файл\набор байтов) = внутри класса вычисляется хеш и он подписывается. В signedCms необходимо передавать исходные байты (сообщение\документ\файл = набор байтов), а не полученный от них хеш (D23B36DE601FEB70D77FEB9D5252CE380C2024A20B47561497E50751547D1705). | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Путь через SetHashValue - позволяет не передавать исходный документ на вход функции подписания (высокоуровневой).Например, на сервере 10Мб и есть вычисленный хеш - тогда на клиенте через SetHashValue инициализируется он и получаем ЭП, без скачивания 10Мб.
 | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 11.02.2021(UTC)
 Сообщений: 11
 
 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Автор: Андрей *  Путь через SetHashValue - позволяет не передавать исходный документ на вход функции подписания (высокоуровневой).Например, на сервере 10Мб и есть вычисленный хеш - тогда на клиенте через SetHashValue инициализируется он и получаем ЭП, без скачивания 10Мб.
 спасибо за ответ, но я просил изначально перевести код JS в код Net. JS Цитата:  var oHashedData = yield cadesplugin.CreateObjectAsync('CAdESCOM.HashedData');
 yield oHashedData.propset_DataEncoding(1); //CADESCOM_CONTENT_ENCODING_TYPE.BASE64_TO_BINARY
 yield oHashedData.propset_Algorithm(101); //CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256
 yield oHashedData.SetHashValue(sHashValue);
 
 var oSigningTimeAttr = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");
 yield oSigningTimeAttr.propset_Name(0);//CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME
 yield oSigningTimeAttr.propset_Value(ConvertDate(new Date()));
 
 var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
 yield oSigner.propset_Certificate(oCertificate);
 yield oSigner.propset_CheckCertificate(true);
 yield oSigner.propset_Options(1); //CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN
 var oAuthAttrs = yield oSigner.AuthenticatedAttributes2;
 yield oAuthAttrs.Add(oSigningTimeAttr);
 
 var oSignedData = yield cadesplugin.CreateObjectAsync('CAdESCOM.CadesSignedData');
 var sSignedMessage = yield oSignedData.SignHash(oHashedData, oSigner, 1);
 тут подписывается хеш документа, как мне сделать тоже самое на NET ? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Автор: code8525   
 тут подписывается хеш документа, как мне сделать тоже самое на NET ?
 Подключить и использовать COM-интерфейс CAdESCOM.dll. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 11.02.2021(UTC)
 Сообщений: 11
 
 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Автор: Андрей *  Автор: code8525   
 тут подписывается хеш документа, как мне сделать тоже самое на NET ?
 Подключить и использовать COM-интерфейс CAdESCOM.dll. Спасибо, понятно. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 11.02.2021(UTC)
 Сообщений: 11
 
 Сказал(а) «Спасибо»: 1 раз
 | 
            
		      
                Автор: Андрей *  Подключить и использовать COM-интерфейс CAdESCOM.dll.
 
 Разобрался как подключить библиотеку, возникла ошибка Цитата:System.InvalidCastExceptionHResult=0x80004002
 Сообщение = Интерфейс не поддерживается
 Источник = Interop.CAdESCOM
 Трассировка стека:
 в CAdESCOM.CadesSignedDataClass.SignHash(HashedData Hash, Object Signer, CADESCOM_CADES_TYPE CadesType, CAPICOM_ENCODING_TYPE EncodingType)
 в ConsoleApp3.Program.Main(String[] args) в Program.cs:строка 44
 Цитата:                       var hash = "9CA6371A5F7EE6F76F8A74A305CACC78183402DEA1CDB13868551CA5A707CDF1";
 byte[] hashValue = Enumerable.Range(0, hash.Length)
 .Where(x => x % 2 == 0)
 .Select(x => Convert.ToByte(hash.Substring(x, 2), 16))
 .ToArray();
 
 HashedData hashedData = new HashedDataClass();
 hashedData.Algorithm = CAPICOM_HASH_ALGORITHM.CAPICOM_HASH_ALGORITHM_SHA_256;
 hashedData.Hash(hashValue);
 
 AttributeClass attribute = new AttributeClass();
 attribute.Name = CAPICOM_ATTRIBUTE.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;
 attribute.Value = DateTime.UtcNow;
 
 SignerClass signer = new SignerClass();
 signer.Certificate = cert;
 signer.Options = CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;
 signer.AuthenticatedAttributes.Add(attribute);
 
 CadesSignedData cadesSignedData = new CadesSignedDataClass();
 
 var out1 = cadesSignedData.SignHash(
 hashedData,
 signer,
 CADESCOM_CADES_TYPE.CADESCOM_CADES_BES,
 CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64
 );
 
 Отредактировано пользователем 9 июля 2021 г. 10:16:52(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,234 Сказал(а) «Спасибо»: 105 разПоблагодарили: 296 раз в 276 постах
 
 |  | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 30.03.2021(UTC)
 Сообщений: 13
 
 | 
            
		      
                Здравствуйте! Мне необходимо подписывать текстовую строку присоединенной электронной подписью Не могли бы вы пожалуйста в общих чертах описать последовательность вызова функций для создания присоединенной ЭП? Правильная (отвечающая требованиям) подпись генерируется с помощью csptest со следующими атрибутами: Цитата:csptest -sfsign -sign -in "C:\temp\Test.txt" -out "C:\temp\Out.txt" -my "Значение атрибута CN" -base64 -add В данный момент получилось сделать следующее:https://bitbucket.org/pr...gn/src/master/Program.cs Программа отрабатывает без ошибок, но выводимая подпись в разы короче, чем генерируемая csptest | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                Автор: anton26  Здравствуйте! Мне необходимо подписывать текстовую строку присоединенной электронной подписью Не могли бы вы пожалуйста в общих чертах описать последовательность вызова функций для создания присоединенной ЭП? Правильная (отвечающая требованиям) подпись генерируется с помощью csptest со следующими атрибутами: Цитата:csptest -sfsign -sign -in "C:\temp\Test.txt" -out "C:\temp\Out.txt" -my "Значение атрибута CN" -base64 -add В данный момент получилось сделать следующее:https://bitbucket.org/pr...gn/src/master/Program.cs Программа отрабатывает без ошибок, но выводимая подпись в разы короче, чем генерируемая csptest Вы сделали RAW, а необходимо CMS. Примеры есть в составе КриптоПРО.NET SDK | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close