Author: ruchithf
Date: Wed Nov 14 07:07:01 2007
New Revision: 594914
URL: http://svn.apache.org/viewvc?rev=594914&view=rev
Log:
Applied patch in RAMPART-109. Thanks Nandana
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java?rev=594914&r1=594913&r2=594914&view=diff
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
Wed Nov 14 07:07:01 2007
@@ -216,10 +216,10 @@
encr.setSymmetricEncAlgorithm(algorithmSuite.getEncryption());
// SymmKey is already encrypted, no need to do it again
encr.setEncryptSymmKey(false);
- // Use key identifier in the KeyInfo in server side
- if (!rmd.isInitiator()) {
- encr.setUseKeyIdentifier(true);
-
encr.setKeyIdentifierType(WSConstants.ENCRYPTED_KEY_SHA1_IDENTIFIER);
+ if (!rmd.isInitiator() && tok instanceof EncryptedKeyToken) {
+ encr.setUseKeyIdentifier(true);
+
encr.setCustomReferenceValue(((EncryptedKeyToken)tok).getSHA1());
+
encr.setKeyIdentifierType(WSConstants.ENCRYPTED_KEY_SHA1_IDENTIFIER);
}
try {
@@ -233,9 +233,7 @@
}
}
- if (encrParts.size() > 0 ) {
- RampartUtil.appendChildToSecHeader(rmd, refList);
- }
+ RampartUtil.appendChildToSecHeader(rmd, refList);
if(dotDebug){
t1 = System.currentTimeMillis();
@@ -458,11 +456,15 @@
} else {
addSignatureConfirmation(rmd, sigParts);
}
- //Sign the message
- signatureValues.add(this.doSymmSignature(rmd, sigToken, sigTok,
sigParts));
-
- this.mainSigId =
RampartUtil.addWsuIdToElement((OMElement)this.getInsertionLocation());
+
+ if (sigParts.size() > 0 ) {
+ //Sign the message
+ signatureValues.add(this.doSymmSignature(rmd, sigToken, sigTok,
sigParts));
+
+ this.mainSigId =
RampartUtil.addWsuIdToElement((OMElement)this.getInsertionLocation());
+ }
+
if(rmd.isInitiator()) {
//Do endorsed signatures
Vector endSigVals = this.doEndorsedSignatures(rmd, endSuppTokMap);
@@ -562,8 +564,10 @@
encrDKTokenElem = dkEncr.getdktElement();
if(encrTokElem != null) {
RampartUtil.insertSiblingAfter(rmd, encrTokElem,
encrDKTokenElem);
- } else {
+ } else if (timestampElement != null){
RampartUtil.insertSiblingAfter(rmd,
this.timestampElement, encrDKTokenElem);
+ } else {
+ RampartUtil.insertSiblingBefore(rmd,
this.getInsertionLocation(), encrDKTokenElem);
}
refList = dkEncr.encryptForExternalRef(null, encrParts);
@@ -607,28 +611,18 @@
}
encr.prepare(doc, RampartUtil.getEncryptionCrypto(rpd
.getRampartConfig(), rmd.getCustomClassLoader()));
-
-
- if (encrParts.size() > 0) {
-
- //Encrypt, get hold of the ref list and add it
- refList = encr.encryptForExternalRef(null, encrParts);
-
- if(this.timestampElement != null){
-
this.setInsertionLocation(this.timestampElement);
- }else{
- this.setInsertionLocation(null);
- }
-
- if(encrTokElem != null) {
- RampartUtil.insertSiblingAfter(rmd,
- encrTokElem,
- refList);
- } else {
- RampartUtil.insertSiblingAfter(rmd,
- this.timestampElement,
- refList);
- }
+
+ //Encrypt, get hold of the ref list and add it
+ refList = encr.encryptForExternalRef(null, encrParts);
+
+ if(encrTokElem != null) {
+ RampartUtil.insertSiblingAfter(rmd,
+ encrTokElem,
+ refList);
+ } else {
+ RampartUtil.insertSiblingBeforeOrPrepend(rmd,
+ this.getInsertionLocation(),
+ refList);
}
} catch (WSSecurityException e) {
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=594914&r1=594913&r2=594914&view=diff
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
Wed Nov 14 07:07:01 2007
@@ -1026,27 +1026,45 @@
if(child != null){ // child is not null so insert sibling after
retElem = RampartUtil.insertSiblingAfter(rmd, child, elem);
}else{ //Prepend
-
- Element secHeaderElem = rmd.getSecHeader().getSecurityHeader();
- Node node = secHeaderElem.getOwnerDocument().importNode(
- elem, true);
- Element firstElem = (Element)secHeaderElem.getFirstChild();
-
- if(firstElem == null){
- retElem = (Element)secHeaderElem.appendChild(node);
- }else{
-
if(firstElem.getOwnerDocument().equals(elem.getOwnerDocument())) {
-
((OMElement)firstElem).insertSiblingBefore((OMElement)elem);
- retElem = elem;
- } else {
- Element newSib =
(Element)firstElem.getOwnerDocument().importNode(elem, true);
-
((OMElement)firstElem).insertSiblingBefore((OMElement)newSib);
- retElem = newSib;
- }
- }
+ retElem = prependSecHeader(rmd, elem);
}
return retElem;
+ }
+
+ public static Element insertSiblingBeforeOrPrepend(RampartMessageData rmd,
Element child, Element elem) {
+ Element retElem = null;
+ if(child != null && child.getPreviousSibling() != null){
+ retElem = RampartUtil.insertSiblingBefore(rmd, child, elem);
+ }else{ //Prepend
+ retElem = prependSecHeader(rmd, elem);
+ }
+
+ return retElem;
+ }
+
+ private static Element prependSecHeader(RampartMessageData rmd, Element
elem){
+ Element retElem = null;
+
+ Element secHeaderElem = rmd.getSecHeader().getSecurityHeader();
+ Node node = secHeaderElem.getOwnerDocument().importNode(
+ elem, true);
+ Element firstElem = (Element)secHeaderElem.getFirstChild();
+
+ if(firstElem == null){
+ retElem = (Element)secHeaderElem.appendChild(node);
+ }else{
+
if(firstElem.getOwnerDocument().equals(elem.getOwnerDocument())) {
+
((OMElement)firstElem).insertSiblingBefore((OMElement)elem);
+ retElem = elem;
+ } else {
+ Element newSib =
(Element)firstElem.getOwnerDocument().importNode(elem, true);
+
((OMElement)firstElem).insertSiblingBefore((OMElement)newSib);
+ retElem = newSib;
+ }
+ }
+
+ return retElem;
}
}