162190cd439f163c7a53604b01836a576ef88013aChad Brubaker/* 262190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Copyright (C) 2015 The Android Open Source Project 362190cd439f163c7a53604b01836a576ef88013aChad Brubaker * 462190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Licensed under the Apache License, Version 2.0 (the "License"); 562190cd439f163c7a53604b01836a576ef88013aChad Brubaker * you may not use this file except in compliance with the License. 662190cd439f163c7a53604b01836a576ef88013aChad Brubaker * You may obtain a copy of the License at 762190cd439f163c7a53604b01836a576ef88013aChad Brubaker * 862190cd439f163c7a53604b01836a576ef88013aChad Brubaker * http://www.apache.org/licenses/LICENSE-2.0 962190cd439f163c7a53604b01836a576ef88013aChad Brubaker * 1062190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Unless required by applicable law or agreed to in writing, software 1162190cd439f163c7a53604b01836a576ef88013aChad Brubaker * distributed under the License is distributed on an "AS IS" BASIS, 1262190cd439f163c7a53604b01836a576ef88013aChad Brubaker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1362190cd439f163c7a53604b01836a576ef88013aChad Brubaker * See the License for the specific language governing permissions and 1462190cd439f163c7a53604b01836a576ef88013aChad Brubaker * limitations under the License. 1562190cd439f163c7a53604b01836a576ef88013aChad Brubaker */ 1662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 1762190cd439f163c7a53604b01836a576ef88013aChad Brubakerpackage org.conscrypt; 1862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 1962190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.io.FileDescriptor; 2062190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.io.IOException; 2162190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.io.InputStream; 2262190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.io.OutputStream; 2362190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.net.InetAddress; 2462190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.net.Socket; 2562190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.net.SocketAddress; 2662190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.net.SocketException; 2762190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.nio.channels.SocketChannel; 2862190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.security.PrivateKey; 2962190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.security.cert.CertificateEncodingException; 3062190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.security.cert.CertificateException; 3162190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.HandshakeCompletedEvent; 3262190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.HandshakeCompletedListener; 3362190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.SSLException; 3462190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.SSLParameters; 3562190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.SSLSession; 3662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 3762190cd439f163c7a53604b01836a576ef88013aChad Brubaker/** 3862190cd439f163c7a53604b01836a576ef88013aChad Brubaker * This class delegates all calls to an {@code org.conscrypt.OpenSSLSocketImpl}. 3962190cd439f163c7a53604b01836a576ef88013aChad Brubaker * This is to work around code that checks that the socket is an 4062190cd439f163c7a53604b01836a576ef88013aChad Brubaker * {@code org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl} before 4162190cd439f163c7a53604b01836a576ef88013aChad Brubaker * calling methods, such as setting SNI. This is only for KitKat. 4262190cd439f163c7a53604b01836a576ef88013aChad Brubaker * 4362190cd439f163c7a53604b01836a576ef88013aChad Brubaker * It delegates all public methods in Socket, SSLSocket, and OpenSSLSocket from 4462190cd439f163c7a53604b01836a576ef88013aChad Brubaker * KK. 4562190cd439f163c7a53604b01836a576ef88013aChad Brubaker */ 4662190cd439f163c7a53604b01836a576ef88013aChad Brubakerpublic class KitKatPlatformOpenSSLSocketImplAdapter 4762190cd439f163c7a53604b01836a576ef88013aChad Brubaker extends com.android.org.conscrypt.OpenSSLSocketImpl { 4862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 4962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 5062190cd439f163c7a53604b01836a576ef88013aChad Brubaker private final org.conscrypt.OpenSSLSocketImpl delegate; 5162190cd439f163c7a53604b01836a576ef88013aChad Brubaker 5262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public KitKatPlatformOpenSSLSocketImplAdapter(org.conscrypt.OpenSSLSocketImpl delegate) 5362190cd439f163c7a53604b01836a576ef88013aChad Brubaker throws IOException { 5462190cd439f163c7a53604b01836a576ef88013aChad Brubaker super(null); 5562190cd439f163c7a53604b01836a576ef88013aChad Brubaker this.delegate = delegate; 5662190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 5762190cd439f163c7a53604b01836a576ef88013aChad Brubaker 5862190cd439f163c7a53604b01836a576ef88013aChad Brubaker // Socket methods. 5962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 6062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 6162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void close() throws IOException { 6262190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.close(); 6362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 6462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 6562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 6662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public InputStream getInputStream() throws IOException { 6762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getInputStream(); 6862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 6962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 7062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 7162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getLocalPort() { 7262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getLocalPort(); 7362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 7462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 7562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 7662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public OutputStream getOutputStream() throws IOException { 7762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getOutputStream(); 7862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 7962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 8062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 8162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getPort() { 8262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getPort(); 8362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 8462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 8562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 8662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void connect(SocketAddress sockaddr, int timeout) throws IOException { 8762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.connect(sockaddr, timeout); 8862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 8962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 9062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 9162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void connect(SocketAddress sockaddr) throws IOException { 9262190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.connect(sockaddr); 9362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 9462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 9562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 9662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void bind(SocketAddress sockaddr) throws IOException { 9762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.bind(sockaddr); 9862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 9962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 10062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 10162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public SocketAddress getRemoteSocketAddress() { 10262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getRemoteSocketAddress(); 10362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 10462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 10562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 10662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public SocketAddress getLocalSocketAddress() { 10762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getLocalSocketAddress(); 10862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 10962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 11062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 11162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public InetAddress getLocalAddress() { 11262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getLocalAddress(); 11362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 11462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 11562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 11662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public InetAddress getInetAddress() { 11762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getInetAddress(); 11862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 11962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 12062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 12162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public String toString() { 12262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.toString(); 12362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 12462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 12562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 12662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setSoLinger(boolean on, int linger) throws SocketException { 12762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setSoLinger(on, linger); 12862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 12962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 13062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 13162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setTcpNoDelay(boolean on) throws SocketException { 13262190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setTcpNoDelay(on); 13362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 13462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 13562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 13662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setReuseAddress(boolean on) throws SocketException { 13762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setReuseAddress(on); 13862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 13962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 14062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 14162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setKeepAlive(boolean on) throws SocketException { 14262190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setKeepAlive(on); 14362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 14462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 14562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 14662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setTrafficClass(int tos) throws SocketException { 14762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setTrafficClass(tos); 14862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 14962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 15062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 15162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setSoTimeout(int to) throws SocketException { 15262190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setSoTimeout(to); 15362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 15462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 15562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 15662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setSendBufferSize(int size) throws SocketException { 15762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setSendBufferSize(size); 15862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 15962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 16062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 16162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setReceiveBufferSize(int size) throws SocketException { 16262190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setReceiveBufferSize(size); 16362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 16462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 16562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 16662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean getTcpNoDelay() throws SocketException { 16762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getTcpNoDelay(); 16862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 16962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 17062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 17162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean getReuseAddress() throws SocketException { 17262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getReuseAddress(); 17362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 17462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 17562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 17662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean getKeepAlive() throws SocketException { 17762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getKeepAlive(); 17862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 17962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 18062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 18162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getSoTimeout() throws SocketException { 18262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getSoTimeout(); 18362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 18462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 18562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 18662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getSoLinger() throws SocketException { 18762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getSoLinger(); 18862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 18962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 19062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 19162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getSendBufferSize() throws SocketException { 19262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getSendBufferSize(); 19362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 19462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 19562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 19662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getReceiveBufferSize() throws SocketException { 19762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getReceiveBufferSize(); 19862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 19962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 20062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 20162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean isConnected() { 20262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.isConnected(); 20362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 20462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 20562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 20662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean isClosed() { 20762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.isClosed(); 20862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 20962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 21062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 21162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean isBound() { 21262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.isBound(); 21362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 21462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 21562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 21662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean isOutputShutdown() { 21762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.isOutputShutdown(); 21862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 21962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 22062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 22162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean isInputShutdown() { 22262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.isInputShutdown(); 22362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 22462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 22562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 22662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void shutdownInput() throws IOException { 22762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.shutdownInput(); 22862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 22962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 23062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 23162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void shutdownOutput() throws IOException { 23262190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.shutdownOutput(); 23362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 23462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 23562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 23662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setOOBInline(boolean oobinline) throws SocketException { 23762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setOOBInline(oobinline); 23862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 23962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 24062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 24162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean getOOBInline() throws SocketException { 24262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getOOBInline(); 24362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 24462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 24562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 24662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getTrafficClass() throws SocketException { 24762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getTrafficClass(); 24862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 24962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 25062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 25162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void sendUrgentData(int value) throws IOException { 25262190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.sendUrgentData(value); 25362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 25462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 25562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 25662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public SocketChannel getChannel() { 25762190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getChannel(); 25862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 25962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 26062190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 26162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public FileDescriptor getFileDescriptor$() { 26262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getFileDescriptor$(); 26362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 26462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 26562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 26662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setPerformancePreferences(int connectionTime, int latency, int bandwidth) { 26762190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setPerformancePreferences(connectionTime, latency, bandwidth); 26862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 26962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 27062190cd439f163c7a53604b01836a576ef88013aChad Brubaker // SSLSocket methods. 27162190cd439f163c7a53604b01836a576ef88013aChad Brubaker 27262190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 27362190cd439f163c7a53604b01836a576ef88013aChad Brubaker public String[] getSupportedCipherSuites() { 27462190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getSupportedCipherSuites(); 27562190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 27662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 27762190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 27862190cd439f163c7a53604b01836a576ef88013aChad Brubaker public String[] getEnabledCipherSuites() { 27962190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getEnabledCipherSuites(); 28062190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 28162190cd439f163c7a53604b01836a576ef88013aChad Brubaker 28262190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 28362190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setEnabledCipherSuites(String[] suites) { 28462190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setEnabledCipherSuites(suites); 28562190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 28662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 28762190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 28862190cd439f163c7a53604b01836a576ef88013aChad Brubaker public String[] getSupportedProtocols() { 28962190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getSupportedProtocols(); 29062190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 29162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 29262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public String[] getEnabledProtocols() { 29362190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getEnabledProtocols(); 29462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 29562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 29662190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 29762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setEnabledProtocols(String[] protocols) { 29862190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setEnabledProtocols(protocols); 29962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 30062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 30162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 30262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public SSLSession getSession() { 30362190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getSession(); 30462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 30562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 30662190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 30762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void addHandshakeCompletedListener(HandshakeCompletedListener listener) { 30862190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.addHandshakeCompletedListener(listener); 30962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 31062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 31162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 31262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void removeHandshakeCompletedListener(HandshakeCompletedListener listener) { 31362190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.removeHandshakeCompletedListener(listener); 31462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 31562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 31662190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 31762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void startHandshake() throws IOException { 31862190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.startHandshake(); 31962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 32062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 32162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 32262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setUseClientMode(boolean mode) { 32362190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setUseClientMode(mode); 32462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 32562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 32662190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 32762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean getUseClientMode() { 32862190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getUseClientMode(); 32962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 33062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 33162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 33262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setNeedClientAuth(boolean need) { 33362190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setNeedClientAuth(need); 33462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 33562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 33662190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 33762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setWantClientAuth(boolean want) { 33862190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setWantClientAuth(want); 33962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 34062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 34162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 34262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean getNeedClientAuth() { 34362190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getNeedClientAuth(); 34462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 34562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 34662190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 34762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean getWantClientAuth() { 34862190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getWantClientAuth(); 34962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 35062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 35162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 35262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setEnableSessionCreation(boolean flag) { 35362190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setEnableSessionCreation(flag); 35462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 35562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 35662190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 35762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public boolean getEnableSessionCreation() { 35862190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getEnableSessionCreation(); 35962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 36062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 36162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 36262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public SSLParameters getSSLParameters() { 36362190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getSSLParameters(); 36462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 36562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 36662190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 36762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setSSLParameters(SSLParameters p) { 36862190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setSSLParameters(p); 36962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 37062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 37162190cd439f163c7a53604b01836a576ef88013aChad Brubaker // OpenSSLSocket methods. 37262190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 37362190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void clientCertificateRequested(byte[] keyTypeBytes, byte[][] asn1DerEncodedPrincipals) 37462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throws CertificateEncodingException, SSLException { 37562190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Shouldn't be here!"); 37662190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 37762190cd439f163c7a53604b01836a576ef88013aChad Brubaker 37862190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 37962190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void handshakeCompleted() { 38062190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Shouldn't be here!"); 38162190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 38262190cd439f163c7a53604b01836a576ef88013aChad Brubaker 38362190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 38462190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void verifyCertificateChain(byte[][] bytes, String authMethod) 38562190cd439f163c7a53604b01836a576ef88013aChad Brubaker throws CertificateException { 38662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Shouldn't be here!"); 38762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 38862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 38962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 39062190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setUseSessionTickets(boolean useSessionTickets) { 39162190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setUseSessionTickets(useSessionTickets); 39262190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 39362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 39462190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 39562190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setHostname(String hostname) { 39662190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setHostname(hostname); 39762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 39862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 39962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 40062190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setChannelIdEnabled(boolean enabled) { 40162190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setChannelIdEnabled(enabled); 40262190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 40362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 40462190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 40562190cd439f163c7a53604b01836a576ef88013aChad Brubaker public byte[] getChannelId() throws SSLException { 40662190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getChannelId(); 40762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 40862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 40962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 41062190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setChannelIdPrivateKey(PrivateKey privateKey) { 41162190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setChannelIdPrivateKey(privateKey); 41262190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 41362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 41462190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 41562190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setSoWriteTimeout(int writeTimeoutMilliseconds) throws SocketException { 41662190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setSoWriteTimeout(writeTimeoutMilliseconds); 41762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 41862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 41962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 42062190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getSoWriteTimeout() throws SocketException { 42162190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getSoWriteTimeout(); 42262190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 42362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 42462190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 42562190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setHandshakeTimeout(int handshakeTimeoutMilliseconds) throws SocketException { 42662190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setHandshakeTimeout(handshakeTimeoutMilliseconds); 42762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 42862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 42962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 43062190cd439f163c7a53604b01836a576ef88013aChad Brubaker public byte[] getNpnSelectedProtocol() { 43162190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getNpnSelectedProtocol(); 43262190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 43362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 43462190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override 43562190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setNpnProtocols(byte[] npnProtocols) { 43662190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setNpnProtocols(npnProtocols); 43762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 43862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 43962190cd439f163c7a53604b01836a576ef88013aChad Brubaker // These aren't in the Platform's OpenSSLSocketImpl but we have them to support duck typing. 44062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 44162190cd439f163c7a53604b01836a576ef88013aChad Brubaker public byte[] getAlpnSelectedProtocol() { 44262190cd439f163c7a53604b01836a576ef88013aChad Brubaker return delegate.getAlpnSelectedProtocol(); 44362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 44462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 44562190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setAlpnProtocols(byte[] alpnProtocols) { 44662190cd439f163c7a53604b01836a576ef88013aChad Brubaker delegate.setAlpnProtocols(alpnProtocols); 44762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 44862190cd439f163c7a53604b01836a576ef88013aChad Brubaker} 449