summaryrefslogtreecommitdiffhomepage
path: root/ios/PacketTunnel/PostQuantum
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2024-12-05 10:38:44 +0100
committerEmīls <emils@mullvad.net>2024-12-19 17:05:28 +0100
commitee5c10bf7e2cac67cedaae53d9d565ccfb72a623 (patch)
treedab54da1fc4080e5924cde87c397c2e7cddb4d48 /ios/PacketTunnel/PostQuantum
parentf1df6d52b322f19d15abf784d6ea66b02b7f501b (diff)
downloadmullvadvpn-ee5c10bf7e2cac67cedaae53d9d565ccfb72a623.tar.xz
mullvadvpn-ee5c10bf7e2cac67cedaae53d9d565ccfb72a623.zip
Change key exchange to be asynchronous
Diffstat (limited to 'ios/PacketTunnel/PostQuantum')
-rw-r--r--ios/PacketTunnel/PostQuantum/EphemeralPeerExchangingPipeline.swift16
-rw-r--r--ios/PacketTunnel/PostQuantum/SingleHopEphemeralPeerExchanger.swift16
2 files changed, 16 insertions, 16 deletions
diff --git a/ios/PacketTunnel/PostQuantum/EphemeralPeerExchangingPipeline.swift b/ios/PacketTunnel/PostQuantum/EphemeralPeerExchangingPipeline.swift
index 0d0da931f0..1619889003 100644
--- a/ios/PacketTunnel/PostQuantum/EphemeralPeerExchangingPipeline.swift
+++ b/ios/PacketTunnel/PostQuantum/EphemeralPeerExchangingPipeline.swift
@@ -13,14 +13,14 @@ import WireGuardKitTypes
final public class EphemeralPeerExchangingPipeline {
let keyExchanger: EphemeralPeerExchangeActorProtocol
- let onUpdateConfiguration: (EphemeralPeerNegotiationState) -> Void
+ let onUpdateConfiguration: (EphemeralPeerNegotiationState) async -> Void
let onFinish: () -> Void
private var ephemeralPeerExchanger: EphemeralPeerExchangingProtocol!
public init(
_ keyExchanger: EphemeralPeerExchangeActorProtocol,
- onUpdateConfiguration: @escaping (EphemeralPeerNegotiationState) -> Void,
+ onUpdateConfiguration: @escaping (EphemeralPeerNegotiationState) async -> Void,
onFinish: @escaping () -> Void
) {
self.keyExchanger = keyExchanger
@@ -28,7 +28,7 @@ final public class EphemeralPeerExchangingPipeline {
self.onFinish = onFinish
}
- public func startNegotiation(_ connectionState: ObservedConnectionState, privateKey: PrivateKey) {
+ public func startNegotiation(_ connectionState: ObservedConnectionState, privateKey: PrivateKey) async {
keyExchanger.reset()
let entryPeer = connectionState.selectedRelays.entry
let exitPeer = connectionState.selectedRelays.exit
@@ -56,14 +56,14 @@ final public class EphemeralPeerExchangingPipeline {
onFinish: onFinish
)
}
- ephemeralPeerExchanger.start()
+ await ephemeralPeerExchanger.start()
}
- public func receivePostQuantumKey(_ key: PreSharedKey, ephemeralKey: PrivateKey) {
- ephemeralPeerExchanger.receivePostQuantumKey(key, ephemeralKey: ephemeralKey)
+ public func receivePostQuantumKey(_ key: PreSharedKey, ephemeralKey: PrivateKey) async {
+ await ephemeralPeerExchanger.receivePostQuantumKey(key, ephemeralKey: ephemeralKey)
}
- public func receiveEphemeralPeerPrivateKey(_ ephemeralPeerPrivateKey: PrivateKey) {
- ephemeralPeerExchanger.receiveEphemeralPeerPrivateKey(ephemeralPeerPrivateKey)
+ public func receiveEphemeralPeerPrivateKey(_ ephemeralPeerPrivateKey: PrivateKey) async {
+ await ephemeralPeerExchanger.receiveEphemeralPeerPrivateKey(ephemeralPeerPrivateKey)
}
}
diff --git a/ios/PacketTunnel/PostQuantum/SingleHopEphemeralPeerExchanger.swift b/ios/PacketTunnel/PostQuantum/SingleHopEphemeralPeerExchanger.swift
index f959a335ef..3c6ab5631a 100644
--- a/ios/PacketTunnel/PostQuantum/SingleHopEphemeralPeerExchanger.swift
+++ b/ios/PacketTunnel/PostQuantum/SingleHopEphemeralPeerExchanger.swift
@@ -18,7 +18,7 @@ struct SingleHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
let keyExchanger: EphemeralPeerExchangeActorProtocol
let devicePrivateKey: PrivateKey
let onFinish: () -> Void
- let onUpdateConfiguration: (EphemeralPeerNegotiationState) -> Void
+ let onUpdateConfiguration: (EphemeralPeerNegotiationState) async -> Void
let enablePostQuantum: Bool
let enableDaita: Bool
@@ -28,7 +28,7 @@ struct SingleHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
keyExchanger: EphemeralPeerExchangeActorProtocol,
enablePostQuantum: Bool,
enableDaita: Bool,
- onUpdateConfiguration: @escaping (EphemeralPeerNegotiationState) -> Void,
+ onUpdateConfiguration: @escaping (EphemeralPeerNegotiationState) async -> Void,
onFinish: @escaping () -> Void
) {
self.devicePrivateKey = devicePrivateKey
@@ -40,8 +40,8 @@ struct SingleHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
self.onFinish = onFinish
}
- func start() {
- onUpdateConfiguration(.single(EphemeralPeerRelayConfiguration(
+ func start() async {
+ await onUpdateConfiguration(.single(EphemeralPeerRelayConfiguration(
relay: exit,
configuration: EphemeralPeerConfiguration(
privateKey: devicePrivateKey,
@@ -55,8 +55,8 @@ struct SingleHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
)
}
- public func receiveEphemeralPeerPrivateKey(_ ephemeralKey: PrivateKey) {
- onUpdateConfiguration(.single(EphemeralPeerRelayConfiguration(
+ public func receiveEphemeralPeerPrivateKey(_ ephemeralKey: PrivateKey) async {
+ await onUpdateConfiguration(.single(EphemeralPeerRelayConfiguration(
relay: exit,
configuration: EphemeralPeerConfiguration(
privateKey: ephemeralKey,
@@ -73,8 +73,8 @@ struct SingleHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
func receivePostQuantumKey(
_ preSharedKey: WireGuardKitTypes.PreSharedKey,
ephemeralKey: WireGuardKitTypes.PrivateKey
- ) {
- onUpdateConfiguration(.single(EphemeralPeerRelayConfiguration(
+ ) async {
+ await onUpdateConfiguration(.single(EphemeralPeerRelayConfiguration(
relay: exit,
configuration: EphemeralPeerConfiguration(
privateKey: ephemeralKey,