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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline gagarin  
#11 Оставлено : 11 января 2013 г. 15:33:19(UTC)
gagarin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 02.07.2012(UTC)
Сообщений: 58
Откуда: russia

Сказал(а) «Спасибо»: 1 раз
Я понимаю, что у меня проблема которая описана статье - http://www.cryptopro.ru/.../capicom-i-kriptopro-csp .
Я уже сверял подписи и вижу какой именно текст подписывается.. я не могу понять, как это исправить.

Т.е. я вижу xml
Код:
<?xml version="1.0" encoding="UTF-8?>
<ROOT>
<node1 atr="1">Value 1</node1>
<node2 atr="2">Value 2</node2>
</ROOT>


а на подпись идет
Код:
 < ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " U T F - 8 ? >
 < R O O T >
 < n o d e 1   a t r = " 1 " > V a l u e   1 < / n o d e 1 >
 < n o d e 2   a t r = " 2 " > V a l u e   2 < / n o d e 2 >
 < / R O O T >

При этом кириллица пропадает вовсе..

Отредактировано пользователем 11 января 2013 г. 15:35:54(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#12 Оставлено : 11 января 2013 г. 15:43:47(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
Я уже сверял подписи и вижу какой именно текст подписывается.. я не могу понять, как это исправить.

Javascript работает исключительно с юникодными строками.
Вы передаете для подписи юникодную строку.
CAPICOM успешно подписывает юникодную строку.
Что именно из этого Вы хотите исправить?
Техническую поддержку оказываем тут
Наша база знаний
Offline gagarin  
#13 Оставлено : 11 января 2013 г. 16:08:24(UTC)
gagarin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 02.07.2012(UTC)
Сообщений: 58
Откуда: russia

Сказал(а) «Спасибо»: 1 раз
Цитата:
Что именно из этого Вы хотите исправить?

У меня получается, что сохраняемый документ не соответствует подписанному документу в юникоде.
Содержание документа после подписи передается post'ом на php скрипт и сохраняется в файл.

Как сохранить то, что подписал CAPICOM? вернее тот же текст.. не знаю как правильно выразиться..

Отредактировано пользователем 11 января 2013 г. 16:09:13(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#14 Оставлено : 11 января 2013 г. 16:28:41(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
Содержание документа после подписи передается post'ом на php скрипт и сохраняется в файл.
Как сохранить то, что подписал CAPICOM? вернее тот же текст.. не знаю как правильно выразиться..

Преобразовываете в юникод и сохраняете, в 2008 это например умеет делать wordpad.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#15 Оставлено : 11 января 2013 г. 16:28:45(UTC)
Андрей *

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

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

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
Автор: gagarin Перейти к цитате
Цитата:
Что именно из этого Вы хотите исправить?

У меня получается, что сохраняемый документ не соответствует подписанному документу в юникоде.
Содержание документа после подписи передается post'ом на php скрипт и сохраняется в файл.

Как сохранить то, что подписал CAPICOM? вернее тот же текст.. не знаю как правильно выразиться..


Выложите здесь пример текстового файла, который сохраняет php-скрипт на сервере. Кодировка UTF-8?
Техническую поддержку оказываем тут
Наша база знаний
Offline gagarin  
#16 Оставлено : 14 января 2013 г. 10:04:14(UTC)
gagarin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 02.07.2012(UTC)
Сообщений: 58
Откуда: russia

Сказал(а) «Спасибо»: 1 раз
.

Отредактировано пользователем 14 января 2013 г. 13:30:26(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#17 Оставлено : 14 января 2013 г. 13:25:05(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
После подписи я шлю методом POST то, что подписал CAPICOM.
Делаем detect_encoding(POST) и видим ASCII. Откуда??? Если Javascript работает исключительно с юникодными строками??

Именно в этом у меня проблема. Подписывается не юникод.


Цитата:
Выложите присоединенную и неприсоединенную подпись.
Техническую поддержку оказываем тут
Наша база знаний
Offline gagarin  
#18 Оставлено : 14 января 2013 г. 15:03:21(UTC)
gagarin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 02.07.2012(UTC)
Сообщений: 58
Откуда: russia

Сказал(а) «Спасибо»: 1 раз
Большое спасибо всем кто откликнулся, проблема решена!
Offline Андрей Писарев  
#19 Оставлено : 14 января 2013 г. 15:07:46(UTC)
Андрей *

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

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

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
Автор: gagarin Перейти к цитате
Большое спасибо всем кто откликнулся, проблема решена!


Напишите решение вашей проблемы здесь для следующего поколения...
Техническую поддержку оказываем тут
Наша база знаний
Offline gagarin  
#20 Оставлено : 14 января 2013 г. 15:50:10(UTC)
gagarin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 02.07.2012(UTC)
Сообщений: 58
Откуда: russia

Сказал(а) «Спасибо»: 1 раз
Проект строится на PHP фреймворке. Все скрипты в кодировке UTF-8.
После передачи POST'ом на контроллер, где то в недрах фреймворка идет непонятное преобразование ASCII но возвращает в UTF-8.

Мое решение такое:
К функции подписи добавляем "CAPICOM.Utilities"
Код:
//после
SignedData.Content = content;

// подключаем "CAPICOM.Utilities" 
var utils = new ActiveXObject("CAPICOM.Utilities");
//и конвертируем в Base64 что подписывает CAPICOM (ASCII)
var contentBase64 = utils.Base64Encode(content);

и полученный "contentBase64" отправляем POST'ом вместе с подписью.

Далее в php скрипте который принимает POST данные...
Код:
//Декодируем из Base64 без каких либо потерь
$data = base64_decode($_POST["contentBase64"]);
// и сохраняем в файл вашей функцией сохранения . В моем случае так
file_put_contents($file, iconv("UTF-8", "ASCII", $data));


P.S.
Интересно, не могу вставить 2 блока кода в разных цветовых схемах (JavaScript и PHP). По одной вставляется.

Отредактировано пользователем 14 января 2013 г. 15:50:41(UTC)  | Причина: Не указана

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