summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-21 14:32:10 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-22 12:41:41 +0000
commit10a411a4117d32657b510a68fc1a51ff70de8a66 (patch)
tree9b9d5a2c00b4a4d13f9aaeee94cd462bb27f2241 /android/src
parenta34b9cf96d2018cc288864124fc126cd86b965a8 (diff)
downloadmullvadvpn-10a411a4117d32657b510a68fc1a51ff70de8a66.tar.xz
mullvadvpn-10a411a4117d32657b510a68fc1a51ff70de8a66.zip
Include API root certificate
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ApiRootCaFile.kt29
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt23
2 files changed, 52 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ApiRootCaFile.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ApiRootCaFile.kt
new file mode 100644
index 0000000000..dc8af32ce2
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ApiRootCaFile.kt
@@ -0,0 +1,29 @@
+package net.mullvad.mullvadvpn
+
+import java.io.File
+import java.io.FileOutputStream
+import java.io.InputStream
+
+import android.content.Context
+
+private const val API_ROOT_CA_FILE = "api_root_ca.pem"
+private const val API_ROOT_CA_PATH = "/data/data/net.mullvad.mullvadvpn/api_root_ca.pem"
+
+class ApiRootCaFile {
+ fun extract(context: Context) {
+ if (!File(API_ROOT_CA_PATH).exists()) {
+ extractFile(context, API_ROOT_CA_FILE, API_ROOT_CA_PATH)
+ }
+ }
+
+ private fun extractFile(context: Context, asset: String, destination: String) {
+ val destinationStream = FileOutputStream(destination)
+
+ context
+ .assets
+ .open(asset)
+ .copyTo(destinationStream)
+
+ destinationStream.close()
+ }
+}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
index b7b0e8fa8c..8b1571c2fc 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
@@ -1,24 +1,47 @@
package net.mullvad.mullvadvpn
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.Job
+
import android.os.Bundle
import android.support.v4.app.FragmentActivity
class MainActivity : FragmentActivity() {
+ private val extractApiRootCaFile = doExtractApiRootCaFile()
+
+ val activityCreated = CompletableDeferred<Unit>()
+
var selectedRelayItemCode: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
+ activityCreated.complete(Unit)
+
if (savedInstanceState == null) {
addInitialFragment()
}
}
+ override fun onDestroy() {
+ extractApiRootCaFile.cancel()
+
+ super.onDestroy()
+ }
+
private fun addInitialFragment() {
supportFragmentManager?.beginTransaction()?.apply {
add(R.id.main_fragment, LoginFragment())
commit()
}
}
+
+ private fun doExtractApiRootCaFile() = GlobalScope.launch(Dispatchers.Default) {
+ activityCreated.await()
+ ApiRootCaFile().extract(this@MainActivity)
+ }
}