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);
}