- From: Joseph Reagle <reagle@w3.org>
- Date: Fri, 14 Jun 2002 10:52:14 -0400
- To: merlin <merlin@baltimore.ie>
- Cc: "Takeshi Imamura" <IMAMU@jp.ibm.com>, xml-encryption@w3.org
On Thursday 13 June 2002 06:57 pm, merlin wrote: > >Also, by derefencing in the context of the owner document, is this > >how you get your exception of "#secret-1" (which was super-encrypted) to > >work? > > Not really. Dereferencing in the context of the owner document > is to express that the input may be from the same document as > the signature (same-document signature reference) or from a > different document (external signature reference). Exception > references, which have the appearance of same-document URIs, > should actually be evaluated in the context of this document, > not the signature document. So, although Except #foo may > look like it is excepting an element in the _signature_ > document with ID foo; it is actually excepting an element in > the _signed_ document with ID foo. Ok, this is then the same thing as the present text of the CR: When dereferencing dcrpt:Except URIs, the application MUST behave as if the root document node of the input node set is used to initialize the [XPointer] evaluation context, even if this node is not part of the node set > We don't repeatedly dereference exceptions into each decrypted > node set; we dereference them once into the input document > (because when the signature was generated, that was what > they were built for) and then we have a hack that #foo can > be dereferenced into a decrypted node set. This hack is given by your text: 4. Let the set Di+1 be all element nodes in any replacement node set o.d with the namespace URI &xenc; and local name EncryptedData, that are not identified by a barename ID reference from any exception URI in E. 5. Repeat steps 3 and 4 for i ? i+1 while Di+1 is non-empty; i.e., as long as new, unexceptional super-encrypted EncryptedData are identified. I understand. > Yes and no. The xmlns="" is to cope with the same problem > for which we added the xmlns="" text to the xmlenc spec; > we are serializing data that will be textually wrapped > and so we have to overcome the textual wrapping / default > namespace problem. Ok. > The other part is to overcome the c14n xml inheritance. > Consider: > > <Document xml:foo="bar"> > <SignedInfo Id="signed-info" ... /> > <Signature ... URI="#signed-info" ... xml-decrypt#XML ... /> > </Document> > > When I first sign this, c14n inherits the xml:foo attribute > into the SignedInfo element. Consider the following encrypted > form: > > <Document xml:foo="bar"> > <EncryptedData Id="signed-info" ... /> > <Signature ... URI="#signed-info" ... xml-decrypt#XML ... /> > </Document> > > Serialization of the SignedInfo element will not have > included the xml:foo attribute. When we decrypt this, > the resulting node set will not have the xml:foo > attribute in an ancestor; and, if we c14n the resulting > node set without the above augmentation text, things > will fail. I'm not sure I follow. Presuming we're using c14n and don't do any extra xml:foo processing, after decryption we'll have something just like we did originally as a result of your step 6. <Document xml:foo="bar"> <SignedInfo Id="signed-info" ... /> <Signature ... URI="#signed-info" ... xml-decrypt#XML ... /> </Document> Step 7 reparses this and provides it as a node-set. Then according to xmldsig, if the last transform provides a node-set, then c14n. The Signature should work, right? > Unfortunately my solution is broken because if the signer uses > exclusive c14n, then things break with this fix in place. I > think that we'll just have to specify this as a case that > will break if regular c14n is used and I can drop that xml > attribute text. I'd prefer we not use this text, and if we don't, I think it should work in either case, exc-c14n, or c14n *if* the ancestorial context doesn't change while the fragment was in its encrypted form, as it should be. > > 1.5 Limitations > > Super-encryption MAY cause problems if a super-encrypted > > EncryptedData uses same-document references, > > > >Such as URI="" or URI="#bar" [1]. You use this successfully in > > "#secret-1"? > > The actual EncryptedData elements don't use same-document > references. If an EncryptedData uses a same-document > RetrievalMethod or CipherReference and is superencrypted > then it probably can't be superdecrypted. Well, in the specification we should provide examples of all of these things to make it clear.
Received on Friday, 14 June 2002 10:52:55 UTC