Статус: Участник
Группы: Участники
Зарегистрирован: 11.10.2018(UTC) Сообщений: 14 Откуда: Краснодар Поблагодарили: 2 раз в 2 постах
|
Автор: Андрей Писарев Получили данные от сервера\отправили обратно. GET\POST Загвоздка не в отправке файла, а в получении подписанного. В примере https://www.cryptopro.ru...page/cades_bes_file.html в форме прикрепляется файл, затем он преобразуется в base64, после чего подписывается и в таком же виде выводиться на экран. А вот как после подписания вернуть прикрепленный файл, только подписанный не понятно Автор: Андрей Писарев В чём сложности\какой язык разработки на сервере? PHP
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
Автор: vgNikoz в форме прикрепляется файл, затем он преобразуется в base64, после чего подписывается и в таком же виде выводиться на экран. А вот как после подписания вернуть прикрепленный файл, только подписанный не понятно Автор: Андрей Писарев В чём сложности\какой язык разработки на сервере? PHP Куда вернуть? Файл полностью доступен из js. В примере получается присоединенная подпись (сам файл+подпись). Если требуется только сама подпись - вызвать функцию подписания с указанием на это. Как передать на сервер файл указанный в форме, а также саму подпись методом POST - в этом проблема? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.10.2018(UTC) Сообщений: 14 Откуда: Краснодар Поблагодарили: 2 раз в 2 постах
|
Автор: Андрей Писарев Как передать на сервер файл указанный в форме, а также саму подпись методом POST - в этом проблема? Проблема была в сохранении base64 обратно в файл. Разобрался с этим вопросом, файл сохраняется. Но возникло еще пару вопросов: - после сохранения файла, я пытаюсь его открыть через Adobe Acrobat Reader(в нем же есть функция проверки наличия подписи), но он мне не показывает, что подпись есть. Возможно ли это из-за того что сертификат используемый для подписи файла тестовый? проверил файл на https://www.gosuslugi.ru/pgu/eds/, данные о подписи выдал - где-то находил, что при подписании файла возвращается сам файл и еще файл .sig, тут так не обязательно? или все же нужно в итоге разделять файл и подпись и сохранять их отдельно? - и есть ли функции проверки наличия подписи и ее корректность используя сам плагин? Отредактировано пользователем 17 октября 2018 г. 11:25:49(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.10.2018(UTC) Сообщений: 18
Сказал(а) «Спасибо»: 9 раз
|
Автор: Андрей Писарев Автор: vgNikoz Автор: Антонимиус Дальше в демо примере фаил загружается с компьютера пользователя, а как сделать загрузку файла, который нужно подписать с сайта? После того как фаил будет подписан плагином его нужно отправить на сервер, как это сделать? У вас получилось такое реализовать? Получили данные от сервера\отправили обратно. GET\POST В чём сложности\какой язык разработки на сервере? Язык на сервере php Но клиент то работает с плагином. Собственно вопрос как передать фаил с сервера плагину? И как потом подписанный фаил вернуть на сервер? То есть плагин что возвращает форму с файлом и достаточно сделать ее пост? Есть простые примеры реализации?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.10.2018(UTC) Сообщений: 14 Откуда: Краснодар Поблагодарили: 2 раз в 2 постах
|
Автор: Антонимиус Язык на сервере php Но клиент то работает с плагином. Собственно вопрос как передать фаил с сервера плагину? И как потом подписанный фаил вернуть на сервер? То есть плагин что возвращает форму с файлом и достаточно сделать ее пост? Есть простые примеры реализации? я взял пример https://www.cryptopro.ru...age/cades_bes_file.html, тут вся работа построена на js, вам нужны файлы Code.js, cadesplugin_api.js, для firefox нужен еще async_code.js Я работал через firefox поэтому вносил корректировки в файл async_code.js, там есть функция подписания файла SignCadesBES_Async_File. Получается, что вы работаете только в браузере, выбираете файл и ключ которым подписать. При загрузке файла он перекодируется в строку base64, затем эта строка подписывается ключем и возвращается этот же файл с подписью тоже в base64, для обратного преобразования этой строки я добавил функции в этот файл: Код:
function saveFile(Signature, file, mime) {
urltoFile(Signature, file, mime).then(function(file){
var data = new FormData();
data.append('file', file);
$.ajax({
type: 'POST',
url: '/ajax/test.php',
data: data,
cache: false,
dataType: 'json',
processData: false,
contentType: false,
success: function(response) {
console.log(response);
}
});
});
}
function urltoFile(url, filename, mimeType){
console.log(url);
return (fetch(url)
.then(function(res){return res.arrayBuffer();})
.then(function(buf){return new File([buf], filename, {type:mimeType});})
);
}
а в функции SignCadesBES_Async_File перед выводом этой строки подписанного файла в textarea добавил вызов saveFile('data:application/pdf;base64,' + Signature, 'test.pdf', 'application/pdf'); только нужно еще доделал определение формата загруженного файла и подставлять именно его. а в файле test.php я работаю с $_FILES и просто сохраняю файл
|
1 пользователь поблагодарил vgNikoz за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.10.2018(UTC) Сообщений: 18
Сказал(а) «Спасибо»: 9 раз
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.10.2018(UTC) Сообщений: 18
Сказал(а) «Спасибо»: 9 раз
|
Правильно ли я понимаю что текст который выводится после "Подпись сформирована успешно" это и есть base64 строка, которую потом вы принимаете по аяксу в test.php а там идет сохранение в фаил что то на подобии такого: Цитата:$data = base64_decode($pdf_string); file_put_contents('file.pdf',$data); Отредактировано пользователем 18 октября 2018 г. 12:08:59(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
Здравствуйте. Учтите, что в примерах: результат в base64 - это файл с присоединенной подписью и записав ответ в .pdf - не сможете работать, как с PDF, т.к. это CMS, а не исходный файл (PDF). Насчет PDF\DOCX\XLSX - необходимо использовать другие функции (внутренняя реализация подписи). Продукты для этого - DSS Lite + плагин. |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.10.2018(UTC) Сообщений: 18
Сказал(а) «Спасибо»: 9 раз
|
Автор: Андрей Писарев Здравствуйте.
Учтите, что в примерах: результат в base64 - это файл с присоединенной подписью и записав ответ в .pdf - не сможете работать, как с PDF, т.к. это CMS, а не исходный файл (PDF).
А как тогда быть? Как сейчас я планирую делать. Клиент заходит на страницу с сервера ему подгружается фаил он его подписывает после чего я получаю base64 строку и по аяксу сохраняю назад на сервере фаил с подписью. Вы же говорите, что сохраненный таким образом pdf будет битым и его нельзя будет прочитать pdf ридерами? Автор: Андрей Писарев Насчет PDF\DOCX\XLSX - необходимо использовать другие функции (внутренняя реализация подписи). Продукты для этого - DSS Lite + плагин. То есть вместо КриптоПро CSP нужно что бы у клиента был установлен DSS Lite?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.10.2018(UTC) Сообщений: 15 Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей Писарев Здравствуйте. Учтите, что в примерах: результат в base64 - это файл с присоединенной подписью и записав ответ в .pdf - не сможете работать, как с PDF, т.к. это CMS, а не исходный файл (PDF). Насчет PDF\DOCX\XLSX - необходимо использовать другие функции (внутренняя реализация подписи). Продукты для этого - DSS Lite + плагин. Помогите мне пожалуйста. Подписываю обычный текстовый файл при помощи https://www.cryptopro.ru/sites/d...page/cades_bes_file.htmlС сертификатом вроде порядок: подписываю файл. Как я понял на выходе получаем присоединенную подпись. Копирую ее в файл test.txt.sig и иду на сервис проверить http://qs.cryptopro.ru/SVS/Verify/потом проверка выдает ошибку. Как мне добиться, чтобы все работало? Моя задача - реализовать функционал, подписывающий прикрепленные файлы и чтобы их можно было потом проверить. В данном случае для проверки я использую http://qs.cryptopro.ru/SVS/Verify/ - ведь мне нужно убедиться, что все подписывается правильно и после этого уже реализовывать проверку сертификата и подписи на стороне сервера. Локально мне удалось запустить этот пример. Но все равно если это текстовое поле сохранить в виде файла, проверка завершается ошибкой. Где мне найти сервис, который бы проверял подписанные мною документы корректно. Чтоб любой пользователь мог зайти на сайт, подписать файлы используя свой сертификат и ключи, а потом чтобы эти файлы проходили проверку.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close