package play.api.libs.ws
import java.security.cert.{ PKIXCertPathValidatorResult, CertPathValidatorResult, Certificate, X509Certificate }
import scala.util.Properties.{ isJavaAtLeast, javaVmName }
package object ssl {
import scala.language.implicitConversions
implicit def certificate2X509Certificate(cert: java.security.cert.Certificate): X509Certificate = {
cert.asInstanceOf[X509Certificate]
}
implicit def arrayCertsToListCerts(chain: Array[Certificate]): java.util.List[Certificate] = {
import scala.collection.JavaConverters._
chain.toList.asJava
}
implicit def certResult2PKIXResult(result: CertPathValidatorResult): PKIXCertPathValidatorResult = {
result.asInstanceOf[PKIXCertPathValidatorResult]
}
def debugChain(chain: Array[X509Certificate]): Seq[String] = {
chain.map {
cert =>
s"${cert.getSubjectDN.getName}"
}
}
def foldVersion[T](run16: => T, runHigher: => T): T = {
System.getProperty("java.specification.version") match {
case "1.6" =>
run16
case higher =>
runHigher
}
}
def isOpenJdk: Boolean = javaVmName contains "OpenJDK"
def foldRuntime[T](older: => T, newer: => T): T = {
if (isJavaAtLeast("1.7") || isOpenJdk) newer else older
}
}