Modified: axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/SAMLUtils.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/SAMLUtils.java?rev=1295489&r1=1295488&r2=1295489&view=diff ============================================================================== --- axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/SAMLUtils.java (original) +++ axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/SAMLUtils.java Thu Mar 1 09:54:05 2012 @@ -114,23 +114,11 @@ public class SAMLUtils { String issuerKeyAlias, String issuerKeyPassword) throws TrustException { - X509Certificate[] issuerCerts; - try { - issuerCerts = crypto - .getCertificates(issuerKeyAlias); - } catch (WSSecurityException e) { - log.debug("Unable to get issuer certificate for issuer alias " + issuerKeyAlias, e); - throw new TrustException("issuerCertificateNotFound", new Object[]{issuerKeyAlias}, e); - } - - if (issuerCerts == null || issuerCerts.length == 0) { - log.debug("Unable to get issuer certificate for issuer alias " + issuerKeyAlias); - throw new TrustException("issuerCertificateNotFound", new Object[]{issuerKeyAlias}); - } + X509Certificate issuerCerts = CommonUtil.getCertificateByAlias(crypto, issuerKeyAlias); String signatureAlgorithm = XMLSignature.ALGO_ID_SIGNATURE_RSA; - PublicKey issuerPublicKey = issuerCerts[0].getPublicKey(); + PublicKey issuerPublicKey = issuerCerts.getPublicKey(); String publicKeyAlgorithm = issuerPublicKey.getAlgorithm(); if (publicKeyAlgorithm.equalsIgnoreCase("DSA")) { @@ -153,7 +141,7 @@ public class SAMLUtils { signature.setSigningCredential(signingCredential); signature.setSignatureAlgorithm(signatureAlgorithm); - X509Data x509Data = createX509Data(issuerCerts[0]); + X509Data x509Data = createX509Data(issuerCerts); KeyInfo keyInfo = createKeyInfo(x509Data); signature.setKeyInfo(keyInfo); @@ -610,6 +598,7 @@ public class SAMLUtils { + // TODO remove keySize parameter static WSSecEncryptedKey getSymmetricKeyBasedKeyInfoContent(Document doc, byte[] ephemeralKey, X509Certificate serviceCert, @@ -626,8 +615,7 @@ public class SAMLUtils { // SEt the encryption cert encryptedKeyBuilder.setUseThisCert(serviceCert); - // set keysize - encryptedKeyBuilder.setKeySize(keySize); + // TODO setting keysize is removed with wss4j 1.6 migration - do we actually need this ? encryptedKeyBuilder.setEphemeralKey(ephemeralKey);
Added: axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/impl/SAML2TokenIssuerTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/impl/SAML2TokenIssuerTest.java?rev=1295489&view=auto ============================================================================== --- axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/impl/SAML2TokenIssuerTest.java (added) +++ axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/impl/SAML2TokenIssuerTest.java Thu Mar 1 09:54:05 2012 @@ -0,0 +1,73 @@ +/* + * Copyright The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.rahas.impl; + +import junit.framework.Assert; +import junit.framework.TestCase; +import org.apache.axis2.context.MessageContext; +import org.apache.rahas.RahasData; +import org.apache.rahas.test.util.TestUtil; +import org.apache.ws.security.components.crypto.Crypto; +import org.joda.time.DateTime; +import org.w3c.dom.Document; + +import java.io.File; + +/** + * Test class for SAML2 token issuer. + */ +public class SAML2TokenIssuerTest extends TestCase { + + public void testIssueToken() { + // TODO + Assert.assertTrue(true); + } + + public void testCreateSubjectWithHolderOfKeySC() throws Exception { + + // TODO Its hard to do unit testing on TokenIssuer + // Cos we need to construct complete message contexts with all + // relevant data. This is more like an integration test rather than a + // unit test. Therefore we need to refactor code to smaller testable units (methods) + // and then only write tests. + + /*SAML2TokenIssuer saml2TokenIssuer = new SAML2TokenIssuer(); + + MessageContext messageContext = new MessageContext(); + + File file = new File("./sts-aar-resources/saml-issuer-config.xml"); + Assert.assertTrue(file.exists()); + + SAMLTokenIssuerConfig samlTokenIssuerConfig = new SAMLTokenIssuerConfig(file.getAbsolutePath()); + Crypto crypto = TestUtil.getCrypto(); + DateTime creationDate = new DateTime(); + DateTime expirationDate = new DateTime(2050, 1, 1, 0, 0, 0, 0); + RahasData rahasData = new RahasData(messageContext);*/ + + /*Document document; + Crypto crypto; + DateTime creationDate; + DateTime expirationDate; + RahasData rahasData;*/ + + + + + + //saml2TokenIssuer.createSubjectWithHolderOfKeySC() + } +} Modified: axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/SAMLUtilsTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/SAMLUtilsTest.java?rev=1295489&r1=1295488&r2=1295489&view=diff ============================================================================== --- axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/SAMLUtilsTest.java (original) +++ axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/SAMLUtilsTest.java Thu Mar 1 09:54:05 2012 @@ -27,6 +27,8 @@ import org.apache.rahas.Rahas; import org.apache.rahas.TrustException; import org.apache.rahas.TrustUtil; import org.apache.rahas.impl.AbstractIssuerConfig; +import org.apache.rahas.test.util.TestUtil; +import org.apache.ws.security.WSSecurityException; import org.apache.ws.security.components.crypto.Crypto; import org.apache.ws.security.components.crypto.CryptoFactory; import org.apache.ws.security.message.WSSecEncryptedKey; @@ -131,7 +133,7 @@ public class SAMLUtilsTest extends TestC Assertion assertion = getAssertion(); - SAMLUtils.signAssertion(assertion,getCrypto(), "apache", "password"); + SAMLUtils.signAssertion(assertion, TestUtil.getCrypto(), "apache", "password"); //marshallerFactory.getMarshaller(assertion).marshall(assertion); @@ -272,13 +274,12 @@ public class SAMLUtilsTest extends TestC Document doc = ((Element) env).getOwnerDocument(); int keySize = 256; - int keyComputation = AbstractIssuerConfig.KeyComputation.KEY_COMP_PROVIDE_ENT; byte [] ephemeralKey = generateEphemeralKey(256); WSSecEncryptedKey encryptedKey = SAMLUtils.getSymmetricKeyBasedKeyInfoContent(doc, - ephemeralKey, getTestCertificate(), keySize, getCrypto()); + ephemeralKey, getTestCertificate(), keySize, TestUtil.getCrypto()); Assert.assertNotNull(encryptedKey.getEncryptedKeyElement()); printElement(encryptedKey.getEncryptedKeyElement()); @@ -297,27 +298,7 @@ public class SAMLUtilsTest extends TestC } } - private static Crypto getCrypto() throws IOException { - File file = new File("src/test/resources/crypto.config"); - Assert.assertTrue(file.exists()); - - Properties properties = new Properties(); - try { - properties.load(new FileInputStream(file)); - } catch (IOException e) { - log.error("Unable to open crypto configuration file"); - throw e; - } - - Crypto crypto = CryptoFactory.getInstance(properties); - - X509Certificate[] certificates = crypto.getCertificates("apache"); - Assert.assertEquals(certificates.length, 1); - - return crypto; - - } private static void printElement(Element element) throws TransformerException { @@ -327,15 +308,11 @@ public class SAMLUtilsTest extends TestC } } - private static X509Certificate getTestCertificate() throws IOException { - - Crypto crypto = getCrypto(); - - X509Certificate[] certificates = crypto.getCertificates("apache"); - Assert.assertEquals(certificates.length, 1); + private static X509Certificate getTestCertificate() throws IOException, WSSecurityException, TrustException { - return certificates[0]; + Crypto crypto = TestUtil.getCrypto(); + return CommonUtil.getCertificateByAlias(crypto, "apache"); } private static String getXMLString(Element element) throws TransformerException { Added: axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/test/util/TestUtil.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/test/util/TestUtil.java?rev=1295489&view=auto ============================================================================== --- axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/test/util/TestUtil.java (added) +++ axis/axis2/java/rampart/branches/1_6/modules/rampart-trust/src/test/java/org/apache/rahas/test/util/TestUtil.java Thu Mar 1 09:54:05 2012 @@ -0,0 +1,61 @@ +/* + * Copyright The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.rahas.test.util; + +import junit.framework.Assert; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.rahas.TrustException; +import org.apache.rahas.impl.util.CommonUtil; +import org.apache.ws.security.WSSecurityException; +import org.apache.ws.security.components.crypto.Crypto; +import org.apache.ws.security.components.crypto.CryptoFactory; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.security.cert.X509Certificate; +import java.util.Properties; + +/** + * Utility class for tests. + */ +public class TestUtil { + + private static final Log log = LogFactory.getLog(TestUtil.class); + + public static Crypto getCrypto() throws IOException, WSSecurityException, TrustException { + + File file = new File("src/test/resources/crypto.config"); + Assert.assertTrue(file.exists()); + + Properties properties = new Properties(); + try { + properties.load(new FileInputStream(file)); + } catch (IOException e) { + log.error("Unable to open crypto configuration file"); + throw e; + } + + Crypto crypto = CryptoFactory.getInstance(properties); + + X509Certificate[] certificates = CommonUtil.getCertificatesByAlias(crypto, "apache"); + Assert.assertEquals(certificates.length, 1); + + return crypto; + + } +} Modified: axis/axis2/java/rampart/branches/1_6/pom.xml URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/branches/1_6/pom.xml?rev=1295489&r1=1295488&r2=1295489&view=diff ============================================================================== --- axis/axis2/java/rampart/branches/1_6/pom.xml (original) +++ axis/axis2/java/rampart/branches/1_6/pom.xml Thu Mar 1 09:54:05 2012 @@ -226,10 +226,6 @@ <artifactId>xalan</artifactId> <groupId>xalan</groupId> </exclusion> - <!--exclusion> - <artifactId>org.opensaml</artifactId> - <groupId>opensaml1</groupId> - </exclusion--> </exclusions> </dependency> <dependency> @@ -253,22 +249,6 @@ </exclusion> </exclusions> </dependency> - <dependency> - <groupId>org.opensaml</groupId> - <artifactId>opensaml1</artifactId> - <version>1.1</version> - <exclusions> - <!-- Don't allow OpenSAML to impose a particular logging implementation --> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - </exclusion> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - </exclusion> - </exclusions> - </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> @@ -415,7 +395,7 @@ <axis2.version>1.6.2-SNAPSHOT</axis2.version> <axiom.version>1.2.13-SNAPSHOT</axiom.version> - <wss4j.version>1.5.12</wss4j.version> + <wss4j.version>1.6.4</wss4j.version> <opensaml.version>2.5.1-1</opensaml.version> <bcprov.jdk15.version>140</bcprov.jdk15.version>