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 Brubakerpackage com.android.org.conscrypt; 1762190cd439f163c7a53604b01836a576ef88013aChad Brubaker 1862190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.io.FileDescriptor; 1962190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.io.IOException; 2062190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.io.InputStream; 2162190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.io.OutputStream; 2262190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.net.InetAddress; 2362190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.net.Socket; 2462190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.net.SocketException; 2562190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.security.PrivateKey; 2662190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.security.cert.CertificateEncodingException; 2762190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport java.security.cert.CertificateException; 2862190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.HandshakeCompletedEvent; 2962190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.HandshakeCompletedListener; 3062190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.SSLException; 3162190cd439f163c7a53604b01836a576ef88013aChad Brubakerimport javax.net.ssl.SSLSession; 3262190cd439f163c7a53604b01836a576ef88013aChad Brubaker 3362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 3462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 3562190cd439f163c7a53604b01836a576ef88013aChad Brubaker/** 3662190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Implementation of the class OpenSSLSocketImpl based on OpenSSL. 3762190cd439f163c7a53604b01836a576ef88013aChad Brubaker * <p> 3862190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Extensions to SSLSocket include: 3962190cd439f163c7a53604b01836a576ef88013aChad Brubaker * <ul> 4062190cd439f163c7a53604b01836a576ef88013aChad Brubaker * <li>handshake timeout 4162190cd439f163c7a53604b01836a576ef88013aChad Brubaker * <li>session tickets 4262190cd439f163c7a53604b01836a576ef88013aChad Brubaker * <li>Server Name Indication 4362190cd439f163c7a53604b01836a576ef88013aChad Brubaker * </ul> 4462190cd439f163c7a53604b01836a576ef88013aChad Brubaker */ 4562190cd439f163c7a53604b01836a576ef88013aChad Brubakerpublic class OpenSSLSocketImpl 4662190cd439f163c7a53604b01836a576ef88013aChad Brubaker extends javax.net.ssl.SSLSocket 4762190cd439f163c7a53604b01836a576ef88013aChad Brubaker implements NativeCrypto.SSLHandshakeCallbacks { 4862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 4962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 5062190cd439f163c7a53604b01836a576ef88013aChad Brubaker protected OpenSSLSocketImpl(SSLParametersImpl sslParameters) throws IOException { 5162190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 5262190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 5362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 5462190cd439f163c7a53604b01836a576ef88013aChad Brubaker protected OpenSSLSocketImpl(SSLParametersImpl sslParameters, 5562190cd439f163c7a53604b01836a576ef88013aChad Brubaker String[] enabledProtocols, 5662190cd439f163c7a53604b01836a576ef88013aChad Brubaker String[] enabledCipherSuites) throws IOException { 5762190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 5862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 5962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 6062190cd439f163c7a53604b01836a576ef88013aChad Brubaker protected OpenSSLSocketImpl(String host, int port, SSLParametersImpl sslParameters) 6162190cd439f163c7a53604b01836a576ef88013aChad Brubaker throws IOException { 6262190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 6362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 6462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 6562190cd439f163c7a53604b01836a576ef88013aChad Brubaker protected OpenSSLSocketImpl(InetAddress address, int port, SSLParametersImpl sslParameters) 6662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throws IOException { 6762190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 6862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 6962190cd439f163c7a53604b01836a576ef88013aChad Brubaker 7062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 7162190cd439f163c7a53604b01836a576ef88013aChad Brubaker protected OpenSSLSocketImpl(String host, int port, 7262190cd439f163c7a53604b01836a576ef88013aChad Brubaker InetAddress clientAddress, int clientPort, 7362190cd439f163c7a53604b01836a576ef88013aChad Brubaker SSLParametersImpl sslParameters) throws IOException { 7462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 7562190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 7662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 7762190cd439f163c7a53604b01836a576ef88013aChad Brubaker protected OpenSSLSocketImpl(InetAddress address, int port, 7862190cd439f163c7a53604b01836a576ef88013aChad Brubaker InetAddress clientAddress, int clientPort, 7962190cd439f163c7a53604b01836a576ef88013aChad Brubaker SSLParametersImpl sslParameters) throws IOException { 8062190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 8162190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 8262190cd439f163c7a53604b01836a576ef88013aChad Brubaker 8362190cd439f163c7a53604b01836a576ef88013aChad Brubaker protected OpenSSLSocketImpl(Socket socket, String host, int port, 8462190cd439f163c7a53604b01836a576ef88013aChad Brubaker boolean autoClose, SSLParametersImpl sslParameters) throws IOException { 8562190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 8662190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 8762190cd439f163c7a53604b01836a576ef88013aChad Brubaker 8862190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public synchronized void startHandshake() throws IOException { 8962190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 9062190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 9162190cd439f163c7a53604b01836a576ef88013aChad Brubaker 9262190cd439f163c7a53604b01836a576ef88013aChad Brubaker @SuppressWarnings("unused") // used by NativeCrypto.SSLHandshakeCallbacks / client_cert_cb 9362190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void clientCertificateRequested(byte[] keyTypeBytes, byte[][] asn1DerEncodedPrincipals) 9462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throws CertificateEncodingException, SSLException { 9562190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 9662190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 9762190cd439f163c7a53604b01836a576ef88013aChad Brubaker 9862190cd439f163c7a53604b01836a576ef88013aChad Brubaker @SuppressWarnings("unused") // used by NativeCrypto.SSLHandshakeCallbacks / info_callback 9962190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void handshakeCompleted() { 10062190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 10162190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 10262190cd439f163c7a53604b01836a576ef88013aChad Brubaker @SuppressWarnings("unused") // used by NativeCrypto.SSLHandshakeCallbacks 10362190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void verifyCertificateChain(byte[][] bytes, String authMethod) 10462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throws CertificateException { 10562190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 10662190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 10762190cd439f163c7a53604b01836a576ef88013aChad Brubaker 10862190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public InputStream getInputStream() throws IOException { 10962190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 11062190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 11162190cd439f163c7a53604b01836a576ef88013aChad Brubaker 11262190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public OutputStream getOutputStream() throws IOException { 11362190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 11462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 11562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public SSLSession getSession() { 11662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 11762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 11862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 11962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void addHandshakeCompletedListener( 12062190cd439f163c7a53604b01836a576ef88013aChad Brubaker HandshakeCompletedListener listener) { 12162190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 12262190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 12362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 12462190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void removeHandshakeCompletedListener( 12562190cd439f163c7a53604b01836a576ef88013aChad Brubaker HandshakeCompletedListener listener) { 12662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 12762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 12862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 12962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public boolean getEnableSessionCreation() { 13062190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 13162190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 13262190cd439f163c7a53604b01836a576ef88013aChad Brubaker 13362190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void setEnableSessionCreation(boolean flag) { 13462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 13562190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 13662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 13762190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public String[] getSupportedCipherSuites() { 13862190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 13962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 14062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 14162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public String[] getEnabledCipherSuites() { 14262190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 14362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 14462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 14562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void setEnabledCipherSuites(String[] suites) { 14662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 14762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 14862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 14962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public String[] getSupportedProtocols() { 15062190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 15162190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 15262190cd439f163c7a53604b01836a576ef88013aChad Brubaker 15362190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public String[] getEnabledProtocols() { 15462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 15562190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 15662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 15762190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void setEnabledProtocols(String[] protocols) { 15862190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 15962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 16062190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setUseSessionTickets(boolean useSessionTickets) { 16162190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 16262190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 16362190cd439f163c7a53604b01836a576ef88013aChad Brubaker 16462190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setHostname(String hostname) { 16562190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 16662190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 16762190cd439f163c7a53604b01836a576ef88013aChad Brubaker 16862190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setChannelIdEnabled(boolean enabled) { 16962190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 17062190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 17162190cd439f163c7a53604b01836a576ef88013aChad Brubaker 17262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public byte[] getChannelId() throws SSLException { 17362190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 17462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 17562190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setChannelIdPrivateKey(PrivateKey privateKey) { 17662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 17762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 17862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 17962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public boolean getUseClientMode() { 18062190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 18162190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 18262190cd439f163c7a53604b01836a576ef88013aChad Brubaker 18362190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void setUseClientMode(boolean mode) { 18462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 18562190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 18662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 18762190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public boolean getWantClientAuth() { 18862190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 18962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 19062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 19162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public boolean getNeedClientAuth() { 19262190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 19362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 19462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 19562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void setNeedClientAuth(boolean need) { 19662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 19762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 19862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 19962190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void setWantClientAuth(boolean want) { 20062190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 20162190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 20262190cd439f163c7a53604b01836a576ef88013aChad Brubaker 20362190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void sendUrgentData(int data) throws IOException { 20462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 20562190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 20662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 20762190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void setOOBInline(boolean on) throws SocketException { 20862190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 20962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 21062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 21162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void setSoTimeout(int readTimeoutMilliseconds) throws SocketException { 21262190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 21362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 21462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 21562190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public int getSoTimeout() throws SocketException { 21662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 21762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 21862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 21962190cd439f163c7a53604b01836a576ef88013aChad Brubaker /** 22062190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Note write timeouts are not part of the javax.net.ssl.SSLSocket API 22162190cd439f163c7a53604b01836a576ef88013aChad Brubaker */ 22262190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setSoWriteTimeout(int writeTimeoutMilliseconds) throws SocketException { 22362190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 22462190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 22562190cd439f163c7a53604b01836a576ef88013aChad Brubaker 22662190cd439f163c7a53604b01836a576ef88013aChad Brubaker /** 22762190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Note write timeouts are not part of the javax.net.ssl.SSLSocket API 22862190cd439f163c7a53604b01836a576ef88013aChad Brubaker */ 22962190cd439f163c7a53604b01836a576ef88013aChad Brubaker public int getSoWriteTimeout() throws SocketException { 23062190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 23162190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 23262190cd439f163c7a53604b01836a576ef88013aChad Brubaker 23362190cd439f163c7a53604b01836a576ef88013aChad Brubaker /** 23462190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Set the handshake timeout on this socket. This timeout is specified in 23562190cd439f163c7a53604b01836a576ef88013aChad Brubaker * milliseconds and will be used only during the handshake process. 23662190cd439f163c7a53604b01836a576ef88013aChad Brubaker */ 23762190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setHandshakeTimeout(int handshakeTimeoutMilliseconds) throws SocketException { 23862190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 23962190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 24062190cd439f163c7a53604b01836a576ef88013aChad Brubaker 24162190cd439f163c7a53604b01836a576ef88013aChad Brubaker @Override public void close() throws IOException { 24262190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 24362190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 24462190cd439f163c7a53604b01836a576ef88013aChad Brubaker 24562190cd439f163c7a53604b01836a576ef88013aChad Brubaker public FileDescriptor getFileDescriptor$() { 24662190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 24762190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 24862190cd439f163c7a53604b01836a576ef88013aChad Brubaker 24962190cd439f163c7a53604b01836a576ef88013aChad Brubaker /** 25062190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Returns the protocol agreed upon by client and server, or null if no 25162190cd439f163c7a53604b01836a576ef88013aChad Brubaker * protocol was agreed upon. 25262190cd439f163c7a53604b01836a576ef88013aChad Brubaker */ 25362190cd439f163c7a53604b01836a576ef88013aChad Brubaker public byte[] getNpnSelectedProtocol() { 25462190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 25562190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 25662190cd439f163c7a53604b01836a576ef88013aChad Brubaker 25762190cd439f163c7a53604b01836a576ef88013aChad Brubaker /** 25862190cd439f163c7a53604b01836a576ef88013aChad Brubaker * Sets the list of protocols this peer is interested in. If null no 25962190cd439f163c7a53604b01836a576ef88013aChad Brubaker * protocols will be used. 26062190cd439f163c7a53604b01836a576ef88013aChad Brubaker * 26162190cd439f163c7a53604b01836a576ef88013aChad Brubaker * @param npnProtocols a non-empty array of protocol names. From 26262190cd439f163c7a53604b01836a576ef88013aChad Brubaker * SSL_select_next_proto, "vector of 8-bit, length prefixed byte 26362190cd439f163c7a53604b01836a576ef88013aChad Brubaker * strings. The length byte itself is not included in the length. A byte 26462190cd439f163c7a53604b01836a576ef88013aChad Brubaker * string of length 0 is invalid. No byte string may be truncated.". 26562190cd439f163c7a53604b01836a576ef88013aChad Brubaker */ 26662190cd439f163c7a53604b01836a576ef88013aChad Brubaker public void setNpnProtocols(byte[] npnProtocols) { 26762190cd439f163c7a53604b01836a576ef88013aChad Brubaker throw new RuntimeException("Stub!"); 26862190cd439f163c7a53604b01836a576ef88013aChad Brubaker } 26962190cd439f163c7a53604b01836a576ef88013aChad Brubaker} 270