Author: coheigea
Date: Thu Aug  1 12:15:34 2013
New Revision: 1509197

URL: http://svn.apache.org/r1509197
Log:
Added support for streaming cert constraint validation

Modified:
    
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/SecurityConstants.java
    
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JStaxInterceptor.java
    
cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/x509/StaxX509TokenTest.java

Modified: 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/SecurityConstants.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/SecurityConstants.java?rev=1509197&r1=1509196&r2=1509197&view=diff
==============================================================================
--- 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/SecurityConstants.java
 (original)
+++ 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/SecurityConstants.java
 Thu Aug  1 12:15:34 2013
@@ -283,8 +283,7 @@ public final class SecurityConstants {
     /**
      * A comma separated String of regular expressions which will be applied 
to the subject DN of 
      * the certificate used for signature validation, after trust verification 
of the certificate 
-     * chain associated with the  certificate. These constraints are not used 
when the certificate 
-     * is contained in the keystore (direct trust).
+     * chain associated with the  certificate.
      */
     public static final String SUBJECT_CERT_CONSTRAINTS = 
"ws-security.subject.cert.constraints";
     

Modified: 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JStaxInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JStaxInterceptor.java?rev=1509197&r1=1509196&r2=1509197&view=diff
==============================================================================
--- 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JStaxInterceptor.java
 (original)
+++ 
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JStaxInterceptor.java
 Thu Aug  1 12:15:34 2013
@@ -22,13 +22,17 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
 import java.util.logging.Logger;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import javax.security.auth.callback.Callback;
 import javax.security.auth.callback.CallbackHandler;
@@ -140,7 +144,7 @@ public abstract class AbstractWSS4JStaxI
             
(String)msg.getContextualProperty(SecurityConstants.SUBJECT_CERT_CONSTRAINTS);
         if (certConstraints != null) {
             if (securityProperties != null) {
-                // TODO
+                
securityProperties.setSubjectCertConstraints(convertCertConstraints(certConstraints));
             } else {
                 
properties.put(ConfigurationConstants.SIG_SUBJECT_CERT_CONSTRAINTS, 
certConstraints);
             }
@@ -174,6 +178,24 @@ public abstract class AbstractWSS4JStaxI
         }
     }
     
+    private  Collection<Pattern> convertCertConstraints(String 
certConstraints) {
+        String[] certConstraintsList = certConstraints.split(",");
+        if (certConstraintsList != null) {
+            Collection<Pattern> subjectCertConstraints = 
+                new ArrayList<Pattern>(certConstraintsList.length);
+            for (String certConstraint : certConstraintsList) {
+                try {
+                    
subjectCertConstraints.add(Pattern.compile(certConstraint.trim()));
+                } catch (PatternSyntaxException ex) {
+                    LOG.log(Level.SEVERE, ex.getMessage(), ex);
+                }
+            }
+            return subjectCertConstraints;
+        }
+        
+        return null;
+    }
+    
     protected void configureCallbackHandler(SoapMessage soapMessage) throws 
WSSecurityException {
         Object o = 
soapMessage.getContextualProperty(SecurityConstants.CALLBACK_HANDLER);
         if (o instanceof String) {

Modified: 
cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/x509/StaxX509TokenTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/x509/StaxX509TokenTest.java?rev=1509197&r1=1509196&r2=1509197&view=diff
==============================================================================
--- 
cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/x509/StaxX509TokenTest.java
 (original)
+++ 
cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/x509/StaxX509TokenTest.java
 Thu Aug  1 12:15:34 2013
@@ -752,9 +752,7 @@ public class StaxX509TokenTest extends A
         bus.shutdown(true);
     }
     
-    // TODO WSS-438
     @org.junit.Test
-    @org.junit.Ignore
     public void testTransportSupportingSignedCertConstraints() throws 
Exception {
 
         SpringBusFactory bf = new SpringBusFactory();


Reply via email to