summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-27 21:16:55 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-28 16:52:51 +0000
commit02d01b5568bebe297db24e90358335bb1a0c71de (patch)
treec812e706495d6b9d6429d9383bdf0729c7a5d9c3
parent03649eeb5730f8f99e9f7e255b320dbf27c84aff (diff)
downloadmullvadvpn-02d01b5568bebe297db24e90358335bb1a0c71de.tar.xz
mullvadvpn-02d01b5568bebe297db24e90358335bb1a0c71de.zip
Implement `MullvadDaemon.createNewAccount`
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt5
-rw-r--r--mullvad-jni/src/lib.rs25
2 files changed, 30 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
index 9c34ecb5d7..75b3e35177 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
@@ -33,6 +33,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) {
connect(daemonInterfaceAddress)
}
+ fun createNewAccount(): String? {
+ return createNewAccount(daemonInterfaceAddress)
+ }
+
fun disconnect() {
disconnect(daemonInterfaceAddress)
}
@@ -121,6 +125,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) {
private external fun deinitialize()
private external fun connect(daemonInterfaceAddress: Long)
+ private external fun createNewAccount(daemonInterfaceAddress: Long): String?
private external fun disconnect(daemonInterfaceAddress: Long)
private external fun generateWireguardKey(daemonInterfaceAddress: Long): KeygenEvent?
private external fun getAccountData(
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index c7114dcdfb..09d03bc0a3 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -328,6 +328,31 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_connect
#[no_mangle]
#[allow(non_snake_case)]
+pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_createNewAccount<'env>(
+ env: JNIEnv<'env>,
+ _: JObject<'_>,
+ daemon_interface_address: jlong,
+) -> JObject<'env> {
+ let env = JnixEnv::from(env);
+
+ if let Some(daemon_interface) = get_daemon_interface(daemon_interface_address) {
+ match daemon_interface.create_new_account() {
+ Ok(account) => account.into_java(&env).forget(),
+ Err(err) => {
+ log::error!(
+ "{}",
+ err.display_chain_with_msg("Failed to create new account")
+ );
+ JObject::null()
+ }
+ }
+ } else {
+ JObject::null()
+ }
+}
+
+#[no_mangle]
+#[allow(non_snake_case)]
pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_disconnect(
_: JNIEnv<'_>,
_: JObject<'_>,