Author: coheigea
Date: Fri Feb  7 16:50:48 2014
New Revision: 1565720

URL: http://svn.apache.org/r1565720
Log:
Add support for setting the digest algorithm for derived signature

Modified:
    
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/ConfigurationConstants.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java
    
webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/DerivedKeyActionTest.java

Modified: 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/ConfigurationConstants.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/ConfigurationConstants.java?rev=1565720&r1=1565719&r2=1565720&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/ConfigurationConstants.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/ConfigurationConstants.java
 Fri Feb  7 16:50:48 2014
@@ -883,16 +883,12 @@ public class ConfigurationConstants {  
     /**
      * The length to use (in bytes) when deriving a key for Signature. If this 
is not specified,
      * it defaults to a value based on the signature algorithm.
-     * 
-     * Currently only used in the streaming code.
      */
     public static final String DERIVED_SIGNATURE_KEY_LENGTH = 
"derivedSignatureKeyLength";
     
     /**
      * The length to use (in bytes) when deriving a key for Encryption. If 
this is not specified,
      * it defaults to a value based on the encryption algorithm.
-     * 
-     * Currently only used in the streaming code.
      */
     public static final String DERIVED_ENCRYPTION_KEY_LENGTH = 
"derivedEncryptionKeyLength";
     

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java?rev=1565720&r1=1565719&r2=1565720&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
 Fri Feb  7 16:50:48 2014
@@ -66,9 +66,9 @@ public class SignatureDerivedAction impl
         if (signatureToken.getSignatureAlgorithm() != null) {
             
wsSign.setSignatureAlgorithm(signatureToken.getSignatureAlgorithm());
         }
-        //if (signatureToken.getDigestAlgorithm() != null) {
-        //    wsSign.setDigestAlgo(signatureToken.getDigestAlgorithm());
-        //}
+        if (signatureToken.getDigestAlgorithm() != null) {
+            wsSign.setDigestAlgorithm(signatureToken.getDigestAlgorithm());
+        }
         if (signatureToken.getC14nAlgorithm() != null) {
             wsSign.setSigCanonicalization(signatureToken.getC14nAlgorithm());
         }

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java?rev=1565720&r1=1565719&r2=1565720&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java
 Fri Feb  7 16:50:48 2014
@@ -344,7 +344,7 @@ public class WSSecDKSign extends WSSecDe
     }
     
     /**
-     * Set the digest algorithm to use. The default is 
Constants.ALGO_ID_DIGEST_SHA1.
+     * Set the digest algorithm to use. The default is WSConstants.SHA1.
      * @param algorithm the digest algorithm to use.
      */
     public void setDigestAlgorithm(String algorithm) {
@@ -393,5 +393,5 @@ public class WSSecDKSign extends WSSecDe
     public String getSigCanonicalization() {
         return canonAlgo;
     }
-
+    
 }

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java?rev=1565720&r1=1565719&r2=1565720&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java
 Fri Feb  7 16:50:48 2014
@@ -675,7 +675,7 @@ public class WSSecSignature extends WSSe
 
     /**
      * Set the string that defines which digest algorithm to use. 
-     * The default is Constants.ALGO_ID_DIGEST_SHA1.
+     * The default is WSConstants.SHA1.
      * 
      * @param digestAlgo the digestAlgo to set
      */

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/DerivedKeyActionTest.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/DerivedKeyActionTest.java?rev=1565720&r1=1565719&r2=1565720&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/DerivedKeyActionTest.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/DerivedKeyActionTest.java
 Fri Feb  7 16:50:48 2014
@@ -93,6 +93,38 @@ public class DerivedKeyActionTest extend
         
         verify(doc);
     }
+    
+    @org.junit.Test
+    public void testSignatureThumbprintSHA1StrongDigest() throws Exception {
+        final WSSConfig cfg = WSSConfig.getNewInstance();
+        final RequestData reqData = new RequestData();
+        reqData.setWssConfig(cfg);
+        reqData.setUsername("wss40");
+        
+        java.util.Map<String, Object> config = new java.util.TreeMap<String, 
Object>();
+        config.put(WSHandlerConstants.SIG_PROP_FILE, "wss40.properties");
+        config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
+        config.put(WSHandlerConstants.SIG_DIGEST_ALGO, WSConstants.SHA256);
+        config.put(WSHandlerConstants.SIG_KEY_ID, "Thumbprint");
+        reqData.setMsgContext(config);
+        
+        final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
+        CustomHandler handler = new CustomHandler();
+        HandlerAction action = new HandlerAction(WSConstants.DKT_SIGN);
+        handler.send(
+            doc, 
+            reqData, 
+            Collections.singletonList(action),
+            true
+        );
+        String outputString = 
+            XMLUtils.PrettyDocumentToString(doc);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug(outputString);
+        }
+        
+        verify(doc);
+    }
 
     @org.junit.Test
     public void testSignatureSKI() throws Exception {


Reply via email to