| 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 07.04.2022(UTC) Сообщений: 15  Сказал «Спасибо»: 6 раз
 | 
            
		      
                Здравствуйте!Используя КриптоПро ЭЦП Browser plug-in
 требуется на Javascript получить значение ЭЦП (обычной, не CMS Signed data).
 
 Пожалуйста, подскажите какой объект отвечает за это.
 Есть примеры для JS ?
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,974  Сказал «Спасибо»: 605 разПоблагодарили: 2347 раз в 1843 постах
 
 |  | 
|  | 
    | 
              1 пользователь поблагодарил Андрей * за этот пост. |  | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 07.04.2022(UTC) Сообщений: 15  Сказал «Спасибо»: 6 раз
 | 
            
		      
                Благодарю за ответ! Подскажите, возникает такая ошибкаНе удалось создать подпись из-за ошибки: Параметр задан неверно. (0x80070057) в коде: Код:
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
yield oHashedData.propset_Algorithm(101); // 256 бит
yield oHashedData.propset_DataEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;
yield oHashedData.SetHashValue( 'A0BF8DB91DE81BFF5FED87EF980A1E5F4750164D' );  // отпечаток из самоподписанного сертификата
var signature;
signature = yield oSignedData.SignHash(oHashedData, oSigner, cadesplugin.CADESCOM_CADES_BES); 
console.log(signature)
 Подозреваю, что я неправильно беру хэш сертификата...    2022-04-29_13-33-15.png (19kb) загружен 7 раз(а). Отредактировано пользователем 29 апреля 2022 г. 13:35:06(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,974  Сказал «Спасибо»: 605 разПоблагодарили: 2347 раз в 1843 постах
 
 | 
            
		      
                Автор: SBA007  Благодарю за ответ! Подскажите, возникает такая ошибкаНе удалось создать подпись из-за ошибки: Параметр задан неверно. (0x80070057) в коде: Код:
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
yield oHashedData.propset_Algorithm(101); // 256 бит
yield oHashedData.propset_DataEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;
yield oHashedData.SetHashValue( 'A0BF8DB91DE81BFF5FED87EF980A1E5F4750164D' );  // отпечаток из самоподписанного сертификата
var signature;
signature = yield oSignedData.SignHash(oHashedData, oSigner, cadesplugin.CADESCOM_CADES_BES); 
console.log(signature)
 Подозреваю, что я неправильно беру хэш сертификата...    2022-04-29_13-33-15.png (19kb) загружен 7 раз(а). Цитата:yield oHashedData.SetHashValue( 'A0BF8DB91DE81BFF5FED87EF980A1E5F4750164D' );  // отпечаток из самоподписанного сертификата
 здесь не отпечаток сертификата должен быть, а вычисленный хеш. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,974  Сказал «Спасибо»: 605 разПоблагодарили: 2347 раз в 1843 постах
 
 | 
            
		      
                + для чего указывается: .propset_DataEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;
 ???
 
 Пример же есть по ссылке, расписано, что и как получать.
 | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 07.04.2022(UTC) Сообщений: 15  Сказал «Спасибо»: 6 раз
 | 
            
		      
                Цитата:
 здесь не отпечаток сертификата должен быть, а вычисленный хеш.
 
 
 Я посмотрел документацию  и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение. Также в описании метода SetHashValue  непонятно откуда берется "[in] Хэш-значение". Заранее благодарю. Первый раз имею дело с крипто... Отредактировано пользователем 29 апреля 2022 г. 16:24:55(UTC)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,974  Сказал «Спасибо»: 605 разПоблагодарили: 2347 раз в 1843 постах
 
 | 
            
		      
                Автор: Сергей81  Цитата:
 здесь не отпечаток сертификата должен быть, а вычисленный хеш.
 
 
 Я посмотрел документацию  и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение. Также в описании метода SetHashValue  непонятно откуда берется "[in] Хэш-значение". Заранее благодарю. Первый раз имею дело с крипто... Слева, в документации, есть дерево, с примерами... https://docs.cryptopro.r...-samples-hashed-data-bin | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Эксперт
 Группы: Участники
 Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская областьСказал(а) «Спасибо»: 110 разПоблагодарили: 397 раз в 367 постах
 
 | 
            
		      
                Автор: Сергей81  Цитата:здесь не отпечаток сертификата должен быть, а вычисленный хеш. Я посмотрел документацию и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение. Также в описании метода SetHashValue  непонятно откуда берется "[in] Хэш-значение". Заранее благодарю. Первый раз имею дело с крипто... Добрый день. Вкратце: при вычислении хэша Вам вообще не нужен сертификат. Никак. Создаете объект HashedData,(задаете алгоритм), (при необходимости задаете кодировку), задаете Content, получаете значение хэша, перекодируете в нужный формат. Все. объект HashedData далее можно использовать как аргумент при подписании (объект SignedData). Сертификат задается в объект Signer, который также участвует при подписании. Если Вам нужно подписать хэш где-то далеко, то cоздаете объект HashedData,(задаете алгоритм), задаете SetHashValue ранее вычисленное  значение хэша. Все. К слову, при вызове CryptoApi все немного по другому - хэндл хэша HHASH заводится на хэндле HPROV, то есть желательно заранее знать будет хэш подписываться или нет. Если будет, то HPROV открывается с указанием имени контейнера (с ключом). Если нет, то гораздо проще HPROV открыть без ключа с флагом VERIFYCONTEXT. Хотя конечно завести без ключа можно потом скопировать значение хэша аналогично SetHashValue в другой объект хэша на HPROV с ключом и подписать. | 
    | 
              1 пользователь поблагодарил two_oceans за этот пост. |  | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 07.04.2022(UTC) Сообщений: 15  Сказал «Спасибо»: 6 раз
 | 
            
		      
                Здравствуйте, благодарю за ответы. Вернулся к задаче, не получается, прошу, пожалуйста, помочь    После нижеописанного бэк отвечает что: Signature doesn't match with content Вводная еще раз: Нужно получить от бэка данные, подписать их на фронте и отправить обратно вместе с используемым сертом (серт и эцп - отдельные параметры). Алгоритм публичного ключа сертификата должен быть GOST34.10 2012 с размером либо 256 либо 512. Значение ЭЦП должно быть обычное, не CMS Signed data. ЭЦП: GOST3411WITHECGOST3410-2012-256 и GOST3411WITHECGOST3410-2012-512 Моя последовательность действий: - создал серт с сайта криптопро (https://www.cryptopro.ru/certsrv/certrqma.asp): Алгоритм ключа: ГОСТ Р 34.10-2012 256 бит - беру данные с бэкенда	 Код:var dataInBase64 = 'PFNpZ25lZEluZm6L....lnbmVkSW5mbz4=';
 - беру серт:	 Код:var certBase64 = yield certificate.Export(0);
 - беру хэш-значение полученных данных Код:	var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
        yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
        yield oHashedData.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
        yield oHashedData.Hash(dataInBase64);  // <--
        var sHashValue = yield oHashedData.Value;
 - беру эцп по хэш-значению (используя выбранный серт) Код:        var hashAlg = cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
        var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
        yield oHashedData.propset_Algorithm(hashAlg);
        yield oHashedData.SetHashValue(sHashValue);  // <--
        var oRawSignature = yield cadesplugin.CreateObjectAsync("CAdESCOM.RawSignature");
	var sRawSignature = yield oRawSignature.SignHash(oHashedData, certificate);
	console.log(sRawSignature)
 На фронте всё формируется без ошибок, однако, бэк отвечает Signature doesn't match with content Что я могу делать не так? Подскажите, пжл! | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,974  Сказал «Спасибо»: 605 разПоблагодарили: 2347 раз в 1843 постах
 
 | 
            
		      
                Приложите тестовый файл и значение хеша.Или сами проверьте, утилитами.
 | 
|  | 
    | 
              1 пользователь поблагодарил Андрей * за этот пост. |  | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close