Author: ruchithf Date: Fri Apr 1 06:52:26 2011 New Revision: 1087600 URL: http://svn.apache.org/viewvc?rev=1087600&view=rev Log: Adding support for digest methods != SHA1. Enabled one policy(scenario 3) with Basic256 algo suit (Also set basic256Supported in RampartTest so builds without unlimitted strength key policy won't fail. When wss4j version is updated we can fix derived key signatures to set the correct digest algo
Modified: axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/policy/3.xml axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/services-3.xml axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/SPConstants.java axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/AlgorithmSuite.java Modified: axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java?rev=1087600&r1=1087599&r2=1087600&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/AsymmetricBindingBuilder.java Fri Apr 1 06:52:26 2011 @@ -624,6 +624,7 @@ public class AsymmetricBindingBuilder ex } try { + supportingSig.setDigestAlgo(rmd.getPolicyData().getAlgorithmSuite().getDigest()); supportingSig.addReferencesToSign(supportingSigParts, rmd.getSecHeader()); supportingSig.computeSignature(); @@ -728,6 +729,7 @@ public class AsymmetricBindingBuilder ex } try { + sig.setDigestAlgo(rpd.getAlgorithmSuite().getDigest()); sig.addReferencesToSign(sigParts, rmd.getSecHeader()); sig.computeSignature(); Modified: axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java?rev=1087600&r1=1087599&r2=1087600&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java Fri Apr 1 06:52:26 2011 @@ -30,6 +30,7 @@ import org.apache.rampart.policy.Support import org.apache.rampart.util.RampartUtil; import org.apache.ws.secpolicy.Constants; import org.apache.ws.secpolicy.SPConstants; +import org.apache.ws.secpolicy.model.AlgorithmSuite; import org.apache.ws.secpolicy.model.IssuedToken; import org.apache.ws.secpolicy.model.SecureConversationToken; import org.apache.ws.secpolicy.model.SupportingToken; @@ -331,8 +332,10 @@ public abstract class BindingBuilder { } sig.setUserInfo(user, password); - sig.setSignatureAlgorithm(rpd.getAlgorithmSuite().getAsymmetricSignature()); - sig.setSigCanonicalization(rpd.getAlgorithmSuite().getInclusiveC14n()); + AlgorithmSuite algorithmSuite = rpd.getAlgorithmSuite(); + sig.setSignatureAlgorithm(algorithmSuite.getAsymmetricSignature()); + sig.setSigCanonicalization(algorithmSuite.getInclusiveC14n()); + sig.setDigestAlgo(algorithmSuite.getDigest()); try { sig.prepare(rmd.getDocument(), RampartUtil.getSignatureCrypto(rpd @@ -542,7 +545,8 @@ public abstract class BindingBuilder { RampartPolicyData rpd = rmd.getPolicyData(); - if(policyToken.isDerivedKeys()) { + AlgorithmSuite algorithmSuite = rpd.getAlgorithmSuite(); + if(policyToken.isDerivedKeys()) { try { WSSecDKSign dkSign = new WSSecDKSign(); @@ -588,8 +592,9 @@ public abstract class BindingBuilder { } //Set the algo info - dkSign.setSignatureAlgorithm(rpd.getAlgorithmSuite().getSymmetricSignature()); - dkSign.setDerivedKeyLength(rpd.getAlgorithmSuite().getSignatureDerivedKeyLength()/8); + dkSign.setSignatureAlgorithm(algorithmSuite.getSymmetricSignature()); + dkSign.setDerivedKeyLength(algorithmSuite.getSignatureDerivedKeyLength()/8); +// dkSign.setDigestAlgorithm(algorithmSuite.getDigest()); //uncomment when wss4j version is updated if(tok instanceof EncryptedKeyToken) { //Set the value type of the reference dkSign.setCustomValueType(WSConstants.SOAPMESSAGE_NS11 + "#" @@ -702,8 +707,9 @@ public abstract class BindingBuilder { sig.setCustomTokenId(sigTokId); sig.setSecretKey(tok.getSecret()); - sig.setSignatureAlgorithm(rpd.getAlgorithmSuite().getAsymmetricSignature()); - sig.setSignatureAlgorithm(rpd.getAlgorithmSuite().getSymmetricSignature()); + sig.setSignatureAlgorithm(algorithmSuite.getAsymmetricSignature()); + sig.setSignatureAlgorithm(algorithmSuite.getSymmetricSignature()); + sig.setDigestAlgo(algorithmSuite.getDigest()); sig.prepare(rmd.getDocument(), RampartUtil.getSignatureCrypto(rpd .getRampartConfig(), rmd.getCustomClassLoader()), rmd.getSecHeader()); Modified: axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java?rev=1087600&r1=1087599&r2=1087600&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java Fri Apr 1 06:52:26 2011 @@ -76,7 +76,7 @@ public class RampartTest extends TestCas ServiceClient serviceClient = getServiceClientInstance(); //TODO : figure this out !! - boolean basic256Supported = true; + boolean basic256Supported = false; if(basic256Supported) { System.out.println("\nWARNING: We are using key sizes from JCE " + Modified: axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/policy/3.xml URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/policy/3.xml?rev=1087600&r1=1087599&r2=1087600&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/policy/3.xml (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/policy/3.xml Fri Apr 1 06:52:26 2011 @@ -23,7 +23,7 @@ </sp:RecipientToken> <sp:AlgorithmSuite> <wsp:Policy> - <sp:Basic128/> + <sp:Basic256Sha256/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> Modified: axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/services-3.xml URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/services-3.xml?rev=1087600&r1=1087599&r2=1087600&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/services-3.xml (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-integration/src/test/resources/rampart/services-3.xml Fri Apr 1 06:52:26 2011 @@ -40,7 +40,7 @@ </sp:RecipientToken> <sp:AlgorithmSuite> <wsp:Policy> - <sp:Basic128/> + <sp:Basic256Sha256/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> Modified: axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/SPConstants.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/SPConstants.java?rev=1087600&r1=1087599&r2=1087600&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/SPConstants.java (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/SPConstants.java Fri Apr 1 06:52:26 2011 @@ -240,6 +240,12 @@ public class SPConstants { public final static String HMAC_SHA1 = "http://www.w3.org/2000/09/xmldsig#hmac-sha1"; public final static String RSA_SHA1 = "http://www.w3.org/2000/09/xmldsig#rsa-sha1"; + + public final static String RSA_SHA256 = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"; + + public final static String RSA_SHA384 = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"; + + public final static String RSA_SHA512 = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"; public final static String SHA1 = "http://www.w3.org/2000/09/xmldsig#sha1"; Modified: axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/AlgorithmSuite.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/AlgorithmSuite.java?rev=1087600&r1=1087599&r2=1087600&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/AlgorithmSuite.java (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/AlgorithmSuite.java Fri Apr 1 06:52:26 2011 @@ -289,6 +289,11 @@ public class AlgorithmSuite extends Abst * @return Returns the asymmetricSignature. */ public String getAsymmetricSignature() { + if(this.digest == SPConstants.SHA256) { + return SPConstants.RSA_SHA256; + } else if(this.digest == SPConstants.SHA512) { + return SPConstants.RSA_SHA512; + } return asymmetricSignature; }