Статус: Участник
Группы: Участники
Зарегистрирован: 01.10.2019(UTC) Сообщений: 19  Сказал(а) «Спасибо»: 1 раз
|
Уважаемые друзья, подскажите плиз. Есть стандартны cmd код - cd c:\Program Files\Crypto Pro\CSP -> csptest -> csptest -sfsign -sign -in C:\base\test.txt –out C:\base\out.txt -my "Фирма Х" -detached -base64 –add. Так вот, этот код в фаил "out.txt" возвращает корректные данные Base64, которые сайт воспринимает как надо, и выдает ключ сессии. А объект CAdESCOM возвращает не корректные данные, тот же сайт не принимает их. Хотя вроде код стандартный вот пример:
Функция ПодписатьCAdES(test, ComОбъектСертификата) CADESCOM_CADES_TYPE = 1; //CADESCOM_CADES_BES=1 CADESCOM_CADES_DEFAULT=0 CADESCOM_CADES_T=5 bDetached = -1; EncodingType = 0; //CAPICOM_ENCODE_BASE64=0 CAPICOM_ENCODE_BINARY=1 oSigner = Новый COMОбъект("CAdESCOM.CPSigner"); oSigner.Certificate = ComОбъектСертификата; oSigner.KeyPin = "ПарольОтУКЭП"; oSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData"); //oSignedData.ContentEncoding = 1; oSignedData.Content = test;
sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_TYPE, bDetached, EncodingType);
Возврат УбратьСимволы10_13(sSignedMessage); // Подпись в формате Base64 КонецФункции Подскажите как с помощью объекта "CAdESCOM" сделать аналог cmd-шного вызова csptest ?
Заранее спасибо!
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,705   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,705   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,705   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Цитата:oSignedData.ContentEncoding = 1; oSignedData.Content = закодироватьВbase64(test); |
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 396 раз в 366 постах
|
Автор: sergei100  Уважаемые друзья, подскажите плиз. Есть стандартны cmd код - cd c:\Program Files\Crypto Pro\CSP -> csptest -> csptest -sfsign -sign -in C:\base\test.txt –out C:\base\out.txt -my "Фирма Х" -detached -base64 –add. Так вот, этот код в фаил "out.txt" возвращает корректные данные Base64, которые сайт воспринимает как надо, и выдает ключ сессии. ... Подскажите как с помощью объекта "CAdESCOM" сделать аналог cmd-шного вызова csptest ? Заранее спасибо!
Если что, я не сотрудник КриптоПро. При такой формулировке вопроса и заголовка у Вас выходит что неправильный Base64, а по факту вопрос в отличии подформата подписи и сотрудники КриптоПро будут отвечать Вам на неправильно заданный вопрос не относящимися к делу советами как задать кодировку и т.д. Уже наверно с десяток тем на форуме с подобным реальным вопросом чуть не слово в слово (Подскажите как с помощью объекта "CAdESCOM" сделать аналог cmd-шного вызова csptest ?) и разными клонами функции подписания. Ответа нет, так как Вам нужно разбираться какой именно подформат cades выдает командная строка csptest -sfsign -sign (помимо очевидного из параметров: отсоединенная, cades гост, вывод в base64). Однако ни один из создающих темы этого не осветил. Что это: cms, cades-bes, cades-T, cades long type 1? Наверно есть возможность задать вопрос техподдержке этого сайта или посмотреть в руководстве утилиты. Без понимания какой именно (под)формат подписи нужен сложно что-либо посоветовать. Например, у меня просто нет времени вникать в результаты выдаваемые утилитой, руководство утилиты, определять по ним нужный формат, а потом еще и в руководство плагина. Без точных сведений по вопросу подсказать не смогу. В коде Вы ставите cades-bes и это не подходит, как минимум попробуйте другие варианты. В одной из похожих тем ошибка была просто в том, что не применяли urlencode при передаче Base64 в заголовках запроса. Отредактировано пользователем 2 октября 2019 г. 0:59:01(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.10.2019(UTC) Сообщений: 19  Сказал(а) «Спасибо»: 1 раз
|
1) В test ответ ключ типа "2083ac32-86e7-4879-8a7a-4fc5b7fba914" получаемый от сайт "Честный знак" 2) bDetached = -1; Это false 3)two_oceans, спасибо. Сегодня постараюсь с кодировками разобраться, хотя вроде в протоколе обмена сказанно в base64, но что то тут не так. Буду разбираться.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.10.2019(UTC) Сообщений: 19  Сказал(а) «Спасибо»: 1 раз
|
Андрей , спасибо за совет.
oSignedData.ContentEncoding = 1; oSignedData.Content = закодироватьВbase64(test);
Попробую, отпишусь.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,705   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Автор: sergei100  1) В test ответ ключ типа "2083ac32-86e7-4879-8a7a-4fc5b7fba914" получаемый от сайт "Честный знак" 2) bDetached = -1; Это false 3)two_oceans, спасибо. Сегодня постараюсь с кодировками разобраться, хотя вроде в протоколе обмена сказанно в base64, но что то тут не так. Буду разбираться. Т.е. bDetached = -1; = false - т.е .Вы требуете от CADESCOM создать присоединенную подпись? А в требованиях указано (и вызываете через утилиту), что требуется отсоединенная: Цитата: -my "Фирма Х" -detached -base64 –add.
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,705   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Автор: two_oceans  Автор: sergei100  Уважаемые друзья, подскажите плиз. Есть стандартны cmd код - cd c:\Program Files\Crypto Pro\CSP -> csptest -> csptest -sfsign -sign -in C:\base\test.txt –out C:\base\out.txt -my "Фирма Х" -detached -base64 –add. Так вот, этот код в фаил "out.txt" возвращает корректные данные Base64, которые сайт воспринимает как надо, и выдает ключ сессии. ... Подскажите как с помощью объекта "CAdESCOM" сделать аналог cmd-шного вызова csptest ? Заранее спасибо!
Если что, я не сотрудник КриптоПро. При такой формулировке вопроса и заголовка у Вас выходит что неправильный Base64, а по факту вопрос в отличии подформата подписи и сотрудники КриптоПро будут отвечать Вам на неправильно заданный вопрос не относящимися к делу советами как задать кодировку и т.д. Уже наверно с десяток тем на форуме с подобным реальным вопросом чуть не слово в слово (Подскажите как с помощью объекта "CAdESCOM" сделать аналог cmd-шного вызова csptest ?) и разными клонами функции подписания. Ответа нет, так как Вам нужно разбираться какой именно подформат cades выдает командная строка csptest -sfsign -sign (помимо очевидного из параметров: отсоединенная, cades гост, вывод в base64). Однако ни один из создающих темы этого не осветил. Что это: cms, cades-bes, cades-T, cades long type 1? Наверно есть возможность задать вопрос техподдержке этого сайта или посмотреть в руководстве утилиты. Без понимания какой именно (под)формат подписи нужен сложно что-либо посоветовать. Например, у меня просто нет времени вникать в результаты выдаваемые утилитой, руководство утилиты, определять по ним нужный формат, а потом еще и в руководство плагина. Без точных сведений по вопросу подсказать не смогу. В коде Вы ставите cades-bes и это не подходит, как минимум попробуйте другие варианты. В одной из похожих тем ошибка была просто в том, что не применяли urlencode при передаче Base64 в заголовках запроса. Достаточно выполнить обратное действие: выполнить проверку подписи от Cadescom через утилиту\другой софт. Иногда передают "неправильные данные" (в буфере не те байты, что в исходном файле) на подпись, об этом есть примечание в документации. Поэтому рекомендация: кодировать в base64 и указывать на это перед присвоением content-а. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.10.2019(UTC) Сообщений: 19  Сказал(а) «Спасибо»: 1 раз
|
Андрей Вы правы detached исправил на true. Но пока не получается, еще что странно CadesSignedData возвращает строку без символов 10-13 равную 7 286 символов, а cmd равную 4 508 сим, не понимаю пока в чем проблема.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close