- From: Joseph Reagle <reagle@w3.org>
- Date: Tue, 16 Jul 2002 12:22:15 -0400
- To: merlin <merlin@baltimore.ie>
- Cc: "Takeshi Imamura" <IMAMU@jp.ibm.com>, xml-encryption@w3.org
On Tuesday 16 July 2002 11:34 am, merlin wrote: > You're recalling my earlier confusion which turned out to be misplaced. > The c14n is performed internally within the decryption transform; it is > not the signature canonicalization; and it is fixed as standard c14n. > This is the final c14n-with-replacement/parse step done by the > decryptXML() function. So we have no choice but to solve the problem, and > it doesn't have an impact on subsequent signature c14n/exc-c14n > processing. Let me walk through it in detail... <Document xml:lang="ie"> <Foo id="foo-1" /> <Signature xmlns="&dsig;"> ... <Reference URI="#foo-1"> ... <Transform Algorithm="&decrypt;XML" /> <Transform Algorithm="&exc-c14n;" /> ... </Signature> </Document> Since I'm using exc-c14n, the signed form of <Foo> does not have the xml:lang attribute. Later, someone encrypts the <Foo> element. <Document xml:lang="ie"> <EncryptedData Id="foo-1" [[<Foo Id="foo-1" />]] /> <Signature xmlns="&dsig;"> ... <Reference URI="#foo-1"> ... <Transform Algorithm="&decrypt;XML" /> <Transform Algorithm="&exc-c14n;" /> ... </Signature> </Document> When the receiver goes to check the signature, the decryptor (using your "patched" text) adds the xml:lang declaration in the decrypted octet sequence: <Document xml:lang="ie"> <Foo Id="foo-1" xml:lang="ie" /> <Signature xmlns="&dsig;"> ... <Reference URI="#foo-1"> ... <Transform Algorithm="&decrypt;XML" /> ... <Transform Algorithm="&exc-c14n;" /> </Signature> </Document> This document is then parsed and exclusively canonicalized and it looks much like it does above. The Signature over Foo fails because it contains a xml:lang it did not originally contain. Maybe I'm in error because of my confusion over the fact that these attributes are only added when "an element from N whose parent element is not in N". <Foo> is replacing the <EncryptedData> element in N, and its parent (<Document>) is not in N, so by that, I think I am supposed to add them...
Received on Tuesday, 16 July 2002 12:22:20 UTC