diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2023-02-21 16:13:39 +0100 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2023-02-22 07:58:52 +0100 |
| commit | 4e392544fc29f36f2307935d54fabc771ee884e2 (patch) | |
| tree | 35f7bd8edbe96ea47d5777a5e4a9f3ee136ced80 /gui | |
| parent | 26a81c00ba35e12af86d48985de0cfc98032a3fe (diff) | |
| download | mullvadvpn-4e392544fc29f36f2307935d54fabc771ee884e2.tar.xz mullvadvpn-4e392544fc29f36f2307935d54fabc771ee884e2.zip | |
Add quantum resistant property to daemon rpc and internal structures
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 34 | ||||
| -rw-r--r-- | gui/src/main/default-settings.ts | 1 | ||||
| -rw-r--r-- | gui/src/main/settings.ts | 3 | ||||
| -rw-r--r-- | gui/src/renderer/app.tsx | 9 | ||||
| -rw-r--r-- | gui/src/renderer/redux/settings/actions.ts | 16 | ||||
| -rw-r--r-- | gui/src/renderer/redux/settings/reducers.ts | 10 | ||||
| -rw-r--r-- | gui/src/shared/daemon-rpc-types.ts | 1 | ||||
| -rw-r--r-- | gui/src/shared/ipc-schema.ts | 1 |
8 files changed, 75 insertions, 0 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts index 9898a1d2c2..5d24870908 100644 --- a/gui/src/main/daemon-rpc.ts +++ b/gui/src/main/daemon-rpc.ts @@ -437,6 +437,25 @@ export class DaemonRpc { await this.callNumber(this.client.setWireguardMtu, mtu); } + public async setWireguardQuantumResistant(quantumResistant?: boolean): Promise<void> { + const quantumResistantState = new grpcTypes.QuantumResistantState(); + switch (quantumResistant) { + case true: + quantumResistantState.setState(grpcTypes.QuantumResistantState.State.ON); + break; + case false: + quantumResistantState.setState(grpcTypes.QuantumResistantState.State.OFF); + break; + case undefined: + quantumResistantState.setState(grpcTypes.QuantumResistantState.State.AUTO); + break; + } + await this.call<grpcTypes.QuantumResistantState, Empty>( + this.client.setQuantumResistantTunnel, + quantumResistantState, + ); + } + public async setAutoConnect(autoConnect: boolean): Promise<void> { await this.callBool(this.client.setAutoConnect, autoConnect); } @@ -1230,6 +1249,9 @@ function convertFromTunnelOptions(tunnelOptions: grpcTypes.TunnelOptions.AsObjec }, wireguard: { mtu: tunnelOptions.wireguard!.mtu, + quantumResistant: convertFromQuantumResistantState( + tunnelOptions.wireguard?.quantumResistant?.state, + ), }, generic: { enableIpv6: tunnelOptions.generic!.enableIpv6, @@ -1253,6 +1275,18 @@ function convertFromTunnelOptions(tunnelOptions: grpcTypes.TunnelOptions.AsObjec }; } +function convertFromQuantumResistantState( + state?: grpcTypes.QuantumResistantState.State, +): boolean | undefined { + return state === undefined + ? undefined + : { + [grpcTypes.QuantumResistantState.State.ON]: true, + [grpcTypes.QuantumResistantState.State.OFF]: false, + [grpcTypes.QuantumResistantState.State.AUTO]: undefined, + }[state]; +} + function convertFromObfuscationSettings( obfuscationSettings?: grpcTypes.ObfuscationSettings.AsObject, ): ObfuscationSettings { diff --git a/gui/src/main/default-settings.ts b/gui/src/main/default-settings.ts index 13650926a4..9989575f80 100644 --- a/gui/src/main/default-settings.ts +++ b/gui/src/main/default-settings.ts @@ -45,6 +45,7 @@ export function getDefaultSettings(): ISettings { }, wireguard: { mtu: undefined, + quantumResistant: undefined, }, dns: { state: 'default', diff --git a/gui/src/main/settings.ts b/gui/src/main/settings.ts index 634a9109ee..08871f42ea 100644 --- a/gui/src/main/settings.ts +++ b/gui/src/main/settings.ts @@ -53,6 +53,9 @@ export default class Settings implements Readonly<ISettings> { IpcMainEventChannel.settings.handleSetWireguardMtu((mtu?: number) => this.daemonRpc.setWireguardMtu(mtu), ); + IpcMainEventChannel.settings.handleSetWireguardQuantumResistant((quantumResistant?: boolean) => + this.daemonRpc.setWireguardQuantumResistant(quantumResistant), + ); IpcMainEventChannel.settings.handleUpdateRelaySettings((update) => this.daemonRpc.updateRelaySettings(update), ); diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx index 14fa75f9cc..c5377b5d54 100644 --- a/gui/src/renderer/app.tsx +++ b/gui/src/renderer/app.tsx @@ -464,6 +464,12 @@ export default class AppRenderer { await IpcRendererEventChannel.settings.setWireguardMtu(mtu); }; + public setWireguardQuantumResistant = async (quantumResistant?: boolean) => { + const actions = this.reduxActions; + actions.settings.updateWireguardQuantumResistant(quantumResistant); + await IpcRendererEventChannel.settings.setWireguardQuantumResistant(quantumResistant); + }; + public setAutoStart = (autoStart: boolean): Promise<void> => { this.storeAutoStart(autoStart); @@ -746,6 +752,9 @@ export default class AppRenderer { reduxSettings.updateShowBetaReleases(newSettings.showBetaReleases); reduxSettings.updateOpenVpnMssfix(newSettings.tunnelOptions.openvpn.mssfix); reduxSettings.updateWireguardMtu(newSettings.tunnelOptions.wireguard.mtu); + reduxSettings.updateWireguardQuantumResistant( + newSettings.tunnelOptions.wireguard.quantumResistant, + ); reduxSettings.updateBridgeState(newSettings.bridgeState); reduxSettings.updateDnsOptions(newSettings.tunnelOptions.dns); reduxSettings.updateSplitTunnelingState(newSettings.splitTunnel.enableExclusions); diff --git a/gui/src/renderer/redux/settings/actions.ts b/gui/src/renderer/redux/settings/actions.ts index ef03ce14b8..dad71de024 100644 --- a/gui/src/renderer/redux/settings/actions.ts +++ b/gui/src/renderer/redux/settings/actions.ts @@ -68,6 +68,11 @@ export interface IUpdateWireguardMtuAction { mtu?: number; } +export interface IUpdateWireguardQuantumResistantAction { + type: 'UPDATE_WIREGUARD_QUANTUM_RESISTANT'; + quantumResistant?: boolean; +} + export interface IUpdateAutoStartAction { type: 'UPDATE_AUTO_START'; autoStart: boolean; @@ -106,6 +111,7 @@ export type SettingsAction = | IUpdateBridgeStateAction | IUpdateOpenVpnMssfixAction | IUpdateWireguardMtuAction + | IUpdateWireguardQuantumResistantAction | IUpdateAutoStartAction | IUpdateDnsOptionsAction | IUpdateSplitTunnelingStateAction @@ -200,6 +206,15 @@ function updateWireguardMtu(mtu?: number): IUpdateWireguardMtuAction { }; } +function updateWireguardQuantumResistant( + quantumResistant?: boolean, +): IUpdateWireguardQuantumResistantAction { + return { + type: 'UPDATE_WIREGUARD_QUANTUM_RESISTANT', + quantumResistant, + }; +} + function updateAutoStart(autoStart: boolean): IUpdateAutoStartAction { return { type: 'UPDATE_AUTO_START', @@ -252,6 +267,7 @@ export default { updateBridgeState, updateOpenVpnMssfix, updateWireguardMtu, + updateWireguardQuantumResistant, updateAutoStart, updateDnsOptions, updateSplitTunnelingState, diff --git a/gui/src/renderer/redux/settings/reducers.ts b/gui/src/renderer/redux/settings/reducers.ts index 2d1d287f00..576253bb48 100644 --- a/gui/src/renderer/redux/settings/reducers.ts +++ b/gui/src/renderer/redux/settings/reducers.ts @@ -100,6 +100,7 @@ export interface ISettingsReduxState { }; wireguard: { mtu?: number; + quantumResistant?: boolean; }; dns: IDnsOptions; splitTunneling: boolean; @@ -240,6 +241,15 @@ export default function ( }, }; + case 'UPDATE_WIREGUARD_QUANTUM_RESISTANT': + return { + ...state, + wireguard: { + ...state.wireguard, + quantumResistant: action.quantumResistant, + }, + }; + case 'UPDATE_AUTO_START': return { ...state, diff --git a/gui/src/shared/daemon-rpc-types.ts b/gui/src/shared/daemon-rpc-types.ts index 4a5f27d98e..f8c9fa5fff 100644 --- a/gui/src/shared/daemon-rpc-types.ts +++ b/gui/src/shared/daemon-rpc-types.ts @@ -301,6 +301,7 @@ export interface ITunnelOptions { }; wireguard: { mtu?: number; + quantumResistant?: boolean; }; generic: { enableIpv6: boolean; diff --git a/gui/src/shared/ipc-schema.ts b/gui/src/shared/ipc-schema.ts index 0ea4fdc662..1dc7d82701 100644 --- a/gui/src/shared/ipc-schema.ts +++ b/gui/src/shared/ipc-schema.ts @@ -163,6 +163,7 @@ export const ipcSchema = { setBridgeState: invoke<BridgeState, void>(), setOpenVpnMssfix: invoke<number | undefined, void>(), setWireguardMtu: invoke<number | undefined, void>(), + setWireguardQuantumResistant: invoke<boolean | undefined, void>(), updateRelaySettings: invoke<RelaySettingsUpdate, void>(), updateBridgeSettings: invoke<BridgeSettings, void>(), setDnsOptions: invoke<IDnsOptions, void>(), |
