@@ -19,6 +19,10 @@ fun OkHttpClient.Builder.installMacOsTrustManager() = installHybridTrustManager
1919 getMacOsTrustManager()
2020}
2121
22+ fun OkHttpClient.Builder.installWindowsTrustManager () = installHybridTrustManager {
23+ getWindowsTrustManager()
24+ }
25+
2226private inline fun OkHttpClient.Builder.installHybridTrustManager (
2327 fallback : () -> X509TrustManager = { getDefaultTrustManager() },
2428 primary : () -> X509TrustManager ,
@@ -55,6 +59,16 @@ private fun getMacOsTrustManager() = run {
5559 appleTm
5660}
5761
62+ private fun getWindowsTrustManager () = run {
63+ val winFactory = TrustManagerFactory .getInstance(TrustManagerFactory .getDefaultAlgorithm())
64+ val winKeyStore = KeyStore .getInstance(" Windows-MY" )
65+ winKeyStore.load(null , null )
66+ winFactory.init (winKeyStore)
67+ val winTm = winFactory.trustManagers
68+ .first { it is X509TrustManager } as X509TrustManager
69+ winTm
70+ }
71+
5872/* *
5973 * A TrustManager that delegates to a primary manager, and falls back
6074 * to a secondary manager if the primary fails validation.
@@ -65,8 +79,10 @@ private class HybridTrustManager(
6579) : X509TrustManager {
6680 override fun checkServerTrusted (chain : Array <out X509Certificate >? , authType : String? ) {
6781 try {
82+ println (" ??? BEFORE" )
6883 primary.checkServerTrusted(chain, authType)
6984 } catch (_: CertificateException ) {
85+ println (" ??? CHECK FAILED" )
7086 secondary.checkServerTrusted(chain, authType)
7187 }
7288 }
0 commit comments