Skip to content

Commit cac01d6

Browse files
committed
Repair client certificates without password #1264
1 parent a00d1f6 commit cac01d6

File tree

4 files changed

+14
-20
lines changed

4 files changed

+14
-20
lines changed

app/build-includes/release.gradle

+4-3
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ play {
5151
}
5252

5353
release {
54-
buildTasks = ['generateWhatsNew', 'build', 'uploadToPlayStore', 'githubRelease']
5554
versionPropertyFile = '../gradle.properties'
5655
versionProperties = ['version']
5756
failOnSnapshotDependencies = false
@@ -69,16 +68,18 @@ release {
6968

7069
task releaseBeta {
7170
play.track = 'beta'
71+
release.buildTasks = ['generateWhatsNew', 'build', 'uploadToPlayStore']
7272
ext.newReleaseVersion = getNextVersion(project) + "-BETA"
7373
}
74+
releaseBeta.dependsOn("release")
7475

75-
releaseBeta.dependsOn(release)
7676
task releaseProd {
7777
play.track = 'production'
78+
release.buildTasks = ['generateWhatsNew', 'build', 'uploadToPlayStore', 'githubRelease']
7879
ext.newReleaseVersion = getNextVersion(project)
7980
afterReleaseBuild.dependsOn("resetWhatsNew")
8081
}
81-
releaseBeta.dependsOn(release)
82+
releaseProd.dependsOn("release")
8283

8384
task uploadToPlayStore
8485
uploadToPlayStore.dependsOn {

app/src/main/java/li/klass/fhem/connection/backend/ssl/MemorizingTrustManagerContextInitializer.kt

+8-15
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import android.content.Context
2828
import com.google.common.base.MoreObjects
2929
import de.duenndns.ssl.MemorizingTrustManager
3030
import li.klass.fhem.connection.backend.FHEMServerSpec
31-
import li.klass.fhem.util.CloseableUtil
3231
import org.slf4j.LoggerFactory
3332
import java.io.File
3433
import java.io.FileInputStream
@@ -45,8 +44,8 @@ class MemorizingTrustManagerContextInitializer {
4544
val clientCertificate = File(serverSpec.clientCertificatePath)
4645
val clientCertificatePassword = serverSpec.clientCertificatePassword
4746

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()) {
5049
val keyStore = loadPKCS12KeyStore(clientCertificate, clientCertificatePassword)
5150
val keyManagerFactory = KeyManagerFactory.getInstance("X509")
5251
keyManagerFactory.init(keyStore, MoreObjects.firstNonNull(clientCertificatePassword, "").toCharArray())
@@ -68,18 +67,12 @@ class MemorizingTrustManagerContextInitializer {
6867

6968

7069
@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+
}
8376

8477
data class Initialized(val socketFactory: SSLSocketFactory, val hostnameVerifier: HostnameVerifier, val trustManager: X509TrustManager)
8578

app/whatsnew-de.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
TODO
1+
* Repariere CLient-Zertifikate ohne Passwort

app/whatsnew-en.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
TODO
1+
* Repair client certificates without password

0 commit comments

Comments
 (0)