Skip to content

Commit 44916cc

Browse files
committed
Bring back hostnameVerifierClass used in Pekko < v2 and Akka <= v2.8
1 parent 93cb746 commit 44916cc

File tree

1 file changed

+14
-1
lines changed
  • ssl-config-core/src/main/scala/com/typesafe/sslconfig/ssl

1 file changed

+14
-1
lines changed

ssl-config-core/src/main/scala/com/typesafe/sslconfig/ssl/Config.scala

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import java.net.URL
99
import java.security.KeyStore
1010
import java.security.SecureRandom
1111
import java.util.Optional
12+
import javax.net.ssl.HostnameVerifier
1213
import javax.net.ssl.KeyManagerFactory
1314
import javax.net.ssl.TrustManagerFactory
1415

@@ -306,6 +307,7 @@ object SSLLooseConfig {
306307
* @param enabledProtocols If defined, override the platform default protocols.
307308
* @param keyManagerConfig The key manager configuration.
308309
* @param trustManagerConfig The trust manager configuration.
310+
* @param hostnameVerifierClass The hostname verifier class.
309311
* @param secureRandom The SecureRandom instance to use. Let the platform choose if None.
310312
* @param debug The debug config.
311313
* @param loose Loose configuratino parameters
@@ -319,6 +321,7 @@ final class SSLConfigSettings private[sslconfig] (
319321
val enabledProtocols: Option[immutable.Seq[String]] = Some(List("TLSv1.3", "TLSv1.2")),
320322
val keyManagerConfig: KeyManagerConfig = KeyManagerConfig(),
321323
val trustManagerConfig: TrustManagerConfig = TrustManagerConfig(),
324+
val hostnameVerifierClass: Class[? <: HostnameVerifier] = classOf[NoopHostnameVerifier],
322325
val secureRandom: Option[SecureRandom] = None,
323326
val debug: SSLDebugConfig = SSLDebugConfig(),
324327
val loose: SSLLooseConfig = SSLLooseConfig()
@@ -331,6 +334,8 @@ final class SSLConfigSettings private[sslconfig] (
331334
copy(enabledCipherSuites = value)
332335
def withEnabledProtocols(value: Option[scala.collection.immutable.Seq[String]]): SSLConfigSettings =
333336
copy(enabledProtocols = value)
337+
def withHostnameVerifierClass(value: Class[? <: javax.net.ssl.HostnameVerifier]): SSLConfigSettings =
338+
copy(hostnameVerifierClass = value)
334339
def withKeyManagerConfig(value: com.typesafe.sslconfig.ssl.KeyManagerConfig): SSLConfigSettings =
335340
copy(keyManagerConfig = value)
336341
def withLoose(value: com.typesafe.sslconfig.ssl.SSLLooseConfig): SSLConfigSettings = copy(loose = value)
@@ -347,6 +352,7 @@ final class SSLConfigSettings private[sslconfig] (
347352
default: Boolean = default,
348353
enabledCipherSuites: Option[scala.collection.immutable.Seq[String]] = enabledCipherSuites,
349354
enabledProtocols: Option[scala.collection.immutable.Seq[String]] = enabledProtocols,
355+
hostnameVerifierClass: Class[? <: javax.net.ssl.HostnameVerifier] = hostnameVerifierClass,
350356
keyManagerConfig: com.typesafe.sslconfig.ssl.KeyManagerConfig = keyManagerConfig,
351357
loose: com.typesafe.sslconfig.ssl.SSLLooseConfig = loose,
352358
protocol: String = protocol,
@@ -359,6 +365,7 @@ final class SSLConfigSettings private[sslconfig] (
359365
default = default,
360366
enabledCipherSuites = enabledCipherSuites,
361367
enabledProtocols = enabledProtocols,
368+
hostnameVerifierClass = hostnameVerifierClass,
362369
keyManagerConfig = keyManagerConfig,
363370
loose = loose,
364371
protocol = protocol,
@@ -368,7 +375,7 @@ final class SSLConfigSettings private[sslconfig] (
368375
)
369376

370377
override def toString =
371-
s"""SSLConfig(${checkRevocation},${debug},${default},${enabledCipherSuites},${enabledProtocols},${keyManagerConfig},${loose},${protocol},${revocationLists},${secureRandom},${trustManagerConfig})"""
378+
s"""SSLConfig(${checkRevocation},${debug},${default},${enabledCipherSuites},${enabledProtocols},${hostnameVerifierClass},${keyManagerConfig},${loose},${protocol},${revocationLists},${secureRandom},${trustManagerConfig})"""
372379
}
373380
object SSLConfigSettings {
374381
def apply() = new SSLConfigSettings()
@@ -419,6 +426,11 @@ class SSLConfigParser(c: EnrichedConfig, classLoader: ClassLoader, loggerFactory
419426
val ciphers = Some(c.getSeq[String]("enabledCipherSuites")).filter(_.nonEmpty)
420427
val protocols = Some(c.getSeq[String]("enabledProtocols")).filter(_.nonEmpty)
421428

429+
val hostnameVerifierClass = c.getOptional[String]("hostnameVerifierClass") match {
430+
case None => classOf[NoopHostnameVerifier]
431+
case Some(fqcn) => classLoader.loadClass(fqcn).asSubclass(classOf[HostnameVerifier])
432+
}
433+
422434
val keyManagers = parseKeyManager(c.get[EnrichedConfig]("keyManager"))
423435

424436
val trustManagers = parseTrustManager(c.get[EnrichedConfig]("trustManager"))
@@ -431,6 +443,7 @@ class SSLConfigParser(c: EnrichedConfig, classLoader: ClassLoader, loggerFactory
431443
enabledCipherSuites = ciphers,
432444
enabledProtocols = protocols,
433445
keyManagerConfig = keyManagers,
446+
hostnameVerifierClass = hostnameVerifierClass,
434447
trustManagerConfig = trustManagers,
435448
secureRandom = None,
436449
debug = debug,

0 commit comments

Comments
 (0)