Статус: Новичок
Группы: Участники
Зарегистрирован: 31.07.2018(UTC) Сообщений: 9 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Екб Поблагодарили: 1 раз в 1 постах
|
Автор: Степан З ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Никаких преобразований line breaks to #xA на выходе нет. Это я про innerText
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Цитата:Цитата:Выдержка из стандарта канонизации XML: Line breaks normalized to #xA on input, before parsing При этом дальше идут примеры, где они в innerText-е меняют \r на 
 и не меняют \n, а наоборот 
 меняют на \n! В атрибутах все спецсимволы меняют на последовательность &#..;. Я так понимаю, когда в стандарте написано #xA это просто одиночный символ с кодом 10, то что Вы называете \n ведь в цитате не написано перед #xA амперсанда и в конце точки с запятой, как могло быть: 
 Таким образом, все правильно последовательность 
 меняют на одиночный символ #xA (он же \n) и не меняют \n. Цитата:https://www.w3.org/TR/2000/WD-xml-2e-20000814 2.11 End-of-Line Handling
XML parsed entities are often stored in computer files which, for editing convenience, are organized into lines. These lines are typically separated by some combination of the characters carriage-return (#xD) and line-feed (#xA).
[E86]To simplify the tasks of applications , an XML processor must normalize line breaks in parsed entities to #xA either by translating the two-character sequence #xD #xA and any #xD that is not followed by #xA to #xA on input before parsing, or by using some other method such that the characters passed to the application are the same as if it did this translation.
То есть по основному стандарту XML процессор должен выполнить замену: \r\n заменяется на \n, "одиночные" \r без непосредственно следующего \n заменяются на \n. Цитата:Фишка в том, что процессы нормализации и канонизации — это разные вещи. Верно, а еще дело в том, что при выборе фрагмента xpath может не выбрать ни одного перевода строки вообще - все в одну строку и по идее именно этот вариант должен передаваться на каноникализацию. А мы выбираем фрагмент для подписи непонятно каким образом и у нас во фрагменте оказываются переводы строк которых вообще в принципе быть не должно во фрагменте. Отредактировано пользователем 23 октября 2018 г. 7:01:30(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 31.07.2018(UTC) Сообщений: 9 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Екб Поблагодарили: 1 раз в 1 постах
|
Автор: two_oceans ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Я так понимаю, когда в стандарте написано #xA это просто одиночный символ с кодом 10 Ну, кстати, да. Я сначала за управляющую последовательность это принял. Автор: two_oceans ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) по основному стандарту XML процессор должен выполнить замену Но, видимо, не обязан. И в том же .Net-е разные механизмы (XmlDocument, XmlReader и XmlTextReader) ведут себя по-разному. А вот при формировании подписи, да, надо обязательно в канонизацию передавать данные из нормализирующей читалки (об этом есть в стандарте XMLDSign пункт 7.1). Я же использовал XmlDocument, а надо было использовать, например, XmlReader. P.S. Автор: Степан З ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) В потрохах .Net есть код, который при проверке в методе SignedXml.CheckSignature() подменяет \r на \n, а \r\n на \n — они это называют нормализацией документа. На самом деле, просто прогоняет документ через XmlTextReader. Зачем? Я не понимаю.
Кажется, что тот самый пункт 7.1 отвечает на этот вопрос. Но мне не понятно пока, почему они эту функциональность в XmlDsigExcC14NTransform не втащили...
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Автор: Степан З ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Но, видимо, не обязан. "or by using some other method such that the characters passed to the application are the same as if it did this translation" Похоже на то, что он может выполнять это при передаче данных куда-то еще. Фиктивная такая замена, потому и поведение разное. А если мы вырываем у него фрагмент не предусмотренным способом эта замена не срабатывает. Цитата: Но мне не понятно пока, почему они эту функциональность в XmlDsigExcC14NTransform не втащили... Вероятно, потому что в оригинале exclusive С14N трансформ хоть и разработан с прицелом на стандарт xmldsig, но все же не является его частью. Поэтому в трансформе предусмотрена замена символов \r на 
 хотя при нормализации с учетом пункта 7.1 xmldsig их вообще не должно остаться к моменту применения трансформа. По крайней мере, в фрагменте выбранном способом, при котором срабатывает фиктивная замена на \n.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 31.07.2018(UTC) Сообщений: 9 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Екб Поблагодарили: 1 раз в 1 постах
|
Автор: two_oceans ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Вероятно, потому что в оригинале exclusive С14N трансформ хоть и разработан с прицелом на стандарт xmldsig, но все же не является его частью. Видимо, да. Тогда вопрос к наименованию этого класса. Делает только exclusive С14N transform — называли бы соответственно и без лишних префиксов. Но это, похоже, уже другая история )
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close