001    /*
002     * $HeadURL: http://juliusdavies.ca/svn/not-yet-commons-ssl/tags/commons-ssl-0.3.9/src/java/org/apache/commons/ssl/SSLSocketWrapper.java $
003     * $Revision: 121 $
004     * $Date: 2007-11-13 21:26:57 -0800 (Tue, 13 Nov 2007) $
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.SocketAddress;
042    import java.net.SocketException;
043    import java.nio.channels.SocketChannel;
044    
045    /**
046     * @author Credit Union Central of British Columbia
047     * @author <a href="http://www.cucbc.com/">www.cucbc.com</a>
048     * @author <a href="mailto:juliusdavies@cucbc.com">juliusdavies@cucbc.com</a>
049     * @since 16-Aug-2006
050     */
051    public class SSLSocketWrapper extends SSLSocket {
052        protected SSLSocket s;
053    
054        public SSLSocketWrapper(SSLSocket s) {
055            this.s = s;
056        }
057    
058        /* javax.net.ssl.SSLSocket */
059    
060        public void addHandshakeCompletedListener(HandshakeCompletedListener hcl) {
061            s.addHandshakeCompletedListener(hcl);
062        }
063    
064        public void removeHandshakeCompletedListener(HandshakeCompletedListener hcl) {
065            s.removeHandshakeCompletedListener(hcl);
066        }
067    
068        public String[] getSupportedCipherSuites() {
069            return s.getSupportedCipherSuites();
070        }
071    
072        public boolean getEnableSessionCreation() {
073            return s.getEnableSessionCreation();
074        }
075    
076        public String[] getEnabledCipherSuites() {
077            return s.getEnabledCipherSuites();
078        }
079    
080        public String[] getSupportedProtocols() { return s.getSupportedProtocols(); }
081    
082        public String[] getEnabledProtocols() { return s.getEnabledProtocols(); }
083    
084        public SSLSession getSession() { return s.getSession(); }
085    
086        public boolean getUseClientMode() { return s.getUseClientMode(); }
087    
088        public boolean getNeedClientAuth() { return s.getNeedClientAuth(); }
089    
090        public boolean getWantClientAuth() { return s.getWantClientAuth(); }
091    
092        public void setEnabledCipherSuites(String[] cs) {
093            s.setEnabledCipherSuites(cs);
094        }
095    
096        public void setEnabledProtocols(String[] ep) {
097            s.setEnabledProtocols(ep);
098        }
099    
100        public void startHandshake() throws IOException { s.startHandshake(); }
101    
102        public void setUseClientMode(boolean b) { s.setUseClientMode(b); }
103    
104        public void setNeedClientAuth(boolean b) { s.setNeedClientAuth(b); }
105    
106        public void setWantClientAuth(boolean b) { s.setWantClientAuth(b); }
107    
108        public void setEnableSessionCreation(boolean b) {
109            s.setEnableSessionCreation(b);
110        }
111    
112        /* java.net.Socket */
113    
114        public SocketChannel getChannel() { return s.getChannel(); }
115    
116        public InetAddress getInetAddress() { return s.getInetAddress(); }
117    
118        public boolean getKeepAlive() throws SocketException {
119            return s.getKeepAlive();
120        }
121    
122        public InetAddress getLocalAddress() { return s.getLocalAddress(); }
123    
124        public int getLocalPort() { return s.getLocalPort(); }
125    
126        public SocketAddress getLocalSocketAddress() {
127            return s.getLocalSocketAddress();
128        }
129    
130        public boolean getOOBInline() throws SocketException {
131            return s.getOOBInline();
132        }
133    
134        public int getPort() { return s.getPort(); }
135    
136        public int getReceiveBufferSize() throws SocketException {
137            return s.getReceiveBufferSize();
138        }
139    
140        public SocketAddress getRemoteSocketAddress() {
141            return s.getRemoteSocketAddress();
142        }
143    
144        public boolean getReuseAddress() throws SocketException {
145            return s.getReuseAddress();
146        }
147    
148        public int getSendBufferSize() throws SocketException {
149            return s.getSendBufferSize();
150        }
151    
152        public int getSoLinger() throws SocketException { return s.getSoLinger(); }
153    
154        public int getSoTimeout() throws SocketException { return s.getSoTimeout(); }
155    
156        public boolean getTcpNoDelay() throws SocketException {
157            return s.getTcpNoDelay();
158        }
159    
160        public int getTrafficClass() throws SocketException {
161            return s.getTrafficClass();
162        }
163    
164        public boolean isBound() { return s.isBound(); }
165    
166        public boolean isClosed() { return s.isClosed(); }
167    
168        public boolean isConnected() { return s.isConnected(); }
169    
170        public boolean isInputShutdown() { return s.isInputShutdown(); }
171    
172        public boolean isOutputShutdown() { return s.isOutputShutdown(); }
173    
174        public void sendUrgentData(int data) throws IOException {
175            s.sendUrgentData(data);
176        }
177    
178        public void setKeepAlive(boolean on) throws SocketException {
179            s.setKeepAlive(on);
180        }
181    
182        public void setOOBInline(boolean on) throws SocketException {
183            s.setOOBInline(on);
184        }
185    
186        public void setReceiveBufferSize(int size) throws SocketException {
187            s.setReceiveBufferSize(size);
188        }
189    
190        public void setReuseAddress(boolean on) throws SocketException {
191            s.setReuseAddress(on);
192        }
193    
194        public void setSendBufferSize(int size) throws SocketException {
195            s.setSendBufferSize(size);
196        }
197    
198        public void setSoLinger(boolean on, int l) throws SocketException {
199            s.setSoLinger(on, l);
200        }
201    
202        public void setSoTimeout(int timeout) throws SocketException {
203            s.setSoTimeout(timeout);
204        }
205    
206        public void setTcpNoDelay(boolean on) throws SocketException {
207            s.setTcpNoDelay(on);
208        }
209    
210        public void setTrafficClass(int tc) throws SocketException {
211            s.setTrafficClass(tc);
212        }
213    
214        public void shutdownInput() throws IOException { s.shutdownInput(); }
215    
216        public void shutdownOutput() throws IOException { s.shutdownOutput(); }
217    
218        public String toString() { return s.toString(); }
219    
220        /*  Java 1.5
221         public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
222         {
223             s.setPerformancePreferences( connectionTime, latency, bandwidth );
224         }
225         */
226    
227        public void bind(SocketAddress bindpoint) throws IOException {
228            s.bind(bindpoint);
229        }
230    
231        public void close() throws IOException {
232            s.close();
233        }
234    
235        public void connect(SocketAddress endpoint) throws IOException {
236            s.connect(endpoint);
237        }
238    
239        public void connect(SocketAddress endpoint, int timeout) throws IOException {
240            s.connect(endpoint, timeout);
241        }
242    
243        public InputStream getInputStream() throws IOException {
244            return s.getInputStream();
245        }
246    
247        public OutputStream getOutputStream() throws IOException {
248            return s.getOutputStream();
249        }
250    
251    }