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 {