[jboss-cvs] JBoss Messaging SVN: r3314 - in projects/jbm-mina: src/etc and 9 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 12 11:34:02 EST 2007


Author: jmesnil
Date: 2007-11-12 11:34:02 -0500 (Mon, 12 Nov 2007)
New Revision: 3314

Added:
   projects/jbm-mina/src/etc/org/
   projects/jbm-mina/src/etc/org/jboss/
   projects/jbm-mina/src/etc/org/jboss/messaging/
   projects/jbm-mina/src/etc/org/jboss/messaging/remoting/
   projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/
   projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.keystore
   projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.truststore
   projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/
   projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusSslContextFactory.java
   projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusTrustManagerFactory.java
Modified:
   projects/jbm-mina/.classpath
   projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java
   projects/jbm-mina/tests/src/org/jboss/messaging/remoting/SecurityTest.java
   projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java
Log:
* for SSL support & test, reuse same keystore than JBM's secure-socket example

Modified: projects/jbm-mina/.classpath
===================================================================
--- projects/jbm-mina/.classpath	2007-11-12 13:52:16 UTC (rev 3313)
+++ projects/jbm-mina/.classpath	2007-11-12 16:34:02 UTC (rev 3314)
@@ -13,6 +13,5 @@
 	<classpathentry combineaccessrules="false" kind="src" path="/asyncweb-core"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/mina-filter-codec-http"/>
 	<classpathentry kind="lib" path="/jboss-messaging/thirdparty/jbossas/core-libs/lib/jboss-common.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/mina-example"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

Added: projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.keystore
===================================================================
(Binary files differ)


Property changes on: projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.keystore
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.truststore
===================================================================
(Binary files differ)


Property changes on: projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.truststore
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java
===================================================================
--- projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java	2007-11-12 13:52:16 UTC (rev 3313)
+++ projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java	2007-11-12 16:34:02 UTC (rev 3314)
@@ -12,13 +12,10 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 
-import javax.net.ssl.SSLContext;
-
 import org.apache.mina.common.CloseFuture;
 import org.apache.mina.common.ConnectFuture;
 import org.apache.mina.common.DefaultIoFilterChainBuilder;
 import org.apache.mina.common.IoSession;
-import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.codec.http.HttpProtocolCodecFactory;
 import org.apache.mina.filter.logging.LoggingFilter;
@@ -30,6 +27,7 @@
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
 import org.jboss.messaging.remoting.PacketHandler;
 import org.jboss.messaging.remoting.RemoteDispatcher;
+import org.jboss.messaging.remoting.ssl.BogusSslContextFactory;
 import org.jboss.messaging.remoting.transport.http.HTTPFilter;
 import org.jboss.messaging.remoting.wireformat.AbstractPacket;
 import org.jboss.messaging.remoting.wireformat.PacketCodecFactory;

Added: projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusSslContextFactory.java
===================================================================
--- projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusSslContextFactory.java	                        (rev 0)
+++ projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusSslContextFactory.java	2007-11-12 16:34:02 UTC (rev 3314)
@@ -0,0 +1,145 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.jboss.messaging.remoting.ssl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.GeneralSecurityException;
+import java.security.KeyStore;
+import java.security.Security;
+
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+
+/**
+ * Factory to create a bougus SSLContext.
+ *
+ * @author The Apache MINA Project (dev at mina.apache.org)
+ * @version $Rev: 576647 $, $Date: 2007-09-18 03:41:29 +0200 (Tue, 18 Sep 2007) $
+ */
+public class BogusSslContextFactory {
+
+    /**
+     * Protocol to use.
+     */
+    private static final String PROTOCOL = "TLS";
+
+    private static final String KEY_MANAGER_FACTORY_ALGORITHM;
+
+    static {
+        String algorithm = Security
+                .getProperty("ssl.KeyManagerFactory.algorithm");
+        if (algorithm == null) {
+            algorithm = KeyManagerFactory.getDefaultAlgorithm();
+        }
+
+        KEY_MANAGER_FACTORY_ALGORITHM = algorithm;
+    }
+
+    /**
+     * Bougus Server certificate keystore file name.
+     */
+    private static final String BOGUS_KEYSTORE = "messaging.keystore";
+
+    /**
+     * Bougus keystore password.
+     */
+    private static final char[] BOGUS_PW = "secureexample".toCharArray();
+    
+    private static SSLContext serverInstance = null;
+
+    private static SSLContext clientInstance = null;
+
+    /**
+     * Get SSLContext singleton.
+     *
+     * @return SSLContext
+     * @throws java.security.GeneralSecurityException
+     *
+     */
+    public static SSLContext getInstance(boolean server)
+            throws GeneralSecurityException {
+        SSLContext retInstance = null;
+        if (server) {
+            if (serverInstance == null) {
+                synchronized (BogusSslContextFactory.class) {
+                    if (serverInstance == null) {
+                        try {
+                            serverInstance = createBougusServerSslContext();
+                        } catch (Exception ioe) {
+                            throw new GeneralSecurityException(
+                                    "Can't create Server SSLContext:" + ioe);
+                        }
+                    }
+                }
+            }
+            retInstance = serverInstance;
+        } else {
+            if (clientInstance == null) {
+                synchronized (BogusSslContextFactory.class) {
+                    if (clientInstance == null) {
+                        clientInstance = createBougusClientSslContext();
+                    }
+                }
+            }
+            retInstance = clientInstance;
+        }
+        return retInstance;
+    }
+
+    private static SSLContext createBougusServerSslContext()
+            throws GeneralSecurityException, IOException {
+        // Create keystore
+        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
+        InputStream in = null;
+        try {
+            in = BogusSslContextFactory.class
+                    .getResourceAsStream(BOGUS_KEYSTORE);
+            ks.load(in, BOGUS_PW);
+        } finally {
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException ignored) {
+                }
+            }
+        }
+
+        // Set up key manager factory to use our key store
+        KeyManagerFactory kmf = KeyManagerFactory
+                .getInstance(KEY_MANAGER_FACTORY_ALGORITHM);
+        kmf.init(ks, BOGUS_PW);
+
+        // Initialize the SSLContext to work with our key managers.
+        SSLContext sslContext = SSLContext.getInstance(PROTOCOL);
+        sslContext.init(kmf.getKeyManagers(),
+                BogusTrustManagerFactory.X509_MANAGERS, null);
+
+        return sslContext;
+    }
+
+    private static SSLContext createBougusClientSslContext()
+            throws GeneralSecurityException {
+        SSLContext context = SSLContext.getInstance(PROTOCOL);
+        context.init(null, BogusTrustManagerFactory.X509_MANAGERS, null);
+        return context;
+    }
+
+}

