1 20 package org.apache.mina.example.echoserver.ssl; 21 22 import java.io.IOException ; 23 import java.io.InputStream ; 24 import java.security.GeneralSecurityException ; 25 import java.security.KeyStore ; 26 import java.security.Security ; 27 28 import javax.net.ssl.KeyManagerFactory; 29 import javax.net.ssl.SSLContext; 30 31 37 public class BogusSSLContextFactory { 38 39 42 private static final String PROTOCOL = "TLS"; 43 44 private static final String KEY_MANAGER_FACTORY_ALGORITHM; 45 46 static { 47 String algorithm = Security 48 .getProperty("ssl.KeyManagerFactory.algorithm"); 49 if (algorithm == null) { 50 algorithm = "SunX509"; 51 } 52 53 KEY_MANAGER_FACTORY_ALGORITHM = algorithm; 54 } 55 56 59 private static final String BOGUS_KEYSTORE = "bogus.cert"; 60 61 67 70 private static final char[] BOGUS_PW = { 'b', 'o', 'g', 'u', 's', 'p', 'w' }; 71 72 private static SSLContext serverInstance = null; 73 74 private static SSLContext clientInstance = null; 75 76 83 public static SSLContext getInstance(boolean server) 84 throws GeneralSecurityException { 85 SSLContext retInstance = null; 86 if (server) { 87 if (serverInstance == null) { 88 synchronized (BogusSSLContextFactory.class) { 89 if (serverInstance == null) { 90 try { 91 serverInstance = createBougusServerSSLContext(); 92 } catch (Exception ioe) { 93 throw new GeneralSecurityException ( 94 "Can't create Server SSLContext:" + ioe); 95 } 96 } 97 } 98 } 99 retInstance = serverInstance; 100 } else { 101 if (clientInstance == null) { 102 synchronized (BogusSSLContextFactory.class) { 103 if (clientInstance == null) { 104 clientInstance = createBougusClientSSLContext(); 105 } 106 } 107 } 108 retInstance = clientInstance; 109 } 110 return retInstance; 111 } 112 113 private static SSLContext createBougusServerSSLContext() 114 throws GeneralSecurityException , IOException { 115 KeyStore ks = KeyStore.getInstance("JKS"); 117 InputStream in = null; 118 try { 119 in = BogusSSLContextFactory.class 120 .getResourceAsStream(BOGUS_KEYSTORE); 121 ks.load(in, BOGUS_PW); 122 } finally { 123 if (in != null) { 124 try { 125 in.close(); 126 } catch (IOException ignored) { 127 } 128 } 129 } 130 131 KeyManagerFactory kmf = KeyManagerFactory 133 .getInstance(KEY_MANAGER_FACTORY_ALGORITHM); 134 kmf.init(ks, BOGUS_PW); 135 136 SSLContext sslContext = SSLContext.getInstance(PROTOCOL); 138 sslContext.init(kmf.getKeyManagers(), 139 BogusTrustManagerFactory.X509_MANAGERS, null); 140 141 return sslContext; 142 } 143 144 private static SSLContext createBougusClientSSLContext() 145 throws GeneralSecurityException { 146 SSLContext context = SSLContext.getInstance(PROTOCOL); 147 context.init(null, BogusTrustManagerFactory.X509_MANAGERS, null); 148 return context; 149 } 150 151 } 152 | Popular Tags |