import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * Created by on 21. 4. 2017.
 * Modified by on 10. 8. 2022. for testing SSLContext.init(null, null, null)
 */
public class SSLPoke {

    public static void main(String[] args) {

        try {
            SSLContext sslContext = SSLContext.getInstance("TLS");
            SSLContext defaultSslContext = SSLContext.getDefault();
            sslContext.init(null, null, null);
            SSLSocketFactory sslsocketfactory = sslContext.getSocketFactory(); // change sslContext to defaultSslContext for control run
            SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("www.google.com", 443);
            InputStream in = sslsocket.getInputStream();
            OutputStream out = sslsocket.getOutputStream();

            // Write a test byte to get a reaction :)
            out.write(1);

            while (in.available() > 0) {
                System.out.print(in.read());
            }
            System.out.println("Successfully connected");

        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
} 