Статус: Новичок
Группы: Участники
Зарегистрирован: 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)» вопрос что можно с этим сделать?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Если нужно base64, то и в SignedData.Sign нужно передавать CAPICOM_ENCODE_BASE64, т.е. SignedData.Sign(Signer,0,0); Кстати, если вызывать CAPICOM из javascript, то при подписи бинарных данных нечетной длины подпись будет некорректная. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 30.01.2017(UTC) Сообщений: 6  Откуда: Королев Сказал(а) «Спасибо»: 1 раз
|
Автор: Kirill Sobolev  Если нужно base64, то и в SignedData.Sign нужно передавать CAPICOM_ENCODE_BASE64, т.е. SignedData.Sign(Signer,0,0); Кстати, если вызывать CAPICOM из javascript, то при подписи бинарных данных нечетной длины подпись будет некорректная. что можно тут изменить чтобы подпись была корректной?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Отказаться от javascript или использовать наш API. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 30.01.2017(UTC) Сообщений: 6  Откуда: Королев Сказал(а) «Спасибо»: 1 раз
|
Автор: Kirill Sobolev  Отказаться от javascript или использовать наш API. что такое ваш API? единственный вариант найденный поиском в интернете по сочетанию слов "ЭЦП" и "1с7.7" был именно такой вариант. можно подробнее про этот API, где его можно взять, и как использовать? я реально почти ничего не смог найти в таком сочетании.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
Здравствуйте. Имелось ввиду отказаться от CAPICOM и использовать в коде обращение к CAdESCOМ Главная > Продукты > КриптоПро ЭЦППримеры |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 30.01.2017(UTC) Сообщений: 6  Откуда: Королев Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей *  Здравствуйте. Имелось ввиду отказаться от CAPICOM и использовать в коде обращение к CAdESCOМ Главная > Продукты > КриптоПро ЭЦППримеры обращение к CAdESCOМ возможно напрямую из 1с? если да, то как его подключить и есть ли описание? я не знаком с javascript, просто вставил кусок кода в 1с.
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 30.01.2017(UTC) Сообщений: 6  Откуда: Королев Сказал(а) «Спасибо»: 1 раз
|
Каким образом можно использовать CAdESCOМ? если на компьютере установлен Crypto pro 3.6, этого достаточно? или требуется его где-то брать и ставить дополнительно. и каким образом к нему обращаться? просто заменить приведенном в посте в коде с CAPICOM на CAdESCOМ? или там другие методы?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 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, т.к. большинство функционала реализовано аналогично, но есть и другие методы, которые расширяют возможности. Изучите раздел Интерфейс COMP.S. В поисковике по ключевым словам выдается пример ExampleCAdESCOMSignedXMLFor1CПредлагаю изучить и его. |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 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);
|
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close