Added: projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusTrustManagerFactory.java
===================================================================
--- projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusTrustManagerFactory.java	                        (rev 0)
+++ projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusTrustManagerFactory.java	2007-11-12 16:34:02 UTC (rev 3314)
@@ -0,0 +1,75 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.jboss.messaging.remoting.ssl;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.ManagerFactoryParameters;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactorySpi;
+import javax.net.ssl.X509TrustManager;
+
+/**
+ * Bogus trust manager factory. Creates BogusX509TrustManager
+ *
+ * @author The Apache MINA Project (dev at mina.apache.org)
+ * @version $Rev: 576217 $, $Date: 2007-09-17 01:55:27 +0200 (lun., 17 sept. 2007) $
+ */
+class BogusTrustManagerFactory extends TrustManagerFactorySpi {
+
+    static final X509TrustManager X509 = new X509TrustManager() {
+        public void checkClientTrusted(X509Certificate[] x509Certificates,
+                String s) throws CertificateException {
+        }
+
+        public void checkServerTrusted(X509Certificate[] x509Certificates,
+                String s) throws CertificateException {
+        }
+
+        public X509Certificate[] getAcceptedIssuers() {
+            return new X509Certificate[0];
+        }
+    };
+
+    static final TrustManager[] X509_MANAGERS = new TrustManager[] { X509 };
+
+    public BogusTrustManagerFactory() {
+    }
+
+    @Override
+    protected TrustManager[] engineGetTrustManagers() {
+        return X509_MANAGERS;
+    }
+
+    @Override
+    protected void engineInit(KeyStore keystore) throws KeyStoreException {
+        // noop
+    }
+
+    @Override
+    protected void engineInit(ManagerFactoryParameters managerFactoryParameters)
+            throws InvalidAlgorithmParameterException {
+        // noop
+    }
+}

Modified: projects/jbm-mina/tests/src/org/jboss/messaging/remoting/SecurityTest.java
===================================================================
--- projects/jbm-mina/tests/src/org/jboss/messaging/remoting/SecurityTest.java	2007-11-12 13:52:16 UTC (rev 3313)
+++ projects/jbm-mina/tests/src/org/jboss/messaging/remoting/SecurityTest.java	2007-11-12 16:34:02 UTC (rev 3314)
@@ -40,7 +40,7 @@
       serverAcceptor.unbind();
    }
 
-   public void sendUsingTransport(TransportType transport, String text)
+   public void sendUsingSecureTransport(TransportType transport, String text)
          throws Exception
    {
       setUp(transport);
@@ -59,13 +59,13 @@
    @Test
    public void testSSLOverTCP() throws Exception
    {
-      sendUsingTransport(TCP, "testSSLOverTCP");
+      sendUsingSecureTransport(TCP, "testSSLOverTCP");
    }
 
    @Test
    public void testSSLOverHTTP() throws Exception
    {
-      sendUsingTransport(HTTP, "testSSLOverHTTP");
+      sendUsingSecureTransport(HTTP, "testSSLOverHTTP");
    }
    
    // Package protected ---------------------------------------------

Modified: projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java
===================================================================
--- projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java	2007-11-12 13:52:16 UTC (rev 3313)
+++ projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java	2007-11-12 16:34:02 UTC (rev 3314)
@@ -6,13 +6,13 @@
 import java.net.InetSocketAddress;
 
 import org.apache.mina.common.DefaultIoFilterChainBuilder;
-import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.logging.LoggingFilter;
 import org.apache.mina.filter.logging.MdcInjectionFilter;
 import org.apache.mina.filter.ssl.SslFilter;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.jboss.messaging.remoting.internal.TransportType;
+import org.jboss.messaging.remoting.ssl.BogusSslContextFactory;
 import org.jboss.messaging.remoting.transport.http.HTTPFilter;
 import org.jboss.messaging.remoting.wireformat.PacketCodecFactory;
 import org.safehaus.asyncweb.codec.HttpServerCodecFactory;




More information about the jboss-cvs-commits mailing list