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