diff --git a/app/src/main/kotlin/com/tutpro/baresip/Config.kt b/app/src/main/kotlin/com/tutpro/baresip/Config.kt index 77ee9e25..afbc2e1d 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Config.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Config.kt @@ -61,9 +61,36 @@ object Config { if (sipVerifyServer != "") config = "${config}sip_verify_server $sipVerifyServer\n" - val sipCaFile = previousVariable("sip_cafile") - if (sipCaFile != "") - config = "${config}sip_cafile $sipCaFile\n" + val caBundlePath = "${BaresipService.filesPath}/ca_bundle.crt" + val caBundleFile = File(caBundlePath) + val caFilePath = "${BaresipService.filesPath}/ca_certs.crt" + val caFile = File(caFilePath) + if (caFile.exists()) + caFile.copyTo(caBundleFile, true) + else + caBundleFile.writeBytes(byteArrayOf()) + Log.d(TAG, "Size of caFile = ${caBundleFile.length()}") + val cacertsPath = "/system/etc/security/cacerts" + val cacertsDir = File(cacertsPath) + var caCount = 0 + if (cacertsDir.exists()) { + cacertsDir.walk().forEach { + if (it.isFile) { + caBundleFile.appendBytes( + it.readBytes() + .toString(Charsets.UTF_8) + .substringBefore("Certificate:") + .toByteArray(Charsets.UTF_8) + ) + caCount++ + } + } + Log.d(TAG, "Added $caCount ca certificates from $cacertsPath") + } else { + Log.w(TAG, "Directory $cacertsDir does not exist!") + } + Log.d(TAG, "Size of caBundleFile = ${caBundleFile.length()}") + config = "${config}sip_cafile $caBundlePath\n" val dynamicDns = previousVariable("dyn_dns") if (dynamicDns == "no") { diff --git a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt index 02e782b7..fd12fc32 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt @@ -70,7 +70,6 @@ class ConfigActivity : AppCompatActivity() { private var oldDnsServers = "" private var oldCertificateFile = false private var oldVerifyServer = false - private var oldCAFile = false private var oldLogLevel = "" private var oldDisplayTheme = -1 private var oldContactsMode = "" @@ -313,8 +312,8 @@ class ConfigActivity : AppCompatActivity() { verifyServer.isChecked = oldVerifyServer caFile = binding.CAFile - oldCAFile = Config.variable("sip_cafile") != "" - caFile.isChecked = oldCAFile + val caCertsFile = File(BaresipService.filesPath + "/ca_certs.crt") + caFile.isChecked = caCertsFile.exists() val certificatesRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { @@ -324,11 +323,8 @@ class ConfigActivity : AppCompatActivity() { val inputStream = applicationContext.contentResolver.openInputStream(uri) as FileInputStream - val caCertsPath = BaresipService.filesPath + "/ca_certs.crt" - File(caCertsPath).copyInputStreamToFile(inputStream) + caCertsFile.copyInputStreamToFile(inputStream) inputStream.close() - Config.replaceVariable("sip_cafile", caCertsPath) - save = true restart = true } catch (e: Error) { Utils.alertView( @@ -340,6 +336,8 @@ class ConfigActivity : AppCompatActivity() { } else caFile.isChecked = false + if (!caFile.isChecked && caCertsFile.exists()) + caCertsFile.delete() } caFile.setOnCheckedChangeListener { _, isChecked -> @@ -361,11 +359,8 @@ class ConfigActivity : AppCompatActivity() { ) return@setOnCheckedChangeListener } - val caCertsPath = BaresipService.filesPath + "/ca_certs.crt" - Utils.putFileContents(caCertsPath, content) - Config.replaceVariable("sip_cafile", caCertsPath) + caCertsFile.writeBytes(content) caFile.isChecked = true - save = true restart = true } ActivityCompat.shouldShowRequestPermissionRationale( @@ -389,8 +384,8 @@ class ConfigActivity : AppCompatActivity() { Utils.selectInputFile(certificatesRequest) } } else { - Config.removeVariable("sip_cafile") - save = true + if (caCertsFile.exists()) + caCertsFile.delete() restart = true } } @@ -613,13 +608,6 @@ class ConfigActivity : AppCompatActivity() { save = true } - if (verifyServer.isChecked && !caFile.isChecked) { - Utils.alertView(this, getString(R.string.error), - getString(R.string.verify_server_error)) - verifyServer.isChecked = false - return false - } - if (oldVerifyServer != verifyServer.isChecked) { Config.replaceVariable("sip_verify_server", if (verifyServer.isChecked) "yes" else "no") diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index b5e475ae..7a54077b 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -107,7 +107,6 @@ Soubor TLS CA Nepodařilo se nastavit servery DNS Ověřit certifikáty serveru - Certifikáty serveru nelze ověřit bez souboru certifikační autority TLS. Pokud je tato možnost zaškrtnuta, ověřuje baresip certifikáty TLS uživatelského agenta SIP a proxy serverů SIP, pokud se používá přenos TLS. Pokud je zaškrtnuto, musí být načten také soubor TLS CA. Události v pásmu RTP Žádosti SIP INFO diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index b618c2fb..786a9472 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -257,7 +257,6 @@ Filtro extendido AEC Audio Si se marca, baresip verifica los certificados TLS del Agente de Usuario SIP y de los Servidores Proxy SIP cuando se utiliza el transporte TLS. Si se marca, también se debe cargar el archivo TLS CA. - Los certificados del servidor no pueden ser verificados sin el archivo TLS CA. Verificar los certificados del servidor Solicitud de transferencia de llamada a Llamada perdida de diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 66481540..dc4b0c76 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -344,18 +344,14 @@ ladataan Download-kansiosta. Turvallisuusyistä tuhoa tiedosto heti lataamisen jälkeen. Tarkista palvelinten sertifikaatit - Palvelinten sertifikaatteja ei voi tarkistaa ilman TLS - CA-tiedostoa. - Jos merkitty, baresip tarkistaa SIP-palvelinten - sertifikaatit, kun TLS-tiedonsiirto on käytössä. Tällöin myös TLS CA-tiedoston on oltava - ladattuna. + sertifikaatit, kun TLS-tiedonsiirto on käytössä. TLS CA-tiedosto - Jos merkitty, tiedosto joka sisältää - sertifikaattiauktoriteettien (CA) julkiset sertifikaatit, on joko jo ladattu tai tullaan - lataamaan. Android versioon 9 saakka tiedosto nimeltään \'ca_certs.crt\' ladataan - Download-kansiosta. + Jos merkitty, tiedosto on joko jo ladattu tai tullaan + lataamaan, joka sisältää sellaisten sertifikaattiauktoriteettien (CA) julkiset sertifikaatit, + jotka eivät sisälly Android-käyttöjärjestelmään. Android versioon 9 saakka tiedosto + nimeltään \'ca_certs.crt\' ladataan Download-kansiosta. Audio Audio-asetukset diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 762b4e48..4ff4559c 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -240,7 +240,6 @@ Tema Escuro Se for marcado, este contato será adicionado nos contatos do Android. Se estiver marcado, o baresip verifica os certificados TLS do SIP User Agent e o SIP Proxy Servers quando o transporte TLS for usado. Se estiver marcado, o arquivo TLS CA também deve ser carregado. - Os certificados do servidor não podem ser aferidos sem o arquivo CA TLS. Verifique os certificados do servidor Solicitações INFO SIP Eventos na Banda RTP diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 484402ae..f420ae16 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -235,7 +235,6 @@ Impor o uso do tema escuro no ecrã Tema Escuro Se estiver marcado, o baresip verifica os certificados TLS do SIP User Agent e o SIP Proxy Servers quando o transporte TLS for usado. Se estiver marcado, o ficheiro TLS CA também deve ser carregado. - Os certificados do servidor não podem ser aferidos sem o ficheiro CA TLS. Verifique os certificados do servidor Chamada de solicitação de transferência para Ligação perdida de diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 332afd9b..20e87e04 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -232,7 +232,6 @@ О baresip+ URI-адрес сервера STUN/TURN Темная тема - Сертификаты сервера не могут быть проверены без файла TLS CA. Проверка сертификатов сервера Пир Направление diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 4f831fcc..7fb7ed24 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -172,7 +172,6 @@ Kunde inte ladda modul. Ljudkodekar som tillhandahålls av de förkryssade modulerna är tillgängliga för konton. TLS CA-fil - Servercertifikat kan inte verifieras utan TLS CA-fil. Verifiera servercertifikat Chatta med %1$s Chattmeddelanden diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2600bab4..308085a5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -324,15 +324,13 @@ below, a file called \'cert.pem\' is loaded from Download folder. For security reasons, delete the file after loading. Verify Server Certificates - Server Certificates cannot be verified without - TLS CA file. If checked, baresip verifies TLS certificates of SIP User - Agent and SIP Proxy Servers when TLS transport is used. If checked, also TLS CA File has - to be loaded. + Agent and SIP Proxy Servers when TLS transport is used. TLS CA File - If checked, a file containing TLS certificates - of needed Certificate Authorities has been or will be loaded. In Android versions 9 and - below, a file called \'ca_certs.crt\' is loaded from Download folder. + If checked, a file has been or will be loaded that contains + TLS certificates of such Certificate Authorities that are not included in Android OS. + In Android versions 9 and below, a file called \'ca_certs.crt\' is loaded from + Download folder. Audio Audio Settings Audio Modules