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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline farma-k  
#1 Оставлено : 30 января 2017 г. 17:29:03(UTC)
farma-k

Статус: Новичок

Группы: Участники
Зарегистрирован: 30.01.2017(UTC)
Сообщений: 6
Российская Федерация
Откуда: Королев

Сказал(а) «Спасибо»: 1 раз
Возникла необходимость отправлять из системы на платформе 1с7.7 запросы подписанные ЭЦП (CAdES-BES (CMS Advanced Electronic Signatures - Basic Electronic Signature) по алгоритму ГОСТ 34.10-2001)

я нашел куски кода для подписывания при помощи CAPICOM используя javascript

вот код для подписывания (был найден после долгого поиска на каком то 1с-ном форуме.)

СтрКода="function SignFile(FileName,Cert,OutFileName)
|{
| InStream=new ActiveXObject(""ADODB.Stream"");
| InStream.Type=1;// binary data

| InStream.Mode=3;// read/write

| InStream.Open();
| InStream.LoadFromFile(FileName);
| InData=InStream.Read(-1);
|
| Signer=new ActiveXObject(""CAPICOM.Signer"");
| Signer.Certificate=Cert;
| Signer.Options=2;// CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY

| SignedData=new ActiveXObject(""CAPICOM.SignedData"");
| SignedData.Content=InData;
| OutSignedData=SignedData.Sign(Signer,0,1);
|
| OutStream=new ActiveXObject(""ADODB.Stream"");
| OutStream.Type=2;// text data

| OutStream.Mode=3;// read/write

| OutStream.Open();
| OutStream.WriteText(OutSignedData);
| OutStream.SaveToFile(OutFileName,2);
| OutStream.Close();
|
| return(0);
|}
|";

на входе имя файла в котором содержится json запрос
при исполнении кода что-то происходит, записывается результирующий файл, но он при просмотре его например блокнотом выглядит как набор иероглифов.
а нужно получить строку base64.
и при проверке выдается ошибка «Неверный формат данных (0х80070057)»
вопрос что можно с этим сделать?
Offline Kirill Sobolev  
#2 Оставлено : 30 января 2017 г. 18:01:52(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Если нужно base64, то и в SignedData.Sign нужно передавать CAPICOM_ENCODE_BASE64, т.е. SignedData.Sign(Signer,0,0);
Кстати, если вызывать CAPICOM из javascript, то при подписи бинарных данных нечетной длины подпись будет некорректная.
Техническую поддержку оказываем тут
Наша база знаний
Offline farma-k  
#3 Оставлено : 30 января 2017 г. 18:09:39(UTC)
farma-k

Статус: Новичок

Группы: Участники
Зарегистрирован: 30.01.2017(UTC)
Сообщений: 6
Российская Федерация
Откуда: Королев

Сказал(а) «Спасибо»: 1 раз
Автор: Kirill Sobolev Перейти к цитате
Если нужно base64, то и в SignedData.Sign нужно передавать CAPICOM_ENCODE_BASE64, т.е. SignedData.Sign(Signer,0,0);
Кстати, если вызывать CAPICOM из javascript, то при подписи бинарных данных нечетной длины подпись будет некорректная.


что можно тут изменить чтобы подпись была корректной?

Offline Kirill Sobolev  
#4 Оставлено : 31 января 2017 г. 10:02:23(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Отказаться от javascript или использовать наш API.
Техническую поддержку оказываем тут
Наша база знаний
Offline farma-k  
#5 Оставлено : 31 января 2017 г. 21:01:42(UTC)
farma-k

Статус: Новичок

Группы: Участники
Зарегистрирован: 30.01.2017(UTC)
Сообщений: 6
Российская Федерация
Откуда: Королев

Сказал(а) «Спасибо»: 1 раз
Автор: Kirill Sobolev Перейти к цитате
Отказаться от javascript или использовать наш API.

