diff --git a/ios/MullvadTypes/Protocols/PostQuantumKeyReceiving.swift b/ios/MullvadTypes/Protocols/PostQuantumKeyReceiving.swift index 577e2f3d63a8..eb696fcca300 100644 --- a/ios/MullvadTypes/Protocols/PostQuantumKeyReceiving.swift +++ b/ios/MullvadTypes/Protocols/PostQuantumKeyReceiving.swift @@ -9,17 +9,17 @@ import Foundation import WireGuardKitTypes -protocol PostQuantumKeyReceiving { - func receivePostQuantumKey(_ key: PrivateKey) +public protocol PostQuantumKeyReceiving { + func receivePostQuantumKey(_ key: PreSharedKey) } -enum PostQuantumKeyReceivingError: Error { +public enum PostQuantumKeyReceivingError: Error { case invalidKey } -extension PostQuantumKeyReceiving { +public extension PostQuantumKeyReceiving { func receivePostQuantumKey(_ keyData: Data) throws { - guard let key = PrivateKey(rawValue: keyData) else { + guard let key = PreSharedKey(rawValue: keyData) else { throw PostQuantumKeyReceivingError.invalidKey } receivePostQuantumKey(key) diff --git a/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift b/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift index ed9c700af825..5b56b1675a45 100644 --- a/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift +++ b/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift @@ -14,6 +14,7 @@ import MullvadTypes import NetworkExtension import PacketTunnelCore import TunnelObfuscation +import WireGuardKitTypes class PacketTunnelProvider: NEPacketTunnelProvider { private let internalQueue = DispatchQueue(label: "PacketTunnel-internalQueue") @@ -275,3 +276,10 @@ extension PacketTunnelProvider { } } } + +extension PacketTunnelProvider: PostQuantumKeyReceiving { + func receivePostQuantumKey(_ key: PreSharedKey) { + // TODO: send the key to the actor + actor.replacePreSharedKey(key) + } +} diff --git a/ios/PacketTunnelCore/Actor/PacketTunnelActor+Public.swift b/ios/PacketTunnelCore/Actor/PacketTunnelActor+Public.swift index b54d397ca47d..0d80fb6d580a 100644 --- a/ios/PacketTunnelCore/Actor/PacketTunnelActor+Public.swift +++ b/ios/PacketTunnelCore/Actor/PacketTunnelActor+Public.swift @@ -7,6 +7,7 @@ // import Foundation +import WireGuardKitTypes /** Public methods for dispatching commands to Actor. @@ -50,6 +51,15 @@ extension PacketTunnelActor { commandChannel.send(.notifyKeyRotated(date)) } + /** + Issue a new preshared key to the Actor. + - Parameter key: the new key + */ + + nonisolated public func replacePreSharedKey(_ key: PreSharedKey) { + commandChannel.send(.replaceDevicePrivateKey(key)) + } + /** Tell actor to enter error state. */