2012-06-06 19 views
3

Я проверил синтаксис и обработку подписи XML на веб-сайте W3C, , однако он мало говорит о мультиподписи. Есть ли стандарт или правило для создания мультиподписи в одном XML-файле? СпасибоЕсть ли стандарт для XML-подписи?

Примера: (рассматривать только тот же файл реферирование)

Оригинального XML

<root> 
    <item> 
    <name>Apple</name> 
    <price>100</price> 
    </item> 
</root> 

сначала подписывает его с оболочечной подписью

подписанной XML

<root> 
    <item> 
    <name>Apple</name> 
    <price>100</price> 
    </item> 
    <Signature>this is Signature signed by A with Ref URL=""</Signature> 
</root> 

Теперь B хочет подписать XML (содержащий A si gnature)

B Подпись XML

<root> 
    <item> 
    <name>Apple</name> 
    <price>100</price> 
    </item> 
    <Signature>Signature A: this is Signature signed by A with Ref URL=""</Signature> 
    <Signature>Signature B: this is Signature signed by B with Ref URL=""</Signature> 
</root> 

тогда, когда речь идет о проверке, она становится запутанным ...

для подписания, при проверке, он видит

<root> 
    <item> 
    <name>Apple</name> 
    <price>100</price> 
    </item> 
    <Signature>Signature B: this is Signature signed by B with Ref URL=""</Signature> 
</root> 

но что он фактически подписал, является

<root> 
    <item> 
    <name>Apple</name> 
    <price>100</price> 
    </item> 
</root> 

(обратите внимание, что из-за огибающего преобразования удаленный узел подписи удаляется при подписании и завершении) Та же проблема может быть решена путем обработки узла Signature как root при обклеивании подписи. Но если задействовано несколько ссылок, это может усложниться.

ответ

3

Нет никакой проблемы при создании нескольких подписей над одним набором узлов и их включении в один и тот же документ XML с использованием текущего стандарта XMLDSig. Никаких специальных правил или стандартов не требуется.

С вашим образцом каждая подпись должна (должна быть) сделана не над «root», а над узлом «item» (или набором узлов элемента). Следовательно, подпись B не охватывает подпись A в качестве данных, подлежащих подписанию.

+0

Благодарим вас за ответ, но я все еще довольно смущен. Я отредактирую свой вопрос, чтобы привести пример, что дополнительная подпись может повлиять на предыдущую. –

+0

@iOSPadawan Я обновил ответ. –

+0

Спасибо! Но что, если он должен быть подписан на корневой основе (например, есть более 1 пункта)? И подпись B, а также следующая подпись в будущем должны иметь возможность решать, подписываются ли предыдущие узлы подписей самостоятельно. (такая ситуация, как есть D, кто знает A и C, но не может распознать B и D, а D хочет подписать исходное содержимое вместе с подписями A и C). Кажется, пользователь должен сам позаботиться об этих деталях? –

Смежные вопросы