Author: coheigea
Date: Mon Dec  9 15:52:33 2013
New Revision: 1549599

URL: http://svn.apache.org/r1549599
Log:
Try to find a secure part by Id first. Required for a use-case of 
signing/encrypting two BinarySecurityTokens (Kerberos SignedSupportingToken + 
Asymmetric ProtectTokens)

Modified:
    
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/EncryptOutputProcessor.java
    
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureOutputProcessor.java

Modified: 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/EncryptOutputProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/EncryptOutputProcessor.java?rev=1549599&r1=1549598&r2=1549599&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/EncryptOutputProcessor.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/EncryptOutputProcessor.java
 Mon Dec  9 15:52:33 2013
@@ -128,6 +128,43 @@ public class EncryptOutputProcessor exte
 
         outputProcessorChain.processEvent(xmlSecEvent);
     }
+    
+    @Override
+    protected SecurePart securePartMatches(XMLSecStartElement 
xmlSecStartElement, Map<Object, SecurePart> secureParts) {
+    
+        if (xmlSecStartElement.getOnElementDeclaredAttributes().size() >= 0) {
+            Attribute attribute = 
xmlSecStartElement.getAttributeByName(WSSConstants.ATT_wsu_Id);
+            if (attribute != null) {
+                SecurePart securePart = secureParts.get(attribute.getValue());
+                if (securePart != null) {
+                    return securePart;
+                }
+            }
+            attribute = 
xmlSecStartElement.getAttributeByName(WSSConstants.ATT_NULL_Id);
+            if (attribute != null) {
+                SecurePart securePart = secureParts.get(attribute.getValue());
+                if (securePart != null) {
+                    return securePart;
+                }
+            }
+            attribute = 
xmlSecStartElement.getAttributeByName(WSSConstants.ATT_NULL_ID);
+            if (attribute != null) {
+                SecurePart securePart = secureParts.get(attribute.getValue());
+                if (securePart != null) {
+                    return securePart;
+                }
+            }
+            attribute = 
xmlSecStartElement.getAttributeByName(WSSConstants.ATT_NULL_AssertionID);
+            if (attribute != null) {
+                SecurePart securePart = secureParts.get(attribute.getValue());
+                if (securePart != null) {
+                    return securePart;
+                }
+            }
+        }
+        
+        return secureParts.get(xmlSecStartElement.getName());
+    }
 
     @Override
     public void doFinalInternal(OutputProcessorChain outputProcessorChain) 
throws XMLSecurityException {

Modified: 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureOutputProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureOutputProcessor.java?rev=1549599&r1=1549598&r2=1549599&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureOutputProcessor.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/WSSSignatureOutputProcessor.java
 Mon Dec  9 15:52:33 2013
@@ -250,41 +250,39 @@ public class WSSSignatureOutputProcessor
 
     @Override
     protected SecurePart securePartMatches(XMLSecStartElement 
xmlSecStartElement, Map<Object, SecurePart> secureParts) {
-        SecurePart securePart = secureParts.get(xmlSecStartElement.getName());
-        if (securePart == null) {
-            if (xmlSecStartElement.getOnElementDeclaredAttributes().size() == 
0) {
-                return null;
-            }
+    
+        if (xmlSecStartElement.getOnElementDeclaredAttributes().size() >= 0) {
             Attribute attribute = 
xmlSecStartElement.getAttributeByName(WSSConstants.ATT_wsu_Id);
             if (attribute != null) {
-                securePart = secureParts.get(attribute.getValue());
+                SecurePart securePart = secureParts.get(attribute.getValue());
                 if (securePart != null) {
                     return securePart;
                 }
             }
             attribute = 
xmlSecStartElement.getAttributeByName(WSSConstants.ATT_NULL_Id);
             if (attribute != null) {
-                securePart = secureParts.get(attribute.getValue());
+                SecurePart securePart = secureParts.get(attribute.getValue());
                 if (securePart != null) {
                     return securePart;
                 }
             }
             attribute = 
xmlSecStartElement.getAttributeByName(WSSConstants.ATT_NULL_ID);
             if (attribute != null) {
-                securePart = secureParts.get(attribute.getValue());
+                SecurePart securePart = secureParts.get(attribute.getValue());
                 if (securePart != null) {
                     return securePart;
                 }
             }
             attribute = 
xmlSecStartElement.getAttributeByName(WSSConstants.ATT_NULL_AssertionID);
             if (attribute != null) {
-                securePart = secureParts.get(attribute.getValue());
+                SecurePart securePart = secureParts.get(attribute.getValue());
                 if (securePart != null) {
                     return securePart;
                 }
             }
         }
-        return securePart;
+        
+        return secureParts.get(xmlSecStartElement.getName());
     }
 
     class InternalWSSSignatureOutputProcessor extends 
InternalSignatureOutputProcessor {


Reply via email to