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

Уведомление

Icon
Error

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

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

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

Сказал «Спасибо»: 6 раз
Здравствуйте, коллеги!
Используя КриптоПро ЭЦП Browser plug-in
требуется из Javascript отправить на бэкенд следующие данные:

- ЭЦП которую я создал ЭЦП на основе имеющихся данных.
- Сертификат: Simple (not CMS Signed Data) ГОСТ signature;


ЭЦП я создаю в примере ниже, а как достать Сертификат не понимаю.
Прошу кинуть в меня ссылками или примерами!
Заранее благодарю!

Код:

            try {
               var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
            } catch (err) {
                errormes = "Failed to create CAdESCOM.CPSigner: " + err.number;
                throw errormes;
            }
            var oSigningTimeAttr = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");
            yield oSigningTimeAttr.propset_Name(cadesplugin.CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME);
            var oTimeNow = new Date();
            yield oSigningTimeAttr.propset_Value(oTimeNow);
            var attr = yield oSigner.AuthenticatedAttributes2;
            yield attr.Add(oSigningTimeAttr);            
            var oDocumentNameAttr = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");
            yield oDocumentNameAttr.propset_Name(cadesplugin.CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME);
            yield oDocumentNameAttr.propset_Value("Document Name");
            yield attr.Add(oDocumentNameAttr);
            if (oSigner) {
                yield oSigner.propset_Certificate(certificate);
            }
            else {
                errormes = "Failed to create CAdESCOM.CPSigner";
                throw errormes;
            }
            var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
            if (dataToSign) {
                yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY); //
                yield oSignedData.propset_Content(dataToSign);
            }
            yield oSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);
            if (typeof (setDisplayData) != 'undefined') {
                yield oSignedData.propset_DisplayData(1);
            }
            try {
                Signature = yield oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, false); // включает документ
                //Signature = yield oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, true);//не включает

            }
Offline Новожилова Елена  
#2 Оставлено : 28 апреля 2022 г. 11:03:55(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Цитата:
- Сертификат: Simple (not CMS Signed Data) ГОСТ signature;


Здравствуйте! Решение передавать подпись (особенно "not CMS Signed Data") выглядит очень странно. Какую задачу вы решаете?
Offline Андрей *  
#3 Оставлено : 28 апреля 2022 г. 11:39:15(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Автор: SBA007 Перейти к цитате

- Сертификат: Simple (not CMS Signed Data) ГОСТ signature;



так сертификат или всё же речь про значение подписи?

Если сертификат - то он есть в коде.

Если подпись - то RAW Signature есть.


Цитата:

а как достать Сертификат не понимаю.

в указанном коде: certificate видите для Signer передаётся?
Смотрели в документацию, описание... ?


cpsigner

https://docs.microsoft.c...rypto/signer-certificate
https://docs.microsoft.c...32/seccrypto/certificate


Methods
Export если реально идёт речь, про "передать сертификат".
Другой вопрос - зачем, если его обычно передают в составе подписи (CMS)


Техническую поддержку оказываем тут
Наша база знаний
Offline Сергей81  
#4 Оставлено : 28 апреля 2022 г. 11:51:31(UTC)
Сергей81

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

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

Сказал «Спасибо»: 6 раз
Автор: Новожилова Елена Перейти к цитате
Цитата:
- Сертификат: Simple (not CMS Signed Data) ГОСТ signature;


Здравствуйте! Решение передавать подпись (особенно "not CMS Signed Data") выглядит очень странно. Какую задачу вы решаете?


Елена, решается задача передачи шифрованных данных клиента в ФСС.
Offline Сергей81  
#5 Оставлено : 28 апреля 2022 г. 13:34:03(UTC)
Сергей81

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

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

Сказал «Спасибо»: 6 раз
Извините, некорректно написал вопрос.
Нужен Сертификат, с помощью которого я делаю ЭЦП.

Цитата:
в указанном коде: certificate видите для Signer передаётся?
Смотрели в документацию, описание... ?


Видел, смотрел. Вы можете дать пример как я могу на JavaScript получить сертификат? через объект certificate, через объект oSigner?:

Цитата:
Methods
Export если реально идёт речь, про "передать сертификат".


Где описан метод Export?
В документации его нет. Не понимаю как ваши ссылки на VBScript относится к JavaScript?
Offline Андрей *  
#6 Оставлено : 28 апреля 2022 г. 13:49:02(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Автор: SBA007 Перейти к цитате

Где описан метод Export?
В документации его нет. Не понимаю как ваши ссылки на VBScript относится к JavaScript?


потому что документацию необходимо полностью читать или следовать по ссылкам.
интерфейс общий, как у MS с некоторыми отличиями (указывается если есть такие).


var CertBase64 = yield certificate.Export(0);
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Сергей81 оставлено 28.04.2022(UTC)
Offline Сергей81  
#7 Оставлено : 28 апреля 2022 г. 15:14:12(UTC)
Сергей81

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

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

Сказал «Спасибо»: 6 раз
Автор: Андрей * Перейти к цитате

var CertBase64 = yield certificate.Export(0);


Благодарю вас, получилось то что нужно.

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

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.