diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-27 21:16:55 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-28 16:52:51 +0000 |
| commit | 02d01b5568bebe297db24e90358335bb1a0c71de (patch) | |
| tree | c812e706495d6b9d6429d9383bdf0729c7a5d9c3 | |
| parent | 03649eeb5730f8f99e9f7e255b320dbf27c84aff (diff) | |
| download | mullvadvpn-02d01b5568bebe297db24e90358335bb1a0c71de.tar.xz mullvadvpn-02d01b5568bebe297db24e90358335bb1a0c71de.zip | |
Implement `MullvadDaemon.createNewAccount`
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt | 5 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 25 |
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<'_>, |
