summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2019-06-25 23:45:41 +0100
committerEmīls Piņķis <emils@mullvad.net>2019-06-26 14:18:38 +0100
commit5b693141c02748ae104b980023f3e7a9e1b501dc (patch)
tree656d38142ffaf74a4d9748d4712b03b537056d5e
parent5ec6e66436e9ed4dd77cafb00b0ba003ed7b9eff (diff)
downloadmullvadvpn-5b693141c02748ae104b980023f3e7a9e1b501dc.tar.xz
mullvadvpn-5b693141c02748ae104b980023f3e7a9e1b501dc.zip
Add KeygenEvent to mullvad-jni
-rw-r--r--mullvad-jni/src/daemon_interface.rs8
-rw-r--r--mullvad-jni/src/jni_event_listener.rs5
-rw-r--r--mullvad-jni/src/lib.rs8
3 files changed, 14 insertions, 7 deletions
diff --git a/mullvad-jni/src/daemon_interface.rs b/mullvad-jni/src/daemon_interface.rs
index e91885fc95..a99c6e7cac 100644
--- a/mullvad-jni/src/daemon_interface.rs
+++ b/mullvad-jni/src/daemon_interface.rs
@@ -2,7 +2,7 @@ use futures::{sync::oneshot, Future};
use mullvad_daemon::{DaemonCommandSender, ManagementCommand};
use mullvad_types::{
account::AccountData, location::GeoIpLocation, relay_constraints::RelaySettingsUpdate,
- relay_list::RelayList, settings::Settings, states::TargetState,
+ relay_list::RelayList, settings::Settings, states::TargetState, wireguard::KeygenEvent,
};
use parking_lot::Mutex;
use talpid_types::{net::wireguard, tunnel::TunnelStateTransition};
@@ -64,14 +64,12 @@ impl DaemonInterface {
Ok(())
}
- pub fn generate_wireguard_key(&self) -> Result<()> {
+ pub fn generate_wireguard_key(&self) -> Result<KeygenEvent> {
let (tx, rx) = oneshot::channel();
self.send_command(ManagementCommand::GenerateWireguardKey(tx))?;
- rx.wait()
- .map_err(|_| Error::NoResponse)?
- .map_err(Error::RpcError)
+ rx.wait().map_err(|_| Error::NoResponse)
}
pub fn get_account_data(&self, account_token: String) -> Result<AccountData> {
diff --git a/mullvad-jni/src/jni_event_listener.rs b/mullvad-jni/src/jni_event_listener.rs
index 9a89d85927..57d9bb6e76 100644
--- a/mullvad-jni/src/jni_event_listener.rs
+++ b/mullvad-jni/src/jni_event_listener.rs
@@ -5,7 +5,7 @@ use jni::{
AttachGuard, JNIEnv,
};
use mullvad_daemon::EventListener;
-use mullvad_types::{relay_list::RelayList, settings::Settings};
+use mullvad_types::{relay_list::RelayList, settings::Settings, wireguard::KeygenEvent};
use std::{sync::mpsc, thread};
use talpid_types::{tunnel::TunnelStateTransition, ErrorExt};
@@ -48,6 +48,9 @@ impl EventListener for JniEventListener {
fn notify_relay_list(&self, relay_list: RelayList) {
let _ = self.0.send(Event::RelayList(relay_list));
}
+
+ // TODO: manage key events properly
+ fn notify_key_event(&self, _key_event: KeygenEvent) {}
}
struct JniEventHandler<'env> {
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index e7a6e862fa..947d2b5f70 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -18,6 +18,7 @@ use jni::{
};
use lazy_static::lazy_static;
use mullvad_daemon::{logging, version, Daemon, DaemonCommandSender};
+use mullvad_types::wireguard::KeygenEvent;
use parking_lot::RwLock;
use std::{
collections::HashMap,
@@ -225,7 +226,12 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_MullvadDaemon_generateWiregua
_: JObject,
) -> jboolean {
match DAEMON_INTERFACE.generate_wireguard_key() {
- Ok(()) => JNI_TRUE,
+ Ok(KeygenEvent::NewKey(_)) => JNI_TRUE,
+ // TODO: Handle the new result better.
+ Ok(keygen_failure) => {
+ log::error!("Failed to generate wireguard key {:?}", keygen_failure);
+ JNI_FALSE
+ }
Err(error) => {
log::error!(
"{}",