001 /* 002 * $HeadURL: http://juliusdavies.ca/svn/not-yet-commons-ssl/tags/commons-ssl-0.3.11/src/java/org/apache/commons/ssl/SSLSocketWrapper.java $ 003 * $Revision: 155 $ 004 * $Date: 2009-09-17 14:00:58 -0700 (Thu, 17 Sep 2009) $ 005 * 006 * ==================================================================== 007 * Licensed to the Apache Software Foundation (ASF) under one 008 * or more contributor license agreements. See the NOTICE file 009 * distributed with this work for additional information 010 * regarding copyright ownership. The ASF licenses this file 011 * to you under the Apache License, Version 2.0 (the 012 * "License"); you may not use this file except in compliance 013 * with the License. You may obtain a copy of the License at 014 * 015 * http://www.apache.org/licenses/LICENSE-2.0 016 * 017 * Unless required by applicable law or agreed to in writing, 018 * software distributed under the License is distributed on an 019 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 020 * KIND, either express or implied. See the License for the 021 * specific language governing permissions and limitations 022 * under the License. 023 * ==================================================================== 024 * 025 * This software consists of voluntary contributions made by many 026 * individuals on behalf of the Apache Software Foundation. For more 027 * information on the Apache Software Foundation, please see 028 * <http://www.apache.org/>. 029 * 030 */ 031 032 package org.apache.commons.ssl; 033 034 import javax.net.ssl.HandshakeCompletedListener; 035 import javax.net.ssl.SSLSession; 036 import javax.net.ssl.SSLSocket; 037 import java.io.IOException; 038 import java.io.InputStream; 039 import java.io.OutputStream; 040 import java.net.InetAddress; 041 import java.net.Socket; 042 import java.net.SocketAddress; 043 import java.net.SocketException; 044 import java.nio.channels.SocketChannel; 045 046 /** 047 * @author Credit Union Central of British Columbia 048 * @author <a href="http://www.cucbc.com/">www.cucbc.com</a> 049 * @author <a href="mailto:juliusdavies@cucbc.com">juliusdavies@cucbc.com</a> 050 * @since 16-Aug-2006 051 */ 052 public class SSLSocketWrapper extends SSLSocket { 053 protected Socket s; 054 055 public SSLSocketWrapper(Socket s) { 056 this.s = s; 057 } 058 059 /* javax.net.ssl.SSLSocket */ 060 061 public void addHandshakeCompletedListener(HandshakeCompletedListener hcl) { 062 if (s instanceof SSLSocket) { 063 ((SSLSocket) s).addHandshakeCompletedListener(hcl); 064 } 065 } 066 067 public void removeHandshakeCompletedListener(HandshakeCompletedListener hcl) { 068 if (s instanceof SSLSocket) { 069 ((SSLSocket) s).removeHandshakeCompletedListener(hcl); 070 } 071 } 072 073 public String[] getSupportedCipherSuites() { 074 if (s instanceof SSLSocket) { 075 return ((SSLSocket) s).getSupportedCipherSuites(); 076 } else { 077 return null; 078 } 079 } 080 081 public boolean getEnableSessionCreation() { 082 if (s instanceof SSLSocket) { 083 return ((SSLSocket) s).getEnableSessionCreation(); 084 } else { 085 return false; 086 } 087 } 088 089 public String[] getEnabledCipherSuites() { 090 if (s instanceof SSLSocket) { 091 return ((SSLSocket) s).getEnabledCipherSuites(); 092 } else { 093 return null; 094 } 095 } 096 097 public String[] getSupportedProtocols() { 098 if (s instanceof SSLSocket) { 099 return ((SSLSocket) s).getSupportedProtocols(); 100 } else { 101 return null; 102 } 103 } 104 105 public String[] getEnabledProtocols() { 106 if (s instanceof SSLSocket) { 107 return ((SSLSocket) s).getEnabledProtocols(); 108 } else { 109 return null; 110 } 111 } 112 113 public SSLSession getSession() { 114 if (s instanceof SSLSocket) { 115 return ((SSLSocket) s).getSession(); 116 } else { 117 return null; 118 } 119 } 120 121 public boolean getUseClientMode() { 122 if (s instanceof SSLSocket) { 123 return ((SSLSocket) s).getUseClientMode(); 124 } else { 125 return false; 126 } 127 } 128 129 public boolean getNeedClientAuth() { 130 if (s instanceof SSLSocket) { 131 return ((SSLSocket) s).getNeedClientAuth(); 132 } else { 133 return false; 134 } 135 } 136 137 public boolean getWantClientAuth() { 138 if (s instanceof SSLSocket) { 139 return ((SSLSocket) s).getWantClientAuth(); 140 } else { 141 return false; 142 } 143 } 144 145 public void setEnabledCipherSuites(String[] cs) { 146 if (s instanceof SSLSocket) { 147 ((SSLSocket) s).setEnabledCipherSuites(cs); 148 } 149 } 150 151 public void setEnabledProtocols(String[] ep) { 152 if (s instanceof SSLSocket) { 153 ((SSLSocket) s).setEnabledProtocols(ep); 154 } 155 } 156 157 public void startHandshake() throws IOException { 158 if (s instanceof SSLSocket) { 159 ((SSLSocket) s).startHandshake(); 160 } 161 } 162 163 public void setUseClientMode(boolean b) { 164 if (s instanceof SSLSocket) { 165 ((SSLSocket) s).setUseClientMode(b); 166 } 167 } 168 169 public void setNeedClientAuth(boolean b) { 170 if (s instanceof SSLSocket) { 171 ((SSLSocket) s).setNeedClientAuth(b); 172 } 173 } 174 175 public void setWantClientAuth(boolean b) { 176 if (s instanceof SSLSocket) { 177 ((SSLSocket) s).setWantClientAuth(b); 178 } 179 } 180 181 public void setEnableSessionCreation(boolean b) { 182 if (s instanceof SSLSocket) { 183 ((SSLSocket) s).setEnableSessionCreation(b); 184 } 185 } 186 187 /* java.net.Socket */ 188 189 public SocketChannel getChannel() { 190 return s.getChannel(); 191 } 192 193 public InetAddress getInetAddress() { 194 return s.getInetAddress(); 195 } 196 197 public boolean getKeepAlive() throws SocketException { 198 return s.getKeepAlive(); 199 } 200 201 public InetAddress getLocalAddress() { 202 return s.getLocalAddress(); 203 } 204 205 public int getLocalPort() { 206 return s.getLocalPort(); 207 } 208 209 public SocketAddress getLocalSocketAddress() { 210 return s.getLocalSocketAddress(); 211 } 212 213 public boolean getOOBInline() throws SocketException { 214 return s.getOOBInline(); 215 } 216 217 public int getPort() { 218 return s.getPort(); 219 } 220 221 public int getReceiveBufferSize() throws SocketException { 222 return s.getReceiveBufferSize(); 223 } 224 225 public SocketAddress getRemoteSocketAddress() { 226 return s.getRemoteSocketAddress(); 227 } 228 229 public boolean getReuseAddress() throws SocketException { 230 return s.getReuseAddress(); 231 } 232 233 public int getSendBufferSize() throws SocketException { 234 return s.getSendBufferSize(); 235 } 236 237 public int getSoLinger() throws SocketException { 238 return s.getSoLinger(); 239 } 240 241 public int getSoTimeout() throws SocketException { 242 return s.getSoTimeout(); 243 } 244 245 public boolean getTcpNoDelay() throws SocketException { 246 return s.getTcpNoDelay(); 247 } 248 249 public int getTrafficClass() throws SocketException { 250 return s.getTrafficClass(); 251 } 252 253 public boolean isBound() { 254 return s.isBound(); 255 } 256 257 public boolean isClosed() { 258 return s.isClosed(); 259 } 260 261 public boolean isConnected() { 262 return s.isConnected(); 263 } 264 265 public boolean isInputShutdown() { 266 return s.isInputShutdown(); 267 } 268 269 public boolean isOutputShutdown() { 270 return s.isOutputShutdown(); 271 } 272 273 public void sendUrgentData(int data) throws IOException { 274 s.sendUrgentData(data); 275 } 276 277 public void setKeepAlive(boolean on) throws SocketException { 278 s.setKeepAlive(on); 279 } 280 281 public void setOOBInline(boolean on) throws SocketException { 282 s.setOOBInline(on); 283 } 284 285 public void setReceiveBufferSize(int size) throws SocketException { 286 s.setReceiveBufferSize(size); 287 } 288 289 public void setReuseAddress(boolean on) throws SocketException { 290 s.setReuseAddress(on); 291 } 292 293 public void setSendBufferSize(int size) throws SocketException { 294 s.setSendBufferSize(size); 295 } 296 297 public void setSoLinger(boolean on, int l) throws SocketException { 298 s.setSoLinger(on, l); 299 } 300 301 public void setSoTimeout(int timeout) throws SocketException { 302 s.setSoTimeout(timeout); 303 } 304 305 public void setTcpNoDelay(boolean on) throws SocketException { 306 s.setTcpNoDelay(on); 307 } 308 309 public void setTrafficClass(int tc) throws SocketException { 310 s.setTrafficClass(tc); 311 } 312 313 public void shutdownInput() throws IOException { 314 s.shutdownInput(); 315 } 316 317 public void shutdownOutput() throws IOException { 318 s.shutdownOutput(); 319 } 320 321 public String toString() { 322 return s.toString(); 323 } 324 325 /* Java 1.5 326 public void setPerformancePreferences(int connectionTime, int latency, int bandwidth) 327 { 328 s.setPerformancePreferences( connectionTime, latency, bandwidth ); 329 } 330 */ 331 332 public void bind(SocketAddress bindpoint) throws IOException { 333 s.bind(bindpoint); 334 } 335 336 public void close() throws IOException { 337 s.close(); 338 } 339 340 public void connect(SocketAddress endpoint) throws IOException { 341 s.connect(endpoint); 342 } 343 344 public void connect(SocketAddress endpoint, int timeout) throws IOException { 345 s.connect(endpoint, timeout); 346 } 347 348 public InputStream getInputStream() throws IOException { 349 return s.getInputStream(); 350 } 351 352 public OutputStream getOutputStream() throws IOException { 353 return s.getOutputStream(); 354 } 355 356 }