Coverage Summary for Class: CustomSSLSocketFactory (dev.suresh.tls)

Class Class, % Method, % Branch, % Line, % Instruction, %
CustomSSLSocketFactory 0% (0/1) 0% (0/8) 0% (0/8) 0% (0/72)


 package dev.suresh.tls
 
 import java.net.InetAddress
 import java.net.Socket
 import javax.net.ssl.SSLSocket
 import javax.net.ssl.SSLSocketFactory
 
 class CustomSSLSocketFactory(private val delegate: SSLSocketFactory) : SSLSocketFactory() {
   override fun getDefaultCipherSuites(): Array<String> = delegate.defaultCipherSuites
 
   override fun getSupportedCipherSuites(): Array<String> = delegate.supportedCipherSuites
 
   override fun createSocket(s: Socket, host: String, port: Int, autoClose: Boolean): Socket =
       delegate.createSocket(s, host, port, autoClose).apply { reconfigureSSLSocket() }
 
   override fun createSocket(host: String, port: Int): Socket =
       delegate.createSocket(host, port).apply { reconfigureSSLSocket() }
 
   override fun createSocket(
       host: String,
       port: Int,
       localHost: InetAddress,
       localPort: Int
   ): Socket =
       delegate.createSocket(host, port, localHost, localPort).apply { reconfigureSSLSocket() }
 
   override fun createSocket(host: InetAddress, port: Int): Socket =
       delegate.createSocket(host, port).apply { reconfigureSSLSocket() }
 
   override fun createSocket(
       address: InetAddress,
       port: Int,
       localAddress: InetAddress,
       localPort: Int
   ): Socket =
       delegate.createSocket(address, port, localAddress, localPort).apply { reconfigureSSLSocket() }
 }
 
 fun Socket.reconfigureSSLSocket() {
   val sslSock = this as SSLSocket
   val sslParams = sslSock.sslParameters
   // Disable SNI
   sslParams.serverNames = emptyList()
   // Disable Hostname verification (Same as -Djdk.internal.httpclient.disableHostnameVerification)
   sslParams.endpointIdentificationAlgorithm = null
   sslParameters = sslParams
 }