Hello,

hmmm... I think, I can understand the usage of WSEncryptionPart... I thought, I can _only_ specify the elements to sign/encrypt by telling the WSEncryptionPart its name/namespace. Buf, if I understand you, it should be better done by setting a Node in it. If it's true, then the task is done and I will close it. (And have to change some code in my project. :-) )

Greetings,
Marcin.

     [ 
https://issues.apache.org/jira/browse/WSS-254?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12997340#comment-12997340
 ]

Colm O hEigeartaigh commented on WSS-254:
-----------------------------------------

Hi Marcin,

I don't view it as the job of WSEncryptionPart to evaluate XPath expressions to 
locate elements. It's the job of the calling code to do that, and populate the 
WSEncryptionPart list accordingly. The patch I applied was just a way of 
clearing a security hole, in that the user might specify an (ambiguous) 
localname/namespace, thinking that all matching elements would get processed.

For example, see the "getElement" method in this CXF class:

http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java?view=markup

It evaluates a list of Xpath expressions, and stores each found element in a 
WSEncryptionPart. This is eventually passed to WSS4J for signature/encryption 
etc.

Colm.

Encryption/signing of multiple message parts with same name not working
-----------------------------------------------------------------------

                 Key: WSS-254
                 URL: https://issues.apache.org/jira/browse/WSS-254
             Project: WSS4J
          Issue Type: Bug
          Components: WSS4J Core
    Affects Versions: 1.5.4, 1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.9, 1.5.10, 1.6
         Environment: all. (found out an a windows vista machine with java 1.6)
            Reporter: Marcin Markiewicz
            Assignee: Colm O hEigeartaigh
            Priority: Critical
             Fix For: 1.6

         Attachments: WSSecEncrypt.java, WSSecEncrypt.java, WSSecEncrypt.java, 
patch.txt


The current implementation of the class "WSSecEncypt" lookf in the document to encrypt 
for elements only by their name and namespace (this are the only informations provided by the class 
"WSEncryptionPart"). The search  find the first element with this name and lets encrypt 
it. If there are other elements with the same name we wish to encrypt it cannot be done. But it is 
needed if one uses lists of elements
Following example shows the issue:
<xml...>
<soapenv:Envelope>
    <soapenv:Header>
       <myNS:Header1>
          <!-- XML data-->
       </myNS:Header1>
       <myNS:Header2>
          <!-- XML data-->
          <myNS:attachment>
             <!-- some data we don't wish to encrypt -->
          <myNS:attachment>
       </myNS:Header2>
       ...
       <myNS:Attachments>
          <myNS:attachment>
             <!-- 1. binary data base64 encoded -->
          </myNS:attachment>
          <myNS:attachment>
             <!-- 2. binary data base64 encoded -->
          </myNS:attachment>
          <myNS:attachment>
             <!-- 3. binary data base64 encoded -->
          </myNS:attachment>
          ...
       </myNS:Attachments>
       ...
       <myNS:HeaderX>
          <!-- XML data-->
       </myNS:HeaderX>
    </soapenv:Header>
    <soapenv:Body>
       <!-- XML data-->
    </soapenv:Body>
</soapenv:Envelope>
if we use the WSEncyrpionPart this way:
WSEncryptionPart encryptionPart = new WSEncryptionPart("attachment", "myNS-URI", 
"Content");
then only the element "Envelope/Header/Header2/attachment" will be encryptet. 
Thus the one we don't want to encrypt, but the other ones will not be encrypted.
To solve this problem a XPath support in WSEncryptionPart and WSSecEncryption 
is to be implemented (and maybe more...)



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to