You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by na...@apache.org on 2008/02/08 14:24:02 UTC

svn commit: r619871 - /webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java

Author: nandana
Date: Fri Feb  8 05:24:01 2008
New Revision: 619871

URL: http://svn.apache.org/viewvc?rev=619871&view=rev
Log:
Fixing issue https://issues.apache.org/jira/browse/RAMPART-138.

Modified:
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java?rev=619871&r1=619870&r2=619871&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java Fri Feb  8 05:24:01 2008
@@ -27,6 +27,7 @@
 import org.apache.rampart.RampartMessageData;
 import org.apache.rampart.policy.RampartPolicyData;
 import org.apache.rampart.util.RampartUtil;
+import org.apache.ws.secpolicy.SPConstants;
 import org.apache.ws.secpolicy.model.IssuedToken;
 import org.apache.ws.secpolicy.model.SecureConversationToken;
 import org.apache.ws.secpolicy.model.SupportingToken;
@@ -71,10 +72,12 @@
     
     protected String mainSigId = null;
     
-    protected ArrayList usernameTokenIdList = new ArrayList();
+    protected ArrayList encryptedTokensIdList = new ArrayList();
     
     protected Element timestampElement;
     
+    protected Element mainRefListElement;
+    
     
     /**
      * @param rmd
@@ -336,6 +339,10 @@
                                     (Element) endSuppTok.getToken());
                     this.setInsertionLocation(siblingElem);
                     
+                    if (suppTokens.isEncryptedToken()) {
+                        this.encryptedTokensIdList.add(endSuppTok.getId());
+                    }
+                    
                     //Add the extracted token
                     endSuppTokMap.put(token, endSuppTok);
                     
@@ -349,6 +356,10 @@
                             bstElem = RampartUtil.insertSiblingAfter(rmd, 
                                     this.getInsertionLocation(), bstElem);
                             this.setInsertionLocation(bstElem);
+                            
+                            if (suppTokens.isEncryptedToken()) {
+                                this.encryptedTokensIdList.add(sig.getBSTTokenId());
+                            }
                         }
                         endSuppTokMap.put(token, sig);
                         
@@ -361,7 +372,7 @@
                     Element elem = utBuilder.getUsernameTokenElement();
                     RampartUtil.insertSiblingAfter(rmd, this.getInsertionLocation(), elem);
                     
-                    usernameTokenIdList.add(utBuilder.getId());
+                    encryptedTokensIdList.add(utBuilder.getId());
                     
                     //Move the insert location to the next element
                     this.setInsertionLocation(elem);
@@ -536,16 +547,31 @@
                 dkSign.computeSignature();
 
                 //Add elements to header
-                this.setInsertionLocation(RampartUtil
+                
+                if (rpd.getProtectionOrder().equals(SPConstants.ENCRYPT_BEFORE_SIGNING) &&
+                        this.getInsertionLocation() == null ) {
+                    this.setInsertionLocation(RampartUtil
+                            
+                            .insertSiblingBefore(rmd, 
+                                    this.mainRefListElement,
+                                    dkSign.getdktElement()));
+
+                        this.setInsertionLocation(RampartUtil.insertSiblingAfter(
+                                rmd, 
+                                this.getInsertionLocation(), 
+                                dkSign.getSignatureElement()));                
+                } else {
+                    this.setInsertionLocation(RampartUtil
+                
                         .insertSiblingAfter(rmd, 
                                 this.getInsertionLocation(),
                                 dkSign.getdktElement()));
 
-                this.setInsertionLocation(RampartUtil.insertSiblingAfter(
-                        rmd, 
-                        this.getInsertionLocation(), 
-                        dkSign.getSignatureElement()));
-
+                    this.setInsertionLocation(RampartUtil.insertSiblingAfter(
+                            rmd, 
+                            this.getInsertionLocation(), 
+                            dkSign.getSignatureElement()));
+                }
 
                 return dkSign.getSignatureValue();
                 
@@ -617,14 +643,21 @@
                 //Do signature
                 sig.computeSignature();
 
-
-                this.setInsertionLocation(RampartUtil.insertSiblingAfter(
-                        rmd,
-                        this.getInsertionLocation(),
-                        sig.getSignatureElement()));
+                if (rpd.getProtectionOrder().equals(SPConstants.ENCRYPT_BEFORE_SIGNING) &&
+                        this.getInsertionLocation() == null) {
+                    this.setInsertionLocation(RampartUtil.insertSiblingBefore(
+                            rmd,
+                            this.mainRefListElement,
+                            sig.getSignatureElement()));                    
+                } else {
+                    this.setInsertionLocation(RampartUtil.insertSiblingAfter(
+                            rmd,
+                            this.getInsertionLocation(),
+                            sig.getSignatureElement()));     
+                }
 
                 return sig.getSignatureValue();
-
+                
             } catch (WSSecurityException e) {
                 throw new RampartException("errorInSignatureWithACustomToken", e);
             }