summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2019-06-25 17:50:47 +0100
committerEmīls Piņķis <emils@mullvad.net>2019-06-26 14:18:38 +0100
commitb3d907a3eecb142590342db593587483cb5e0c7c (patch)
tree416ac38f95d45b470bb973dc81609670381be248
parentaa738187dc7c8702be6754aaf86f304b716105f9 (diff)
downloadmullvadvpn-b3d907a3eecb142590342db593587483cb5e0c7c.tar.xz
mullvadvpn-b3d907a3eecb142590342db593587483cb5e0c7c.zip
Add new daemon event for wireguard keys
-rw-r--r--mullvad-ipc-client/src/lib.rs2
-rw-r--r--mullvad-types/src/lib.rs3
-rw-r--r--mullvad-types/src/wireguard.rs20
3 files changed, 24 insertions, 1 deletions
diff --git a/mullvad-ipc-client/src/lib.rs b/mullvad-ipc-client/src/lib.rs
index 29f8985287..d42f165026 100644
--- a/mullvad-ipc-client/src/lib.rs
+++ b/mullvad-ipc-client/src/lib.rs
@@ -159,7 +159,7 @@ impl DaemonRpcClient {
self.call("get_settings", &NO_ARGS)
}
- pub fn generate_wireguard_key(&mut self) -> Result<()> {
+ pub fn generate_wireguard_key(&mut self) -> Result<mullvad_types::wireguard::KeygenEvent> {
self.call("generate_wireguard_key", &NO_ARGS)
}
diff --git a/mullvad-types/src/lib.rs b/mullvad-types/src/lib.rs
index 6947c4ee9c..75088341d3 100644
--- a/mullvad-types/src/lib.rs
+++ b/mullvad-types/src/lib.rs
@@ -34,4 +34,7 @@ pub enum DaemonEvent {
/// The daemon got an updated relay list.
RelayList(relay_list::RelayList),
+
+ /// Key event
+ WireguardKey(wireguard::KeygenEvent),
}
diff --git a/mullvad-types/src/wireguard.rs b/mullvad-types/src/wireguard.rs
index 5fc0846557..635bb7d7da 100644
--- a/mullvad-types/src/wireguard.rs
+++ b/mullvad-types/src/wireguard.rs
@@ -1,4 +1,5 @@
use serde::{Deserialize, Serialize};
+use std::fmt;
use talpid_types::net::wireguard;
/// Contains account specific wireguard data
@@ -15,3 +16,22 @@ pub struct AssociatedAddresses {
pub ipv4_address: ipnetwork::Ipv4Network,
pub ipv6_address: ipnetwork::Ipv6Network,
}
+
+#[serde(rename_all = "snake_case")]
+#[derive(Clone, Debug, Deserialize, Serialize)]
+/// Event that is emitted when the daemon has finished generating a key.
+pub enum KeygenEvent {
+ NewKey(wireguard::PublicKey),
+ TooManyKeys,
+ GenerationFailure,
+}
+
+impl fmt::Display for KeygenEvent {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+ match self {
+ KeygenEvent::NewKey(public_key) => write!(f, "New wireguard key {}", public_key),
+ KeygenEvent::TooManyKeys => write!(f, "Account has too many keys already"),
+ KeygenEvent::GenerationFailure => write!(f, "Failed to generate new wireguard key"),
+ }
+ }
+}