Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 394 раз в 366 постах
|
Цитата:Попробуйте подпись enveloped сделать В данном случае, это похоже проблематично: enveloped также входит в SignedInfo (как и ссылка на документ, идентификатор узла), то есть его добавление в готовую подпись вызовет ошибку проверки SignatureValue. Таким образом, надо перечисленное добавить при формировании подписи (в идеале) либо сначала проверить SignatureValue, потом добавить enveloped трансформ в проверенный SignedInfo, потом продолжить проверку Reference в SignedInfo с измененным содержимым. Штатными средствами такое сложно провернуть, не обращаясь к низкоуровневым функциям. Лучше наверно найти функцию принимающую подпись и документ раздельно и связывающую их безусловно, игнорируя пустой адрес документа. По моему мнению, меньше урон самой идее проверки подписи при игнорировании адреса, чем при изменении текста готовой подписи. По поводу места: обычно добавляют после самого верхнего открывающего тега (как в Вашем коде) или перед самым верхним закрывающим (я бы вставил сюда, но это чисто дело вкуса), стандарт это описывает весьма смутно и выходит что подойдет почти любое место, подчиненное подписанному узлу. Отредактировано пользователем 19 ноября 2019 г. 13:41:19(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.11.2019(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 1 раз
|
Автор: two_oceans Цитата:Попробуйте подпись enveloped сделать В данном случае, это похоже проблематично: enveloped также входит в SignedInfo (как и ссылка на документ, идентификатор узла), то есть его добавление в готовую подпись вызовет ошибку проверки SignatureValue. Таким образом, надо перечисленное добавить при формировании подписи (в идеале) либо сначала проверить SignatureValue, потом добавить enveloped трансформ в проверенный SignedInfo, потом продолжить проверку Reference в SignedInfo с измененным содержимым. Штатными средствами такое сложно провернуть, не обращаясь к низкоуровневым функциям. Лучше наверно найти функцию принимающую подпись и документ раздельно и связывающую их безусловно, игнорируя пустой адрес документа. По моему мнению, меньше урон самой идее проверки подписи при игнорировании адреса, чем при изменении текста готовой подписи. По поводу места: обычно добавляют после самого верхнего открывающего тега (как в Вашем коде) или перед самым верхним закрывающим (я бы вставил сюда, но это чисто дело вкуса), стандарт это описывает весьма смутно и выходит что подойдет почти любое место, подчиненное подписанному узлу. Да согласна, что проще найти функцию,которая принимала бы на вход документ и подпись, но я такой не нашла. Может вы подскажете? Для работы с подписью xmldsig нашла только пакеты crypto и xmlsec
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,926 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Автор: two_oceans Цитата:Попробуйте подпись enveloped сделать В данном случае, это похоже проблематично: enveloped также входит в SignedInfo (как и ссылка на документ, идентификатор узла), то есть его добавление в готовую подпись вызовет ошибку проверки SignatureValue. Таким образом, надо перечисленное добавить при формировании подписи (в идеале) либо сначала проверить SignatureValue, потом добавить enveloped трансформ в проверенный SignedInfo, потом продолжить проверку Reference в SignedInfo с измененным содержимым. Штатными средствами такое сложно провернуть, не обращаясь к низкоуровневым функциям. Лучше наверно найти функцию принимающую подпись и документ раздельно и связывающую их безусловно, игнорируя пустой адрес документа. По моему мнению, меньше урон самой идее проверки подписи при игнорировании адреса, чем при изменении текста готовой подписи. По поводу места: обычно добавляют после самого верхнего открывающего тега (как в Вашем коде) или перед самым верхним закрывающим (я бы вставил сюда, но это чисто дело вкуса), стандарт это описывает весьма смутно и выходит что подойдет почти любое место, подчиненное подписанному узлу. Про изменение текста речи не были, предполагалось, что разработчик управляет созданием подписи. Отсутствие пустого uri равнозначно подписи всего документа. Автор: elizaveta96 Да согласна, что проще найти функцию,которая принимала бы на вход документ и подпись, но я такой не нашла. Может вы подскажете? Для работы с подписью xmldsig нашла только пакеты crypto и xmlsec
Посмотрите в сторону поточной подписи xmlsec, возможно, что-то есть там, правда, у нас нет таких примеров с гостом. Отредактировано пользователем 20 ноября 2019 г. 7:51:04(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 394 раз в 366 постах
|
Если в рамках Java, то мне сложно подсказать - пишу на другой среде.
Теоретически, в моей самопальной библиотеке такое (подача документа отдельно, подписи отдельно в stdcall конвенции) было предусмотрено, но не тестировалось уже более года. За это время код изменился и вероятно раздельная подача (как и обработка пустого URI="", CDATA с документом) на данный момент не работает. В какую сторону исправлять надо подумать, например, добавить в структуру для представления референса отдельный указатель на xml документ и это обрабатывать.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close