Author: coheigea
Date: Fri Nov 15 14:43:13 2013
New Revision: 1542278

URL: http://svn.apache.org/r1542278
Log:
Some changes to make sure that CXF knows whether an attachment was 
signed/encrypted

Modified:
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSDataRef.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSSecurityEngine.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedDataProcessor.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/ReferenceListProcessor.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSDataRef.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSDataRef.java?rev=1542278&r1=1542277&r2=1542278&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSDataRef.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSDataRef.java
 Fri Nov 15 14:43:13 2013
@@ -71,6 +71,11 @@ public class WSDataRef {
      * The protected DOM element
      */
     private Element protectedElement;
+    
+    /**
+     * Whether the protected Reference is an Attachment or not
+     */
+    private boolean attachment;
 
     /**
      * @return Id of the protected element
@@ -198,4 +203,12 @@ public class WSDataRef {
         return transformAlgorithms;
     }
 
+    public boolean isAttachment() {
+        return attachment;
+    }
+
+    public void setAttachment(boolean attachment) {
+        this.attachment = attachment;
+    }
+
 }

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSSecurityEngine.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSSecurityEngine.java?rev=1542278&r1=1542277&r2=1542278&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSSecurityEngine.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSSecurityEngine.java
 Fri Nov 15 14:43:13 2013
@@ -435,7 +435,8 @@ public class WSSecurityEngine {
             // of the current node is null. In that case, go on to the 
previously stored next
             // sibling
             //
-            if (node.getNextSibling() == null && nextSibling != null) {
+            if (node.getNextSibling() == null && nextSibling != null 
+                && nextSibling.getParentNode() != null) {
                 node = nextSibling;
             } else {
                 node = node.getNextSibling();

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedDataProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedDataProcessor.java?rev=1542278&r1=1542277&r2=1542278&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedDataProcessor.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedDataProcessor.java
 Fri Nov 15 14:43:13 2013
@@ -68,24 +68,6 @@ public class EncryptedDataProcessor impl
 
         final String encryptedDataId = elem.getAttributeNS(null, "Id");
 
-        if (encryptedDataId != null) {
-            List<WSSecurityEngineResult> decryptionResults = 
wsDocInfo.getResultsByTag(WSConstants.ENCR);
-            for (int i = 0; i < decryptionResults.size(); i++) {
-                WSSecurityEngineResult wsSecurityEngineResult = 
decryptionResults.get(i);
-                @SuppressWarnings("unchecked")
-                List<WSDataRef> dataRefUris = 
(List<WSDataRef>)wsSecurityEngineResult.get(WSSecurityEngineResult.TAG_DATA_REF_URIS);
-                if (dataRefUris == null) {
-                    continue;
-                }
-                for (int j = 0; j < dataRefUris.size(); j++) {
-                    WSDataRef wsDataRef = dataRefUris.get(j);
-                    if (encryptedDataId.equals(wsDataRef.getWsuId())) {
-                        return new ArrayList<WSSecurityEngineResult>();
-                    }
-                }
-            }
-        }
-
         Element kiElem =
             WSSecurityUtil.getDirectChildElement(elem, "KeyInfo", 
WSConstants.SIG_NS);
         // KeyInfo cannot be null

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/ReferenceListProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/ReferenceListProcessor.java?rev=1542278&r1=1542277&r2=1542278&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/ReferenceListProcessor.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/ReferenceListProcessor.java
 Fri Nov 15 14:43:13 2013
@@ -341,6 +341,8 @@ public class ReferenceListProcessor impl
                 if (!uri.startsWith("cid:")) {
                     throw new 
WSSecurityException(WSSecurityException.ErrorCode.FAILED_CHECK);
                 }
+                dataRef.setWsuId(uri);
+                dataRef.setAttachment(true);
 
                 CallbackHandler attachmentCallbackHandler = 
requestData.getAttachmentCallbackHandler();
                 if (attachmentCallbackHandler == null) {
@@ -402,6 +404,9 @@ public class ReferenceListProcessor impl
             }
 
             dataRef.setContent(true);
+            // Remove this EncryptedData from the security header to avoid 
processing it again
+            encData.getParentNode().removeChild(encData);
+            
             return dataRef;
         }
 

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java?rev=1542278&r1=1542277&r2=1542278&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java
 Fri Nov 15 14:43:13 2013
@@ -537,6 +537,7 @@ public class SignatureProcessor implemen
             if (!"".equals(uri)) {
                 Element se = dereferenceSTR(doc, siRef, requestData, 
wsDocInfo);
                 // If an STR Transform is not used then just find the cached 
element
+                boolean attachment = false;
                 if (se == null) {
                     Data dereferencedData = siRef.getDereferencedData();
                     if (dereferencedData instanceof NodeSetData) {
@@ -552,6 +553,7 @@ public class SignatureProcessor implemen
                         }
                     } else if (dereferencedData instanceof OctetStreamData) {
                         se = 
doc.createElementNS("http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1";, 
"attachment");
+                        attachment = true;
                     }
                 }
                 if (se == null) {
@@ -563,6 +565,7 @@ public class SignatureProcessor implemen
                 ref.setProtectedElement(se);
                 
ref.setAlgorithm(signedInfo.getSignatureMethod().getAlgorithm());
                 ref.setDigestAlgorithm(siRef.getDigestMethod().getAlgorithm());
+                ref.setAttachment(attachment);
                 
                 // Set the Transform algorithms as well
                 @SuppressWarnings("unchecked")


Reply via email to