О правовой ссылке и порядке преобразований XML-подписи

Я совершенно запутался в ссылке и преобразовании подписи XML

При ссылке на один и тот же документ существует ли какой-либо законный URI, ожидающий "" и "#objectid"?

а также

При подписании обернутой подписи, после разыменования, следует ли сначала применить C14N или преобразование в оболочке? (хотя вроде разницы нет)

Спасибо


person iOS Padawan    schedule 13.06.2012    source источник


Ответы (1)


Для ссылок на один и тот же документ допустимые URI также определяются структурой XPointer, поэтому вполне возможно, что существуют другие URI, отличные от типичных, которые вы упомянули.

Преобразование «Оболочка» — это преобразование, входом которого является набор узлов, который также создает набор узлов. Набор входных узлов задается неявно путем разыменования атрибута URI, и результатом будет другой набор узлов, из которого удален элемент подписи, содержащий преобразование.

Чтобы иметь возможность вычислить дайджест сообщения, необходимый для вычисления значения подписи, набор узлов должен быть сначала преобразован в «октетный поток». Это то, что делает C14N. Вы либо применяете явно указанное преобразование C14N, либо, если оно не указано, вы применяете неявное преобразование C14N 1.0 (см. Синтаксис подписи XML и обработка, версия 1.1):

Если результатом разыменования URI и применения преобразований является набор узлов XPath (или достаточно функциональная замена, реализованная приложением), то он должен быть преобразован, как описано в разделе 4.4.3.2 Модель обработки ссылок.

а также

Если объект данных представляет собой набор узлов, а для следующего преобразования требуются октеты, приложение подписи должно попытаться преобразовать набор узлов в поток октетов с использованием канонического XML [XML-C14N].

Также важно применять преобразования в том же порядке, в котором они появляются в документе, это вполне может привести к неправильным результатам, если вы применяете их в произвольном порядке.

person emboss    schedule 16.06.2012
comment
Спасибо за ответ. Что делать, если Xpointer не поддерживается? (поскольку это НЕ ТРЕБУЕТСЯ) - person iOS Padawan; 16.06.2012
comment
Это нормально, поскольку вам не нужно, вы можете просто отказаться от проверки такого документа. Но для максимальной совместимости вы, вероятно, все же захотите. - person emboss; 16.06.2012