From 422f3163d3920aeda5334e6ea716dafd8f42e8b7 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sun, 2 Apr 2023 23:42:05 +0200 Subject: [PATCH] Reuse native WireGuard error as ConfigurationError (#316) There was a duplicate ConfigurationError. --- CHANGELOG.md | 6 ++++++ .../Configuration+WireGuardKit.swift | 10 +--------- Sources/TunnelKitWireGuardCore/Configuration.swift | 6 +++--- .../TunnelKitWireGuardCore/ConfigurationError.swift | 5 ++--- .../Internal/TunnelConfiguration+WgQuickConfig.swift | 2 +- 5 files changed, 13 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ad2375..45e2db9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Fixed + +- WireGuard: Return native parsing errors from WireGuardKit. [#316](https://github.com/passepartoutvpn/tunnelkit/pull/316) + ## 6.0.0 (2023-04-01) ### Added diff --git a/Sources/TunnelKitWireGuardCore/Configuration+WireGuardKit.swift b/Sources/TunnelKitWireGuardCore/Configuration+WireGuardKit.swift index 90c1c3d..5a74d55 100644 --- a/Sources/TunnelKitWireGuardCore/Configuration+WireGuardKit.swift +++ b/Sources/TunnelKitWireGuardCore/Configuration+WireGuardKit.swift @@ -26,17 +26,9 @@ import Foundation import WireGuardKit -public struct ConfigurationError: Error { - let parseError: TunnelConfiguration.ParseError -} - extension WireGuard.Configuration { public init(wgQuickConfig: String) throws { - do { - tunnelConfiguration = try TunnelConfiguration(fromWgQuickConfig: wgQuickConfig) - } catch let parseError as TunnelConfiguration.ParseError { - throw ConfigurationError(parseError: parseError) - } + tunnelConfiguration = try TunnelConfiguration(fromWgQuickConfig: wgQuickConfig) } public func asWgQuickConfig() -> String { diff --git a/Sources/TunnelKitWireGuardCore/Configuration.swift b/Sources/TunnelKitWireGuardCore/Configuration.swift index 698dc39..50c6778 100644 --- a/Sources/TunnelKitWireGuardCore/Configuration.swift +++ b/Sources/TunnelKitWireGuardCore/Configuration.swift @@ -77,7 +77,7 @@ extension WireGuard { public init(_ base64PrivateKey: String) throws { guard let privateKey = PrivateKey(base64Key: base64PrivateKey) else { - throw WireGuard.ConfigurationError.invalidKey + throw WireGuard.ConfigurationError.interfaceHasInvalidPrivateKey(base64PrivateKey) } self.init(privateKey) } @@ -164,7 +164,7 @@ extension WireGuard { public mutating func addPeer(_ base64PublicKey: String, endpoint: String, allowedIPs: [String] = []) throws { guard let publicKey = PublicKey(base64Key: base64PublicKey) else { - throw WireGuard.ConfigurationError.invalidKey + throw WireGuard.ConfigurationError.peerHasInvalidPublicKey(base64PublicKey) } var peer = PeerConfiguration(publicKey: publicKey) peer.endpoint = Endpoint(from: endpoint) @@ -174,7 +174,7 @@ extension WireGuard { public mutating func setPreSharedKey(_ base64Key: String, ofPeer peerIndex: Int) throws { guard let preSharedKey = PreSharedKey(base64Key: base64Key) else { - throw WireGuard.ConfigurationError.invalidKey + throw WireGuard.ConfigurationError.peerHasInvalidPreSharedKey(base64Key) } peers[peerIndex].preSharedKey = preSharedKey } diff --git a/Sources/TunnelKitWireGuardCore/ConfigurationError.swift b/Sources/TunnelKitWireGuardCore/ConfigurationError.swift index 0aa836f..8470a4b 100644 --- a/Sources/TunnelKitWireGuardCore/ConfigurationError.swift +++ b/Sources/TunnelKitWireGuardCore/ConfigurationError.swift @@ -24,9 +24,8 @@ // import Foundation +import WireGuardKit extension WireGuard { - public enum ConfigurationError: Error { - case invalidKey - } + public typealias ConfigurationError = TunnelConfiguration.ParseError } diff --git a/Sources/TunnelKitWireGuardCore/Internal/TunnelConfiguration+WgQuickConfig.swift b/Sources/TunnelKitWireGuardCore/Internal/TunnelConfiguration+WgQuickConfig.swift index 74a564d..87eb02c 100644 --- a/Sources/TunnelKitWireGuardCore/Internal/TunnelConfiguration+WgQuickConfig.swift +++ b/Sources/TunnelKitWireGuardCore/Internal/TunnelConfiguration+WgQuickConfig.swift @@ -13,7 +13,7 @@ extension TunnelConfiguration { case notInASection } - enum ParseError: Error { + public enum ParseError: Error { case invalidLine(String.SubSequence) case noInterface case multipleInterfaces