@@ -6,55 +6,20 @@ import io.snabble.sdk.auth.useragent.UserAgentInterceptor
66import io.snabble.sdk.utils.LetsEncryptCertHelper
77import io.snabble.sdk.utils.Logger
88import okhttp3.Cache
9- import okhttp3.CertificatePinner
109import okhttp3.OkHttpClient
1110import java.util.concurrent.TimeUnit
1211
1312@RestrictTo(RestrictTo .Scope .LIBRARY )
1413internal object OkHttpClientFactory {
15- private val PINS = arrayOf(
16- " sha256/YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=" , // Let's Encrypt X3 cross-signed
17- " sha256/sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis=" , // Let's Encrypt X4 cross-signed
18- " sha256/J2/oqMTsdhFWW/n85tys6b4yDBtb6idZayIEBx7QTxA=" , // Let's Encrypt E1
19- " sha256/vZNucrIS7293MQLGt304+UKXMi78JTlrwyeUIuDIknA=" , // Let's Encrypt E2
20- " sha256/jQJTbIh0grw0/1TkHSumWb+Fs0Ggogr621gT3PvPKG0=" , // Let's Encrypt R3 cross-signed
21- " sha256/5VReIRNHJBiRxVSgOTTN6bdJZkpZ0m1hX+WPd5kPLQM=" , // Let's Encrypt R4 cross-signed
22- // backup CAs
23- " sha256/C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M=" , // ISRG Root X1
24- " sha256/lCppFqbkrlJ3EcVFAkeip0+44VaoJUymbnOaEUk7tEU=" , // AddTrust External Root
25- " sha256/r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E=" , // DigiCert Global Root
26- " sha256/i7WTqTvh0OioIruIfFR4kMPnBqrS2rdiVPl/s2uC/CY=" , // DigiCert Global Root G2
27- " sha256/WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=" , // DigiCert HA Root
28- " sha256/h6801m+z8v3zbgkRHpq6L29Esgfzhj89C1SyUCOQmqU=" , // GeoTrust Global
29- " sha256/q5hJUnat8eyv8o81xTBIeB5cFxjaucjmelBPT2pRMo8=" , // GeoTrust PCA G3 Root
30- " sha256/47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" , // GeoTrust PCA G4
31- " sha256/SQVGZiOrQXi+kqxcvWWE96HhfydlLVqFr4lQTqI5qqo=" // GeoTrust PCA
32- )
3314
3415 @RestrictTo(RestrictTo .Scope .LIBRARY )
35- internal fun createOkHttpClient (application : Application ): OkHttpClient {
36- val builder = OkHttpClient .Builder ()
37- builder.cache(Cache (application.cacheDir, 10 * 1024 * 1024 ))
38- builder.retryOnConnectionFailure(true )
39- builder.pingInterval(5 , TimeUnit .SECONDS ) // workaround for https://github.com/square/okhttp/issues/3146
40- builder.addInterceptor(OkHttpLogger { message: String? ->
41- Logger .i(message)
42- })
43- Snabble .config.networkInterceptor?.let {
44- builder.addNetworkInterceptor(it)
45- }
46- builder.addInterceptor(UserAgentInterceptor (application))
47- if (! Snabble .config.disableCertificatePinning) {
48- val environments = Environment .values()
49- builder.certificatePinner(CertificatePinner .Builder ().apply {
50- PINS .forEach { pin ->
51- environments.forEach { env ->
52- add(env.wildcardUrl, pin)
53- }
54- }
55- }.build())
56- }
57- LetsEncryptCertHelper .addLetsEncryptCertificatesForMarshmallowOrEarlier(builder)
58- return builder.build()
59- }
16+ internal fun createOkHttpClient (application : Application ): OkHttpClient = OkHttpClient .Builder ()
17+ .cache(Cache (application.cacheDir, 10 * 1024 * 1024 ))
18+ .retryOnConnectionFailure(true )
19+ .pingInterval(5 , TimeUnit .SECONDS ) // workaround for https://github.com/square/okhttp/issues/3146
20+ .addInterceptor(OkHttpLogger { message: String? -> Logger .i(message) })
21+ .addInterceptor(UserAgentInterceptor (application))
22+ .apply { Snabble .config.networkInterceptor?.let { addNetworkInterceptor(it) } }
23+ .apply { LetsEncryptCertHelper .addLetsEncryptCertificatesForMarshmallowOrEarlier(this ) }
24+ .build()
6025}
0 commit comments