@@ -28,7 +28,6 @@ import android.content.Context
28
28
import com.google.common.base.MoreObjects
29
29
import de.duenndns.ssl.MemorizingTrustManager
30
30
import li.klass.fhem.connection.backend.FHEMServerSpec
31
- import li.klass.fhem.util.CloseableUtil
32
31
import org.slf4j.LoggerFactory
33
32
import java.io.File
34
33
import java.io.FileInputStream
@@ -45,8 +44,8 @@ class MemorizingTrustManagerContextInitializer {
45
44
val clientCertificate = File (serverSpec.clientCertificatePath)
46
45
val clientCertificatePassword = serverSpec.clientCertificatePassword
47
46
48
- logger.info(" init - client certificate exists=${clientCertificate.exists()} " )
49
- if (clientCertificate.exists()) {
47
+ logger.info(" init - client certificate exists=${clientCertificate.exists()} , canRead= ${clientCertificate.canRead()} " )
48
+ if (clientCertificate.exists() && clientCertificate.canRead() ) {
50
49
val keyStore = loadPKCS12KeyStore(clientCertificate, clientCertificatePassword)
51
50
val keyManagerFactory = KeyManagerFactory .getInstance(" X509" )
52
51
keyManagerFactory.init (keyStore, MoreObjects .firstNonNull(clientCertificatePassword, " " ).toCharArray())
@@ -68,18 +67,12 @@ class MemorizingTrustManagerContextInitializer {
68
67
69
68
70
69
@Throws(Exception ::class )
71
- private fun loadPKCS12KeyStore (certificateFile : File , clientCertPassword : String? ): KeyStore ? {
72
- val keyStore: KeyStore ?
73
- var fileInputStream: FileInputStream ? = null
74
- try {
75
- keyStore = KeyStore .getInstance(" PKCS12" )
76
- fileInputStream = FileInputStream (certificateFile)
77
- keyStore!! .load(fileInputStream, clientCertPassword!! .toCharArray())
78
- } finally {
79
- CloseableUtil .close(fileInputStream)
80
- }
81
- return keyStore
82
- }
70
+ private fun loadPKCS12KeyStore (certificateFile : File , clientCertPassword : String? ): KeyStore ? =
71
+ FileInputStream (certificateFile).use {
72
+ KeyStore .getInstance(" PKCS12" ).apply {
73
+ load(it, clientCertPassword?.toCharArray())
74
+ }
75
+ }
83
76
84
77
data class Initialized (val socketFactory : SSLSocketFactory , val hostnameVerifier : HostnameVerifier , val trustManager : X509TrustManager )
85
78
0 commit comments