Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Сергей81  
#1 Оставлено : 28 апреля 2022 г. 18:23:18(UTC)
Сергей81

Статус: Участник

Группы: Участники
Зарегистрирован: 07.04.2022(UTC)
Сообщений: 15
Мужчина
Российская Федерация

Сказал «Спасибо»: 6 раз
Здравствуйте!
Используя КриптоПро ЭЦП Browser plug-in
требуется на Javascript получить значение ЭЦП (обычной, не CMS Signed data).

Пожалуйста, подскажите какой объект отвечает за это.
Есть примеры для JS ?
Offline Андрей *  
#2 Оставлено : 28 апреля 2022 г. 20:24:07(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: SBA007 Перейти к цитате
Здравствуйте!
Используя КриптоПро ЭЦП Browser plug-in
требуется на Javascript получить значение ЭЦП (обычной, не CMS Signed data).

Пожалуйста, подскажите какой объект отвечает за это.
Есть примеры для JS ?


1) https://www.cryptopro.ru...&m=132916#post132916
2) RawSignature
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Сергей81 оставлено 29.04.2022(UTC)
Offline Сергей81  
#3 Оставлено : 29 апреля 2022 г. 13:28:13(UTC)
Сергей81

Статус: Участник

Группы: Участники
Зарегистрирован: 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) загружен 6 раз(а).

Отредактировано пользователем 29 апреля 2022 г. 13:35:06(UTC)  | Причина: Не указана

Offline Андрей *  
#4 Оставлено : 29 апреля 2022 г. 14:15:32(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: 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) загружен 6 раз(а).





Цитата:
yield oHashedData.SetHashValue( 'A0BF8DB91DE81BFF5FED87EF980A1E5F4750164D' ); // отпечаток из самоподписанного сертификата


здесь не отпечаток сертификата должен быть, а вычисленный хеш.

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#5 Оставлено : 29 апреля 2022 г. 14:17:46(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
+ для чего указывается: .propset_DataEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;

???

Пример же есть по ссылке, расписано, что и как получать.
Техническую поддержку оказываем тут
Наша база знаний
Offline Сергей81  
#6 Оставлено : 29 апреля 2022 г. 16:16:52(UTC)
Сергей81

Статус: Участник

Группы: Участники
Зарегистрирован: 07.04.2022(UTC)
Сообщений: 15
Мужчина
Российская Федерация

Сказал «Спасибо»: 6 раз
Цитата:


здесь не отпечаток сертификата должен быть, а вычисленный хеш.



Я посмотрел документацию и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение.

Также в описании метода SetHashValue непонятно откуда берется "[in] Хэш-значение".

Заранее благодарю.
Первый раз имею дело с крипто...

Отредактировано пользователем 29 апреля 2022 г. 16:24:55(UTC)  | Причина: Не указана

Offline Андрей *  
#7 Оставлено : 29 апреля 2022 г. 16:36:50(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: Сергей81 Перейти к цитате
Цитата:


здесь не отпечаток сертификата должен быть, а вычисленный хеш.



Я посмотрел документацию и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение.

Также в описании метода SetHashValue непонятно откуда берется "[in] Хэш-значение".

Заранее благодарю.
Первый раз имею дело с крипто...



Слева, в документации, есть дерево, с примерами...
https://docs.cryptopro.r...-samples-hashed-data-bin
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#8 Оставлено : 5 мая 2022 г. 6:55:11(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 394 раз в 366 постах
Автор: Сергей81 Перейти к цитате
Цитата:
здесь не отпечаток сертификата должен быть, а вычисленный хеш.
Я посмотрел документацию и мне непонятно как вычислять хэш. Дайте, пожалуйста ссылку и, желательно, краткое пояснение.

Также в описании метода SetHashValue непонятно откуда берется "[in] Хэш-значение".

Заранее благодарю.
Первый раз имею дело с крипто...
Добрый день. Вкратце: при вычислении хэша Вам вообще не нужен сертификат. Никак. Создаете объект HashedData,(задаете алгоритм), (при необходимости задаете кодировку), задаете Content, получаете значение хэша, перекодируете в нужный формат. Все.
объект HashedData далее можно использовать как аргумент при подписании (объект SignedData).
Сертификат задается в объект Signer, который также участвует при подписании.

Если Вам нужно подписать хэш где-то далеко, то cоздаете объект HashedData,(задаете алгоритм), задаете SetHashValue ранее вычисленное значение хэша. Все.

К слову, при вызове CryptoApi все немного по другому - хэндл хэша HHASH заводится на хэндле HPROV, то есть желательно заранее знать будет хэш подписываться или нет. Если будет, то HPROV открывается с указанием имени контейнера (с ключом). Если нет, то гораздо проще HPROV открыть без ключа с флагом VERIFYCONTEXT. Хотя конечно завести без ключа можно потом скопировать значение хэша аналогично SetHashValue в другой объект хэша на HPROV с ключом и подписать.
thanks 1 пользователь поблагодарил two_oceans за этот пост.
Сергей81 оставлено 13.05.2022(UTC)
Offline Сергей81  
#9 Оставлено : 16 мая 2022 г. 13:05:32(UTC)
Сергей81

Статус: Участник

Группы: Участники
Зарегистрирован: 07.04.2022(UTC)
Сообщений: 15
Мужчина
Российская Федерация

Сказал «Спасибо»: 6 раз
Здравствуйте, благодарю за ответы. Вернулся к задаче, не получается, прошу, пожалуйста, помочь Angel
После нижеописанного бэк отвечает что: 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
Что я могу делать не так? Подскажите, пжл!
Offline Андрей *  
#10 Оставлено : 16 мая 2022 г. 13:43:32(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Приложите тестовый файл и значение хеша.
Или сами проверьте, утилитами.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Сергей81 оставлено 16.05.2022(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.