Статус: Участник
Группы: Участники
Зарегистрирован: 07.04.2022(UTC) Сообщений: 15 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 6 раз
|
Здравствуйте! Используя КриптоПро ЭЦП Browser plug-in требуется на Javascript получить значение ЭЦП (обычной, не CMS Signed data).
Пожалуйста, подскажите какой объект отвечает за это. Есть примеры для JS ?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,491 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 554 раз Поблагодарили: 2247 раз в 1753 постах
|
|
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 07.04.2022(UTC) Сообщений: 15 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 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)
Подозреваю, что я неправильно беру хэш сертификата... ![](/forum2/Themes/soclean/icon_file.gif) 2022-04-29_13-33-15.png (19kb) загружен 7 раз(а).Отредактировано пользователем 29 апреля 2022 г. 13:35:06(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,491 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 554 раз Поблагодарили: 2247 раз в 1753 постах
|
Автор: SBA007 ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Благодарю за ответ! Подскажите, возникает такая ошибка Не удалось создать подпись из-за ошибки: Параметр задан неверно. (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)
Подозреваю, что я неправильно беру хэш сертификата... ![](/forum2/Themes/soclean/icon_file.gif) 2022-04-29_13-33-15.png (19kb) загружен 7 раз(а). Цитата:yield oHashedData.SetHashValue( 'A0BF8DB91DE81BFF5FED87EF980A1E5F4750164D' ); // отпечаток из самоподписанного сертификата
здесь не отпечаток сертификата должен быть, а вычисленный хеш. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,491 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 554 раз Поблагодарили: 2247 раз в 1753 постах
|
+ для чего указывается: .propset_DataEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;
???
Пример же есть по ссылке, расписано, что и как получать. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 07.04.2022(UTC) Сообщений: 15 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 6 раз
|
Цитата:
здесь не отпечаток сертификата должен быть, а вычисленный хеш.
Я посмотрел документацию и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение. Также в описании метода SetHashValue непонятно откуда берется "[in] Хэш-значение". Заранее благодарю. Первый раз имею дело с крипто... Отредактировано пользователем 29 апреля 2022 г. 16:24:55(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,491 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 554 раз Поблагодарили: 2247 раз в 1753 постах
|
Автор: Сергей81 ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Цитата:
здесь не отпечаток сертификата должен быть, а вычисленный хеш.
Я посмотрел документацию и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение. Также в описании метода SetHashValue непонятно откуда берется "[in] Хэш-значение". Заранее благодарю. Первый раз имею дело с крипто... Слева, в документации, есть дерево, с примерами... https://docs.cryptopro.r...-samples-hashed-data-bin |
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Автор: Сергей81 ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Цитата:здесь не отпечаток сертификата должен быть, а вычисленный хеш. Я посмотрел документацию и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение. Также в описании метода SetHashValue непонятно откуда берется "[in] Хэш-значение". Заранее благодарю. Первый раз имею дело с крипто... Добрый день. Вкратце: при вычислении хэша Вам вообще не нужен сертификат. Никак. Создаете объект HashedData,(задаете алгоритм), (при необходимости задаете кодировку), задаете Content, получаете значение хэша, перекодируете в нужный формат. Все. объект HashedData далее можно использовать как аргумент при подписании (объект SignedData). Сертификат задается в объект Signer, который также участвует при подписании. Если Вам нужно подписать хэш где-то далеко, то cоздаете объект HashedData,(задаете алгоритм), задаете SetHashValue ранее вычисленное значение хэша. Все. К слову, при вызове CryptoApi все немного по другому - хэндл хэша HHASH заводится на хэндле HPROV, то есть желательно заранее знать будет хэш подписываться или нет. Если будет, то HPROV открывается с указанием имени контейнера (с ключом). Если нет, то гораздо проще HPROV открыть без ключа с флагом VERIFYCONTEXT. Хотя конечно завести без ключа можно потом скопировать значение хэша аналогично SetHashValue в другой объект хэша на HPROV с ключом и подписать.
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил two_oceans за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 07.04.2022(UTC) Сообщений: 15 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 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,491 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 554 раз Поблагодарили: 2247 раз в 1753 постах
|
Приложите тестовый файл и значение хеша. Или сами проверьте, утилитами. |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close