summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer/components
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2023-02-22 09:10:48 +0100
committerOskar Nyberg <oskar@mullvad.net>2023-02-22 09:10:48 +0100
commit850711e300dcf87608118f84cbd5dad632c61bae (patch)
tree31c0678250b92334187d606c23f332155b3062f7 /gui/src/renderer/components
parent26a81c00ba35e12af86d48985de0cfc98032a3fe (diff)
parentc1ce1ff2c1ad507766a1efe4536a43c7aeda37d3 (diff)
downloadmullvadvpn-850711e300dcf87608118f84cbd5dad632c61bae.tar.xz
mullvadvpn-850711e300dcf87608118f84cbd5dad632c61bae.zip
Merge branch 'pq-gui-setting'
Diffstat (limited to 'gui/src/renderer/components')
-rw-r--r--gui/src/renderer/components/SecuredLabel.tsx2
-rw-r--r--gui/src/renderer/components/WireguardSettings.tsx65
2 files changed, 67 insertions, 0 deletions
diff --git a/gui/src/renderer/components/SecuredLabel.tsx b/gui/src/renderer/components/SecuredLabel.tsx
index f622c8a847..736297b480 100644
--- a/gui/src/renderer/components/SecuredLabel.tsx
+++ b/gui/src/renderer/components/SecuredLabel.tsx
@@ -50,6 +50,7 @@ function getLabelText(displayStyle: SecuredDisplayStyle) {
return messages.gettext('SECURE CONNECTION');
case SecuredDisplayStyle.securedPq:
+ // TRANSLATORS: The connection is secure and isn't breakable by quantum computers.
return messages.gettext('QUANTUM SECURE CONNECTION');
case SecuredDisplayStyle.blocked:
@@ -59,6 +60,7 @@ function getLabelText(displayStyle: SecuredDisplayStyle) {
return messages.gettext('CREATING SECURE CONNECTION');
case SecuredDisplayStyle.securingPq:
+ // TRANSLATORS: Creating a secure connection that isn't breakable by quantum computers.
return messages.gettext('CREATING QUANTUM SECURE CONNECTION');
case SecuredDisplayStyle.unsecured:
diff --git a/gui/src/renderer/components/WireguardSettings.tsx b/gui/src/renderer/components/WireguardSettings.tsx
index 18c39a7396..edcc397e4a 100644
--- a/gui/src/renderer/components/WireguardSettings.tsx
+++ b/gui/src/renderer/components/WireguardSettings.tsx
@@ -107,6 +107,10 @@ export default function WireguardSettings() {
</Cell.Group>
<Cell.Group>
+ <QuantumResistantSetting />
+ </Cell.Group>
+
+ <Cell.Group>
<MultihopSetting />
</Cell.Group>
@@ -564,3 +568,64 @@ function MtuSetting() {
</AriaInputGroup>
);
}
+
+function QuantumResistantSetting() {
+ const { setWireguardQuantumResistant } = useAppContext();
+ const quantumResistant = useSelector((state) => state.settings.wireguard.quantumResistant);
+
+ const items: SelectorItem<boolean>[] = useMemo(
+ () => [
+ {
+ label: messages.gettext('On'),
+ value: true,
+ },
+ {
+ label: messages.gettext('Off'),
+ value: false,
+ },
+ ],
+ [],
+ );
+
+ const selectQuantumResistant = useCallback(
+ async (quantumResistant: boolean | null) => {
+ await setWireguardQuantumResistant(quantumResistant ?? undefined);
+ },
+ [setWireguardQuantumResistant],
+ );
+
+ return (
+ <AriaInputGroup>
+ <StyledSelectorContainer>
+ <Selector
+ title={
+ // TRANSLATORS: The title for the WireGuard quantum resistance selector. This setting
+ // TRANSLATORS: makes the cryptography resistant to the future abilities of quantum
+ // TRANSLATORS: computers.
+ messages.pgettext('wireguard-settings-view', 'Quantum-resistant tunnel')
+ }
+ details={
+ <>
+ <ModalMessage>
+ {messages.pgettext(
+ 'wireguard-settings-view',
+ 'This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers.',
+ )}
+ </ModalMessage>
+ <ModalMessage>
+ {messages.pgettext(
+ 'wireguard-settings-view',
+ 'It does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption. This extra step uses approximately 500 kiB of traffic every time a new tunnel is established.',
+ )}
+ </ModalMessage>
+ </>
+ }
+ items={items}
+ value={quantumResistant ?? null}
+ onSelect={selectQuantumResistant}
+ automaticValue={null}
+ />
+ </StyledSelectorContainer>
+ </AriaInputGroup>
+ );
+}