KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > httpclient > ssl > SimpleSSLSocketFactory


1 /*
2  * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/test/org/apache/commons/httpclient/ssl/SimpleSSLSocketFactory.java,v 1.1 2004/12/11 22:35:26 olegk Exp $
3  * $Revision: 514390 $
4  * $Date: 2007-03-04 12:37:15 +0000 (Sun, 04 Mar 2007) $
5  *
6  * ====================================================================
7  *
8  * Licensed to the Apache Software Foundation (ASF) under one or more
9  * contributor license agreements. See the NOTICE file distributed with
10  * this work for additional information regarding copyright ownership.
11  * The ASF licenses this file to You under the Apache License, Version 2.0
12  * (the "License"); you may not use this file except in compliance with
13  * the License. You may obtain a copy of the License at
14  *
15  * http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  * ====================================================================
23  *
24  * This software consists of voluntary contributions made by many
25  * individuals on behalf of the Apache Software Foundation. For more
26  * information on the Apache Software Foundation, please see
27  * <http://www.apache.org/>.
28  *
29  */

30
31 package org.apache.commons.httpclient.ssl;
32
33 import java.io.IOException JavaDoc;
34 import java.io.InputStream JavaDoc;
35 import java.net.ServerSocket JavaDoc;
36 import java.net.URL JavaDoc;
37 import java.security.KeyStore JavaDoc;
38
39 import javax.net.ServerSocketFactory;
40
41 import org.apache.commons.httpclient.server.SimpleSocketFactory;
42 import org.apache.commons.logging.Log;
43 import org.apache.commons.logging.LogFactory;
44
45 import com.sun.net.ssl.KeyManager;
46 import com.sun.net.ssl.KeyManagerFactory;
47 import com.sun.net.ssl.SSLContext;
48
49 /**
50  * Defines a SSL socket factory
51  *
52  * @author Oleg Kalnichevski
53  */

54 public class SimpleSSLSocketFactory implements SimpleSocketFactory {
55     
56     private static final Log LOG = LogFactory.getLog(SimpleSocketFactory.class);
57
58     private static SSLContext SSLCONTEXT = null;
59     
60     private static SSLContext createSSLContext() {
61         try {
62             ClassLoader JavaDoc cl = SimpleSocketFactory.class.getClassLoader();
63             URL JavaDoc url = cl.getResource("org/apache/commons/httpclient/ssl/simpleserver.keystore");
64             KeyStore JavaDoc keystore = KeyStore.getInstance("jks");
65             InputStream JavaDoc is = null;
66             try {
67                 is = url.openStream();
68                 keystore.load(is, "nopassword".toCharArray());
69             } finally {
70                 if (is != null) is.close();
71             }
72             KeyManagerFactory kmfactory = KeyManagerFactory.getInstance(
73                     KeyManagerFactory.getDefaultAlgorithm());
74             kmfactory.init(keystore, "nopassword".toCharArray());
75             KeyManager[] keymanagers = kmfactory.getKeyManagers();
76             SSLContext sslcontext = SSLContext.getInstance("TLS");
77             sslcontext.init(keymanagers, null, null);
78             return sslcontext;
79         } catch (Exception JavaDoc ex) {
80             // this is not the way a sane exception handling should be done
81
// but for our simple HTTP testing framework this will suffice
82
LOG.error(ex.getMessage(), ex);
83             throw new IllegalStateException JavaDoc(ex.getMessage());
84         }
85     
86     }
87     
88     private static SSLContext getSSLContext() {
89         if (SSLCONTEXT == null) {
90             SSLCONTEXT = createSSLContext();
91         }
92         return SSLCONTEXT;
93     }
94     
95     public SimpleSSLSocketFactory() {
96         super();
97     }
98     
99     public ServerSocket JavaDoc createServerSocket(int port) throws IOException JavaDoc {
100         ServerSocketFactory socketfactory = getSSLContext().getServerSocketFactory();
101         return socketfactory.createServerSocket(port);
102     }
103     
104 }
105
Popular Tags