Статус: Участник
Группы: Участники
Зарегистрирован: 31.07.2012(UTC) Сообщений: 23 Откуда: Москва Сказал «Спасибо»: 5 раз
|
Здравствуйте, есть необходимость на клиенте (web-приложение) подписывать бинарные данные
- Пришедшие с сервера в каком-либо виде. Например, в виде base-64 строки.
- Загружаемые с клиента. Например, файлы, выбираемые при помощи input[type=file].
Подписывать нужно именно бинарные данные, а не base64 представление. И из подписи потом (на сервере) формировать бинарные данные в виде файла. Возможно ли это с помощью CryptoPro browser plug-in? Платформа: - клиент - JavaScript - сервер - .Net 4.0
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671 Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
|
С уважением, Юрий Строжевский |
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Вы можете воспользоваться свойством ContentEncoding объекта CadesSignedData. Если задать значение свойства CADESCOM_BASE64_TO_BINARY, то исходные данные, закодированные в BASE64, будут автоматически декодированы в бинарные и именно в таком (декодированном) виде будут подписаны. Значение свойства ContentEncoding нужно задавать до того, как вы передадите сами данные в свойство Content. 1. В виде BASE64 строки - идеальный вариант для произвольных бинарных данных. 2. В каком бы виде вы не загружали данные с клиента, вы всегда можете при необходимости предварительно закодировать их в BASE64 прямо в вашем web-приложении. В JavaScript для этого есть стандартные средства. Цитата:И из подписи потом (на сервере) формировать бинарные данные в виде файла. Не совсем поняла, что значит "сформировать данные из подписи". Вы собираетесь создавать на клиенте присоединенную (attached) подпись, отправлять ее на сервер и там разбирать на 2 отдельных файла: данные и отделенная подпись? В этом случае гораздо проще создавать сразу отделенную подпись и отправлять на сервер отдельно подпись и данные (при необходимости). А на сервере декодировать данные и подпись, пришедшие с клиента в виде base64-строк, в отдельные файлы. .Net Framework умеет декодировать из BASE64.
|
1 пользователь поблагодарил Новожилова Елена за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 31.07.2012(UTC) Сообщений: 23 Откуда: Москва Сказал «Спасибо»: 5 раз
|
Вроде все понял, спасибо!
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.04.2014(UTC) Сообщений: 2 Откуда: Москва
|
Коллеги, проблема в подписании UTF-8 строки, настроил подписание на стороне браузера и валидацию на стороне сервера, если подписывать тестовые строки с латинскими символами - все проходит нормально, но если в качестве исходной строки передать например "тест" то Во первых падает стандартный кодировщик base64 (btoa) Во вторых, если изменить кодировщик на сторонний с поддержкой utf8 (Например https://github.com/yckart/jquery.base64.js) начинаются проблемы с валидацией. Считается неправильный хеш...
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.04.2014(UTC) Сообщений: 2 Откуда: Москва
|
Да, действительно, проблема решилась добавлением явной перекодировки в js файле:
var b64data = btoa(unescape(encodeURIComponent(data)));
И в Java на сервере:
data.getBytes(Charsets.UTF_8);
Спасибо...
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close