Skip test if cannot run on platform due security provider not supporting ECDSA.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4db3d9e1 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4db3d9e1 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4db3d9e1 Branch: refs/heads/camel-2.12.x Commit: 4db3d9e12dd74c4ecef68ddcbfc5b29dc713bc3b Parents: 0754222 Author: Claus Ibsen <davscl...@apache.org> Authored: Mon Sep 16 11:39:41 2013 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Sep 16 11:39:57 2013 +0200 ---------------------------------------------------------------------- .../component/crypto/ECDSASignatureTest.java | 40 ++++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/4db3d9e1/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/ECDSASignatureTest.java ---------------------------------------------------------------------- diff --git a/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/ECDSASignatureTest.java b/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/ECDSASignatureTest.java index 4f8760f..b24988c 100644 --- a/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/ECDSASignatureTest.java +++ b/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/ECDSASignatureTest.java @@ -40,12 +40,15 @@ public class ECDSASignatureTest extends CamelTestSupport { private String payload = "Dear Alice, Rest assured it's me, signed Bob"; private boolean ibmJDK; + private PrivateKey privateKey; + private X509Certificate x509; + private boolean canRun = true; public ECDSASignatureTest() throws Exception { // BouncyCastle is required for ECDSA support for JDK 1.6 if (isJava16() && Security.getProvider("BC") == null) { - Constructor<?> cons = null; + Constructor<?> cons; Class<?> c = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider"); cons = c.getConstructor(new Class[] {}); @@ -57,28 +60,40 @@ public class ECDSASignatureTest extends CamelTestSupport { if (isJavaVendor("IBM")) { ibmJDK = true; } + + // see if we can load the keystore et all + try { + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + InputStream in = ECDSASignatureTest.class.getResourceAsStream("/org/apache/camel/component/crypto/ecdsa.jks"); + keyStore.load(in, "security".toCharArray()); + privateKey = (PrivateKey) keyStore.getKey("ECDSA", "security".toCharArray()); + x509 = (X509Certificate)keyStore.getCertificate("ECDSA"); + } catch (Throwable e) { + log.warn("Cannot setup keystore for running this test due " + e.getMessage() + ". This test is skipped.", e); + canRun = false; + } } @Override protected RouteBuilder[] createRouteBuilders() throws Exception { - if (ibmJDK) { + if (ibmJDK || !canRun) { return new RouteBuilder[] {}; } return new RouteBuilder[]{new RouteBuilder() { public void configure() throws Exception { // START SNIPPET: ecdsa-sha1 - KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - InputStream in = ECDSASignatureTest.class.getResourceAsStream("/org/apache/camel/component/crypto/ecdsa.jks"); - keyStore.load(in, "security".toCharArray()); - PrivateKey privateKey = - (PrivateKey)keyStore.getKey("ECDSA", "security".toCharArray()); - X509Certificate x509 = (X509Certificate)keyStore.getCertificate("ECDSA"); // we can set the keys explicitly on the endpoint instances. - context.getEndpoint("crypto:sign://ecdsa-sha1?algorithm=SHA1withECDSA", DigitalSignatureEndpoint.class).setPrivateKey(privateKey); - context.getEndpoint("crypto:verify://ecdsa-sha1?algorithm=SHA1withECDSA", DigitalSignatureEndpoint.class).setPublicKey(x509.getPublicKey()); - from("direct:ecdsa-sha1").to("crypto:sign://ecdsa-sha1?algorithm=SHA1withECDSA", "crypto:verify://ecdsa-sha1?algorithm=SHA1withECDSA", "mock:result"); + context.getEndpoint("crypto:sign://ecdsa-sha1?algorithm=SHA1withECDSA", DigitalSignatureEndpoint.class) + .setPrivateKey(privateKey); + context.getEndpoint("crypto:verify://ecdsa-sha1?algorithm=SHA1withECDSA", DigitalSignatureEndpoint.class) + .setPublicKey(x509.getPublicKey()); + + from("direct:ecdsa-sha1") + .to("crypto:sign://ecdsa-sha1?algorithm=SHA1withECDSA") + .to("crypto:verify://ecdsa-sha1?algorithm=SHA1withECDSA") + .to("mock:result"); // END SNIPPET: ecdsa-sha1 } }}; @@ -86,9 +101,10 @@ public class ECDSASignatureTest extends CamelTestSupport { @Test public void testECDSASHA1() throws Exception { - if (ibmJDK) { + if (ibmJDK || !canRun) { return; } + setupMock(); sendBody("direct:ecdsa-sha1", payload); assertMockEndpointsSatisfied();