Author: coheigea
Date: Mon Jan 16 12:12:23 2012
New Revision: 1231969

URL: http://svn.apache.org/viewvc?rev=1231969&view=rev
Log:
Only set the found Id on the context

Modified:
    
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java
    
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java

Modified: 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java?rev=1231969&r1=1231968&r2=1231969&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java
 (original)
+++ 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/processor/SignatureProcessor.java
 Mon Jan 16 12:12:23 2012
@@ -422,7 +422,7 @@ public class SignatureProcessor implemen
                 element = wsDocInfo.getTokenElement(uri);
             }
             if (element != null) {
-                
WSSecurityUtil.storeElementInContext(((DOMValidateContext)context), element);
+                
WSSecurityUtil.storeElementInContext(((DOMValidateContext)context), uri, 
element);
             }
         }
     }

Modified: 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java?rev=1231969&r1=1231968&r2=1231969&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java
 (original)
+++ 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/util/WSSecurityUtil.java
 Mon Jan 16 12:12:23 2012
@@ -1241,14 +1241,49 @@ public class WSSecurityUtil {
     
     /**
      * Store the element argument in the DOM Crypto Context if it has one of 
the standard
+     * "Id" attributes that matches the given uri
+     */
+    public static void storeElementInContext(
+        DOMCryptoContext context, 
+        String uri,
+        Element element
+    ) {
+        String id = uri;
+        if (uri.charAt(0) == '#') {
+            id = id.substring(1);
+        }
+        
+        if (element.hasAttributeNS(WSConstants.WSU_NS, "Id")
+            && id.equals(element.getAttributeNS(WSConstants.WSU_NS, "Id"))) {
+            context.setIdAttributeNS(element, WSConstants.WSU_NS, "Id");
+        }
+        if (element.hasAttributeNS(null, "Id")
+            && id.equals(element.getAttributeNS(null, "Id"))) {
+           context.setIdAttributeNS(element, null, "Id");
+        }
+        if (element.hasAttributeNS(null, "ID")
+            && id.equals(element.getAttributeNS(null, "ID"))) {
+            context.setIdAttributeNS(element, null, "ID");
+        }
+        if (element.hasAttributeNS(null, "AssertionID")
+            && id.equals(element.getAttributeNS(null, "AssertionID"))) {
+            context.setIdAttributeNS(element, null, "AssertionID");
+        }
+    }
+    
+    /**
+     * Store the element argument in the DOM Crypto Context if it has one of 
the standard
      * "Id" attributes.
      */
-    public static void storeElementInContext(DOMCryptoContext context, Element 
element) {
+    public static void storeElementInContext(
+        DOMCryptoContext context, 
+        Element element
+    ) {
         if (element.hasAttributeNS(WSConstants.WSU_NS, "Id")) {
             context.setIdAttributeNS(element, WSConstants.WSU_NS, "Id");
         }
         if (element.hasAttributeNS(null, "Id")) {
-           context.setIdAttributeNS(element, null, "Id");
+            context.setIdAttributeNS(element, null, "Id");
         }
         if (element.hasAttributeNS(null, "ID")) {
             context.setIdAttributeNS(element, null, "ID");


Reply via email to