/** * @see ProtocolSocketFactory#createSocket(java.lang.String, int, java.net.InetAddress, int) */ @Override public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException { Socket socket = mSslContext.getSocketFactory().createSocket(getInetAddressForHost(host), port, clientHost, clientPort); enableSecureProtocols(socket); verifyPeerIdentity(host, port, socket); return socket; }
@Override public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException { Socket sslSocket = mSslContext.getSocketFactory().createSocket(socket, host, port, autoClose); enableSecureProtocols(sslSocket); verifyPeerIdentity(host, port, sslSocket); return sslSocket; }
public static AdvancedSslSocketFactory getAdvancedSslSocketFactory(Context context) throws GeneralSecurityException, IOException { if (mAdvancedSslSocketFactory == null) { KeyStore trustStore = getKnownServersStore(context); AdvancedX509TrustManager trustMgr = new AdvancedX509TrustManager(trustStore); TrustManager[] tms = new TrustManager[] { trustMgr }; SSLContext sslContext; try { sslContext = SSLContext.getInstance("TLSv1.2"); } catch (NoSuchAlgorithmException e) { Log_OC.w(TAG, "TLSv1.2 is not supported in this device; falling through TLSv1.0"); sslContext = SSLContext.getInstance("TLSv1"); // should be available in any device; see reference of supported protocols in // http://developer.android.com/reference/javax/net/ssl/SSLSocket.html } sslContext.init(null, tms, null); mHostnameVerifier = new BrowserCompatHostnameVerifier(); mAdvancedSslSocketFactory = new AdvancedSslSocketFactory(sslContext, trustMgr, mHostnameVerifier); } return mAdvancedSslSocketFactory; }
/** * @see ProtocolSocketFactory#createSocket(java.lang.String, int) */ @Override public Socket createSocket(String host, int port) throws IOException { Log_OC.d(TAG, "Creating SSL Socket with remote " + host + ":" + port); Socket socket = mSslContext.getSocketFactory().createSocket(getInetAddressForHost(host), port); enableSecureProtocols(socket); verifyPeerIdentity(host, port, socket); return socket; }
Log_OC.d(TAG, " ... with connection timeout " + timeout + " and socket timeout " + params.getSoTimeout()); Socket socket = socketfactory.createSocket(); enableSecureProtocols(socket); SocketAddress localaddr = new InetSocketAddress(localAddress, localPort); SocketAddress remoteaddr = new InetSocketAddress(getInetAddressForHost(host), port); socket.setSoTimeout(params.getSoTimeout() * 5); socket.bind(localaddr); ServerNameIndicator.setServerNameIndication(host, (SSLSocket) socket); socket.connect(remoteaddr, timeout); verifyPeerIdentity(host, port, socket); return socket;