diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2019-06-25 17:50:47 +0100 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2019-06-26 14:18:38 +0100 |
| commit | b3d907a3eecb142590342db593587483cb5e0c7c (patch) | |
| tree | 416ac38f95d45b470bb973dc81609670381be248 | |
| parent | aa738187dc7c8702be6754aaf86f304b716105f9 (diff) | |
| download | mullvadvpn-b3d907a3eecb142590342db593587483cb5e0c7c.tar.xz mullvadvpn-b3d907a3eecb142590342db593587483cb5e0c7c.zip | |
Add new daemon event for wireguard keys
| -rw-r--r-- | mullvad-ipc-client/src/lib.rs | 2 | ||||
| -rw-r--r-- | mullvad-types/src/lib.rs | 3 | ||||
| -rw-r--r-- | mullvad-types/src/wireguard.rs | 20 |
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"), + } + } +} |