что такое ваш API? единственный вариант найденный поиском в интернете по сочетанию слов "ЭЦП" и "1с7.7" был именно такой вариант.
можно подробнее про этот API, где его можно взять, и как использовать? я реально почти ничего не смог найти в таком сочетании.
Offline Андрей Писарев  
#6 Оставлено : 31 января 2017 г. 21:36:20(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Здравствуйте.

Имелось ввиду отказаться от CAPICOM и использовать в коде обращение к CAdESCOМ


Главная > Продукты > КриптоПро ЭЦП

Примеры

Техническую поддержку оказываем тут
Наша база знаний
Offline farma-k  
#7 Оставлено : 31 января 2017 г. 22:12:46(UTC)
farma-k

Статус: Новичок

Группы: Участники
Зарегистрирован: 30.01.2017(UTC)
Сообщений: 6
Российская Федерация
Откуда: Королев

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Здравствуйте.

Имелось ввиду отказаться от CAPICOM и использовать в коде обращение к CAdESCOМ


Главная > Продукты > КриптоПро ЭЦП

Примеры



обращение к CAdESCOМ возможно напрямую из 1с? если да, то как его подключить и есть ли описание?

я не знаком с javascript, просто вставил кусок кода в 1с.

Offline farma-k  
#8 Оставлено : 1 февраля 2017 г. 17:33:37(UTC)
farma-k

Статус: Новичок

Группы: Участники
Зарегистрирован: 30.01.2017(UTC)
Сообщений: 6
Российская Федерация
Откуда: Королев

Сказал(а) «Спасибо»: 1 раз
Каким образом можно использовать CAdESCOМ?
если на компьютере установлен Crypto pro 3.6, этого достаточно?
или требуется его где-то брать и ставить дополнительно.
и каким образом к нему обращаться?
просто заменить приведенном в посте в коде с CAPICOM на CAdESCOМ?
или там другие методы?
Offline Андрей Писарев  
#9 Оставлено : 1 февраля 2017 г. 18:26:23(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: farma-k Перейти к цитате

обращение к CAdESCOМ возможно напрямую из 1с? если да, то как его подключить и есть ли описание?



Работать как и с CAPICOM, через ActiveXObject.


>если на компьютере установлен Crypto pro 3.6, этого достаточно?

Нет, требуется установить дистрибутив.

Вы смотрели ссылки и описание выше?

Цитата:
http://www.cryptopro.ru/products/cades
КриптоПро ЭЦП SDK распространяется свободно.

Перейти к загрузке.
В ряде случаев требуется установить только cades.dll или cadescom.dll, не устанавливая при этом КриптоПро ЭЦП SDK полностью. В таких случаях можно воспользоваться следующими дистрибутивами.




Цитата:
и каким образом к нему обращаться?
просто заменить приведенном в посте в коде с CAPICOM на CAdESCOМ?
или там другие методы?


Также как и к CAPICOM, т.к. большинство функционала реализовано аналогично, но есть и другие методы, которые расширяют возможности.

Изучите раздел Интерфейс COM


P.S.
В поисковике по ключевым словам выдается пример
ExampleCAdESCOMSignedXMLFor1C

Предлагаю изучить и его.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
farma-k оставлено 02.02.2017(UTC)
Offline Андрей Писарев  
#10 Оставлено : 1 февраля 2017 г. 18:30:27(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: Андрей * Перейти к цитате
Автор: farma-k Перейти к цитате

обращение к CAdESCOМ возможно напрямую из 1с? если да, то как его подключить и есть ли описание?



Работать как и с CAPICOM, через ActiveXObject.


В 1С через "Новый COMОбъект"
...
Код:
oSigner = Новый COMОбъект("CAdESCOM.CPSigner"); 
	oSigner.Certificate = ПолучитьСертификат(параметры поиска); 
	oSignedData = Новый COMОбъект ("CAdESCOM.CadesSignedData");
 	oSignedData.Content = Данные; 
Результат = oSignedData.SignCades(oSigner, CADES_BES, False, CAPICOM_ENCODE_BASE64);

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