- From: Aleksey Sanin <aleksey@aleksey.com>
- Date: Thu, 30 May 2002 22:24:34 -0700
- To: merlin <merlin@baltimore.ie>
- Cc: w3c-ietf-xmldsig@w3.org
Hi, Merlin!
I have a question regarding your examples. You've canonicalized the second
reference as follows (c14n-1.txt):
<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
<foo:Something xmlns:foo="http://example.org/foo">
<bar:Something xmlns:bar="http://example.org/bar">
<foo:Something xmlns:foo="http://example.org/foo">
<baz:Something
xmlns:baz="http://example.org/baz"></baz:Something>
</foo:Something>
</bar:Something>
</foo:Something>
</bar:Something>
and it seems to me that according to
http://www.w3.org/TR/xml-c14n#SuperfluousNSDecl
the correct c14n form is the following (unnecessary namespace
declarations are removed):
<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
<foo:Something xmlns:foo="http://example.org/foo">
<bar:Something>
<foo:Something>
<baz:Something
xmlns:baz="http://example.org/baz"></baz:Something>
</foo:Something>
</bar:Something>
</foo:Something>
</bar:Something>
With best regards,
Aleksey Sanin
XML Security Library <http://www.aleksey.com/xmlsec>.
merlin wrote:
>Hi,
>
>Attached is a signature with 9 XPath-transformed examples
>run through c14, exc-c14n and exc-c14n with an inclusive
>namespace prefix list. The XPath transforms variously
>manipulate the namespace axis to demonstrate c14n behaviour
>in different situations. For example:
>
><foo:Root xmlns:bar="http://example.org/bar"
> xmlns:baz="http://example.org/baz"
> xmlns:foo="http://example.org/foo"
> xmlns="http://example.org/"
> xml:lang="en-ie">
> <bar:Something>
> <foo:Something>
> <bar:Something>
> <foo:Something>
> <baz:Something />
> </foo:Something>
> </bar:Something>
> </foo:Something>
> </bar:Something>
> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" ... />
></foo:Root
>
>The following XPath selects the bar:Something subtree, but
>only includes namespace nodes that are directly used by their
>parent element.
>
> ancestor-or-self::bar:Something and
> (self::text() or
> (namespace-uri() != "") or
> (string(self::node()) = namespace-uri(parent::node())))
>
>I believe that the canonical form is then:
>
><bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
> <foo:Something xmlns:foo="http://example.org/foo">
> <bar:Something xmlns:bar="http://example.org/bar">
> <foo:Something xmlns:foo="http://example.org/foo">
> <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
> </foo:Something>
> </bar:Something>
> </foo:Something>
> </bar:Something>
>
>And I believe that the exclusive canonical form is:
>
><bar:Something xmlns:bar="http://example.org/bar">
> <foo:Something xmlns:foo="http://example.org/foo">
> <bar:Something>
> <foo:Something>
> <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
> </foo:Something>
> </bar:Something>
> </foo:Something>
> </bar:Something>
>
>Merlin
>
>
Received on Friday, 31 May 2002 01:23:40 UTC