diff --git a/.gitignore b/.gitignore
index 8d56458..833a813 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,5 @@
Pods
docs
build
+.swiftpm
+.build
diff --git a/.jazzy.yaml b/.jazzy.yaml
index 0c946f3..d898e0d 100644
--- a/.jazzy.yaml
+++ b/.jazzy.yaml
@@ -5,14 +5,6 @@ author_url: "https://github.com/passepartoutvpn/tunnelkit"
theme: fullwidth
-xcodebuild_arguments:
- - "-workspace"
- - "TunnelKit.xcworkspace"
- - "-scheme"
- - "TunnelKit-iOS"
- - "-sdk"
- - "iphoneos"
-
custom_categories:
- name: Core
children:
diff --git a/TunnelKit/Demo/Configuration.swift b/Demo/Demo/Configuration.swift
similarity index 99%
rename from TunnelKit/Demo/Configuration.swift
rename to Demo/Demo/Configuration.swift
index 207ee99..558a008 100644
--- a/TunnelKit/Demo/Configuration.swift
+++ b/Demo/Demo/Configuration.swift
@@ -24,7 +24,8 @@
//
import Foundation
-import TunnelKit
+import TunnelKitCore
+import TunnelKitOpenVPN
struct Configuration {
static let ca = OpenVPN.CryptoContainer(pem: """
diff --git a/TunnelKit/Demo/DemoTunnel.plist b/Demo/Demo/DemoTunnel.plist
similarity index 100%
rename from TunnelKit/Demo/DemoTunnel.plist
rename to Demo/Demo/DemoTunnel.plist
diff --git a/TunnelKit/Demo/PacketTunnelProvider.swift b/Demo/Demo/PacketTunnelProvider.swift
similarity index 97%
rename from TunnelKit/Demo/PacketTunnelProvider.swift
rename to Demo/Demo/PacketTunnelProvider.swift
index 3d644c2..f0c1cf0 100644
--- a/TunnelKit/Demo/PacketTunnelProvider.swift
+++ b/Demo/Demo/PacketTunnelProvider.swift
@@ -23,7 +23,7 @@
// along with TunnelKit. If not, see .
//
-import TunnelKit
+import TunnelKitOpenVPN
class PacketTunnelProvider: OpenVPNTunnelProvider {
}
diff --git a/TunnelKit/Demo/iOS/AppDelegate.swift b/Demo/Demo/iOS/AppDelegate.swift
similarity index 100%
rename from TunnelKit/Demo/iOS/AppDelegate.swift
rename to Demo/Demo/iOS/AppDelegate.swift
diff --git a/TunnelKit/Demo/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/Demo/Demo/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from TunnelKit/Demo/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to Demo/Demo/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/Demo/Demo/iOS/Assets.xcassets/Contents.json b/Demo/Demo/iOS/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/Demo/Demo/iOS/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/TunnelKit/Demo/iOS/Base.lproj/LaunchScreen.storyboard b/Demo/Demo/iOS/Base.lproj/LaunchScreen.storyboard
similarity index 100%
rename from TunnelKit/Demo/iOS/Base.lproj/LaunchScreen.storyboard
rename to Demo/Demo/iOS/Base.lproj/LaunchScreen.storyboard
diff --git a/TunnelKit/Demo/iOS/Base.lproj/Main.storyboard b/Demo/Demo/iOS/Base.lproj/Main.storyboard
similarity index 100%
rename from TunnelKit/Demo/iOS/Base.lproj/Main.storyboard
rename to Demo/Demo/iOS/Base.lproj/Main.storyboard
diff --git a/TunnelKit/Demo/iOS/Demo.entitlements b/Demo/Demo/iOS/Demo.entitlements
similarity index 100%
rename from TunnelKit/Demo/iOS/Demo.entitlements
rename to Demo/Demo/iOS/Demo.entitlements
diff --git a/TunnelKit/Demo/iOS/Demo.plist b/Demo/Demo/iOS/Demo.plist
similarity index 100%
rename from TunnelKit/Demo/iOS/Demo.plist
rename to Demo/Demo/iOS/Demo.plist
diff --git a/TunnelKit/Demo/iOS/DemoTunnel.entitlements b/Demo/Demo/iOS/DemoTunnel.entitlements
similarity index 100%
rename from TunnelKit/Demo/iOS/DemoTunnel.entitlements
rename to Demo/Demo/iOS/DemoTunnel.entitlements
diff --git a/TunnelKit/Demo/iOS/ViewController.swift b/Demo/Demo/iOS/ViewController.swift
similarity index 98%
rename from TunnelKit/Demo/iOS/ViewController.swift
rename to Demo/Demo/iOS/ViewController.swift
index 4708def..d51ae75 100644
--- a/TunnelKit/Demo/iOS/ViewController.swift
+++ b/Demo/Demo/iOS/ViewController.swift
@@ -24,7 +24,10 @@
//
import UIKit
-import TunnelKit
+import TunnelKitCore
+import TunnelKitAppExtension
+import TunnelKitManager
+import TunnelKitOpenVPN
private let appGroup = "group.com.algoritmico.TunnelKit.Demo"
diff --git a/TunnelKit/Demo/macOS/AppDelegate.swift b/Demo/Demo/macOS/AppDelegate.swift
similarity index 100%
rename from TunnelKit/Demo/macOS/AppDelegate.swift
rename to Demo/Demo/macOS/AppDelegate.swift
diff --git a/TunnelKit/Demo/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/Demo/Demo/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from TunnelKit/Demo/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to Demo/Demo/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/TunnelKit/Demo/macOS/Base.lproj/Main.storyboard b/Demo/Demo/macOS/Base.lproj/Main.storyboard
similarity index 100%
rename from TunnelKit/Demo/macOS/Base.lproj/Main.storyboard
rename to Demo/Demo/macOS/Base.lproj/Main.storyboard
diff --git a/TunnelKit/Demo/macOS/Demo.entitlements b/Demo/Demo/macOS/Demo.entitlements
similarity index 100%
rename from TunnelKit/Demo/macOS/Demo.entitlements
rename to Demo/Demo/macOS/Demo.entitlements
diff --git a/TunnelKit/Demo/macOS/Demo.plist b/Demo/Demo/macOS/Demo.plist
similarity index 100%
rename from TunnelKit/Demo/macOS/Demo.plist
rename to Demo/Demo/macOS/Demo.plist
diff --git a/TunnelKit/Demo/macOS/DemoTunnel.entitlements b/Demo/Demo/macOS/DemoTunnel.entitlements
similarity index 100%
rename from TunnelKit/Demo/macOS/DemoTunnel.entitlements
rename to Demo/Demo/macOS/DemoTunnel.entitlements
diff --git a/TunnelKit/Demo/macOS/ViewController.swift b/Demo/Demo/macOS/ViewController.swift
similarity index 98%
rename from TunnelKit/Demo/macOS/ViewController.swift
rename to Demo/Demo/macOS/ViewController.swift
index 3698a00..5ef1c91 100644
--- a/TunnelKit/Demo/macOS/ViewController.swift
+++ b/Demo/Demo/macOS/ViewController.swift
@@ -24,7 +24,10 @@
//
import Cocoa
-import TunnelKit
+import TunnelKitCore
+import TunnelKitAppExtension
+import TunnelKitManager
+import TunnelKitOpenVPN
private let appGroup = "DTDYD63ZX9.group.com.algoritmico.TunnelKit.Demo"
diff --git a/TunnelKit/Host/AppDelegate.swift b/Demo/Host/AppDelegate.swift
similarity index 100%
rename from TunnelKit/Host/AppDelegate.swift
rename to Demo/Host/AppDelegate.swift
diff --git a/TunnelKit/Host/Assets.xcassets/AppIcon.appiconset/Contents.json b/Demo/Host/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from TunnelKit/Host/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to Demo/Host/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/TunnelKit/Host/Base.lproj/LaunchScreen.storyboard b/Demo/Host/Base.lproj/LaunchScreen.storyboard
similarity index 100%
rename from TunnelKit/Host/Base.lproj/LaunchScreen.storyboard
rename to Demo/Host/Base.lproj/LaunchScreen.storyboard
diff --git a/TunnelKit/Host/Base.lproj/Main.storyboard b/Demo/Host/Base.lproj/Main.storyboard
similarity index 100%
rename from TunnelKit/Host/Base.lproj/Main.storyboard
rename to Demo/Host/Base.lproj/Main.storyboard
diff --git a/TunnelKit/Host/Host.entitlements b/Demo/Host/Host.entitlements
similarity index 100%
rename from TunnelKit/Host/Host.entitlements
rename to Demo/Host/Host.entitlements
diff --git a/TunnelKit/Host/Info.plist b/Demo/Host/Info.plist
similarity index 100%
rename from TunnelKit/Host/Info.plist
rename to Demo/Host/Info.plist
diff --git a/TunnelKit/Host/ViewController.swift b/Demo/Host/ViewController.swift
similarity index 100%
rename from TunnelKit/Host/ViewController.swift
rename to Demo/Host/ViewController.swift
diff --git a/Demo/TunnelKit.xcodeproj/project.pbxproj b/Demo/TunnelKit.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..d329fb3
--- /dev/null
+++ b/Demo/TunnelKit.xcodeproj/project.pbxproj
@@ -0,0 +1,1054 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 52;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 0E05418725A2334500EFC5FF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05414B25A231D500EFC5FF /* AppDelegate.swift */; };
+ 0E05418825A2334500EFC5FF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05414425A231D500EFC5FF /* ViewController.swift */; };
+ 0E05418925A2334500EFC5FF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E05414525A231D500EFC5FF /* Assets.xcassets */; };
+ 0E05418A25A2334900EFC5FF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E05414825A231D500EFC5FF /* Main.storyboard */; };
+ 0E05418B25A2334900EFC5FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E05414625A231D500EFC5FF /* LaunchScreen.storyboard */; };
+ 0E0541A125A2343500EFC5FF /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E0541A025A2343500EFC5FF /* NetworkExtension.framework */; };
+ 0E0541A925A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0E05419F25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ 0E0541D125A2354500EFC5FF /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413825A231D500EFC5FF /* PacketTunnelProvider.swift */; };
+ 0E0541D825A2355000EFC5FF /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413425A231D500EFC5FF /* Configuration.swift */; };
+ 0E05425825A2392E00EFC5FF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05414125A231D500EFC5FF /* AppDelegate.swift */; };
+ 0E05425925A2392E00EFC5FF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413C25A231D500EFC5FF /* ViewController.swift */; };
+ 0E05426125A2393300EFC5FF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E05413D25A231D500EFC5FF /* Assets.xcassets */; };
+ 0E05426925A2393B00EFC5FF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E05413E25A231D500EFC5FF /* Main.storyboard */; };
+ 0E05427825A239C600EFC5FF /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E0541A025A2343500EFC5FF /* NetworkExtension.framework */; };
+ 0E05428025A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0E05427725A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ 0E0542B925A23A8100EFC5FF /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413425A231D500EFC5FF /* Configuration.swift */; };
+ 0E0542C225A23A8400EFC5FF /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413825A231D500EFC5FF /* PacketTunnelProvider.swift */; };
+ 0E1108AC1F77B9F900A92462 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E1108AB1F77B9F900A92462 /* AppDelegate.swift */; };
+ 0E1108AE1F77B9F900A92462 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E1108AD1F77B9F900A92462 /* ViewController.swift */; };
+ 0E1108B11F77B9F900A92462 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E1108AF1F77B9F900A92462 /* Main.storyboard */; };
+ 0E1108B31F77B9F900A92462 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E1108B21F77B9F900A92462 /* Assets.xcassets */; };
+ 0E1108B61F77B9F900A92462 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E1108B41F77B9F900A92462 /* LaunchScreen.storyboard */; };
+ 0EFD5B312727250500C7D5FD /* TunnelKitOpenVPN in Frameworks */ = {isa = PBXBuildFile; productRef = 0EFD5B302727250500C7D5FD /* TunnelKitOpenVPN */; };
+ 0EFD5B332727250B00C7D5FD /* TunnelKitOpenVPN in Frameworks */ = {isa = PBXBuildFile; productRef = 0EFD5B322727250B00C7D5FD /* TunnelKitOpenVPN */; };
+ 0EFD5B352727250E00C7D5FD /* TunnelKitOpenVPN in Frameworks */ = {isa = PBXBuildFile; productRef = 0EFD5B342727250E00C7D5FD /* TunnelKitOpenVPN */; };
+ 0EFD5B372727251200C7D5FD /* TunnelKitOpenVPN in Frameworks */ = {isa = PBXBuildFile; productRef = 0EFD5B362727251200C7D5FD /* TunnelKitOpenVPN */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 0E0541A725A2343500EFC5FF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 0E05419E25A2343500EFC5FF;
+ remoteInfo = Tunnel;
+ };
+ 0E05427E25A239C600EFC5FF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 0E05427625A239C600EFC5FF;
+ remoteInfo = Tunnel;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 0E0541AD25A2343500EFC5FF /* Embed App Extensions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 13;
+ files = (
+ 0E0541A925A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex in Embed App Extensions */,
+ );
+ name = "Embed App Extensions";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05428425A239C600EFC5FF /* Embed App Extensions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 13;
+ files = (
+ 0E05428025A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex in Embed App Extensions */,
+ );
+ name = "Embed App Extensions";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05438525A240E400EFC5FF /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05438825A240E900EFC5FF /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0ECAF84C246697DA00D8266A /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 0E05413025A231D500EFC5FF /* DemoTunnel.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DemoTunnel.entitlements; sourceTree = ""; };
+ 0E05413225A231D500EFC5FF /* DemoTunnel.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = DemoTunnel.plist; sourceTree = ""; };
+ 0E05413425A231D500EFC5FF /* Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = ""; };
+ 0E05413825A231D500EFC5FF /* PacketTunnelProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacketTunnelProvider.swift; sourceTree = ""; };
+ 0E05413925A231D500EFC5FF /* DemoTunnel.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DemoTunnel.entitlements; sourceTree = ""; };
+ 0E05413C25A231D500EFC5FF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 0E05413D25A231D500EFC5FF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 0E05413F25A231D500EFC5FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 0E05414025A231D500EFC5FF /* Demo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Demo.entitlements; sourceTree = ""; };
+ 0E05414125A231D500EFC5FF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 0E05414225A231D500EFC5FF /* Demo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Demo.plist; sourceTree = ""; };
+ 0E05414425A231D500EFC5FF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 0E05414525A231D500EFC5FF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 0E05414725A231D500EFC5FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 0E05414925A231D500EFC5FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 0E05414A25A231D500EFC5FF /* Demo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Demo.entitlements; sourceTree = ""; };
+ 0E05414B25A231D500EFC5FF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 0E05414C25A231D500EFC5FF /* Demo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Demo.plist; sourceTree = ""; };
+ 0E05416925A232FD00EFC5FF /* TunnelKitDemo-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "TunnelKitDemo-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0E05419F25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "TunnelKitDemoTunnel-iOS.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0E0541A025A2343500EFC5FF /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; };
+ 0E05422C25A236EB00EFC5FF /* TunnelKitDemo-macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "TunnelKitDemo-macOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0E05427725A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "TunnelKitDemoTunnel-macOS.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0E1108A91F77B9F900A92462 /* TunnelKitHost.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TunnelKitHost.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0E1108AB1F77B9F900A92462 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 0E1108AD1F77B9F900A92462 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 0E1108B01F77B9F900A92462 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 0E1108B21F77B9F900A92462 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 0E1108B51F77B9F900A92462 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 0E1108B71F77B9F900A92462 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 0E26B05627272767008FB1E7 /* tunnelkit */ = {isa = PBXFileReference; lastKnownFileType = folder; name = tunnelkit; path = ..; sourceTree = ""; };
+ 0E411B9F2271FA3300E0852C /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libresolv.tbd; sourceTree = DEVELOPER_DIR; };
+ 0E411BA12271FA3C00E0852C /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; };
+ 0E85A25B202CCA3D0059E9F9 /* Host.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Host.entitlements; sourceTree = ""; };
+ 44612F27B9EF890AF8B926DB /* Pods_ios_TunnelKit_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_TunnelKit_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 488FA71CA2DC38D2FDF7D1D8 /* Pods_ios_TunnelKitDemoTunnel_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_TunnelKitDemoTunnel_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 4EF702DD650A65FCBA51506A /* Pods_macos_TunnelKit_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_TunnelKit_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 501B04C95D9A457FFA483C3B /* Pods_macos_TunnelKitDemo_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_TunnelKitDemo_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A49801900FA52CE67047623B /* Pods_macos_TunnelKitDemoTunnel_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_TunnelKitDemoTunnel_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ B24169970F957D36C9D0765C /* Pods_ios_TunnelKitDemo_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_TunnelKitDemo_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ C34F78A0C56932A2127E6C81 /* Pods_ios_TunnelKitTests_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_TunnelKitTests_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D383BA02D6881FDBEF55562A /* Pods_macos_TunnelKitTests_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_TunnelKitTests_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D3B8B90F61D2F5537A5C0691 /* Pods_ios_TunnelKitHost.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_TunnelKitHost.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 0E05416625A232FD00EFC5FF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0EFD5B332727250B00C7D5FD /* TunnelKitOpenVPN in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05419C25A2343500EFC5FF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0EFD5B352727250E00C7D5FD /* TunnelKitOpenVPN in Frameworks */,
+ 0E0541A125A2343500EFC5FF /* NetworkExtension.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05422925A236EB00EFC5FF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0EFD5B312727250500C7D5FD /* TunnelKitOpenVPN in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05427425A239C600EFC5FF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0EFD5B372727251200C7D5FD /* TunnelKitOpenVPN in Frameworks */,
+ 0E05427825A239C600EFC5FF /* NetworkExtension.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E1108A61F77B9F900A92462 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 0E05412B25A231D500EFC5FF /* Demo */ = {
+ isa = PBXGroup;
+ children = (
+ 0E05414325A231D500EFC5FF /* iOS */,
+ 0E05413B25A231D500EFC5FF /* macOS */,
+ 0E05413225A231D500EFC5FF /* DemoTunnel.plist */,
+ 0E05413425A231D500EFC5FF /* Configuration.swift */,
+ 0E05413825A231D500EFC5FF /* PacketTunnelProvider.swift */,
+ );
+ path = Demo;
+ sourceTree = "";
+ };
+ 0E05413B25A231D500EFC5FF /* macOS */ = {
+ isa = PBXGroup;
+ children = (
+ 0E05414025A231D500EFC5FF /* Demo.entitlements */,
+ 0E05413025A231D500EFC5FF /* DemoTunnel.entitlements */,
+ 0E05414225A231D500EFC5FF /* Demo.plist */,
+ 0E05414125A231D500EFC5FF /* AppDelegate.swift */,
+ 0E05413C25A231D500EFC5FF /* ViewController.swift */,
+ 0E05413D25A231D500EFC5FF /* Assets.xcassets */,
+ 0E05413E25A231D500EFC5FF /* Main.storyboard */,
+ );
+ path = macOS;
+ sourceTree = "";
+ };
+ 0E05414325A231D500EFC5FF /* iOS */ = {
+ isa = PBXGroup;
+ children = (
+ 0E05414A25A231D500EFC5FF /* Demo.entitlements */,
+ 0E05413925A231D500EFC5FF /* DemoTunnel.entitlements */,
+ 0E05414C25A231D500EFC5FF /* Demo.plist */,
+ 0E05414B25A231D500EFC5FF /* AppDelegate.swift */,
+ 0E05414425A231D500EFC5FF /* ViewController.swift */,
+ 0E05414525A231D500EFC5FF /* Assets.xcassets */,
+ 0E05414625A231D500EFC5FF /* LaunchScreen.storyboard */,
+ 0E05414825A231D500EFC5FF /* Main.storyboard */,
+ );
+ path = iOS;
+ sourceTree = "";
+ };
+ 0E1108AA1F77B9F900A92462 /* Host */ = {
+ isa = PBXGroup;
+ children = (
+ 0E85A25B202CCA3D0059E9F9 /* Host.entitlements */,
+ 0E1108AB1F77B9F900A92462 /* AppDelegate.swift */,
+ 0E1108AD1F77B9F900A92462 /* ViewController.swift */,
+ 0E1108AF1F77B9F900A92462 /* Main.storyboard */,
+ 0E1108B21F77B9F900A92462 /* Assets.xcassets */,
+ 0E1108B41F77B9F900A92462 /* LaunchScreen.storyboard */,
+ 0E1108B71F77B9F900A92462 /* Info.plist */,
+ );
+ path = Host;
+ sourceTree = "";
+ };
+ 0E17D7EF1F730D9F009EE129 = {
+ isa = PBXGroup;
+ children = (
+ 0EFD5B28272723F000C7D5FD /* Packages */,
+ 0E05412B25A231D500EFC5FF /* Demo */,
+ 0E1108AA1F77B9F900A92462 /* Host */,
+ 0E17D7FA1F730D9F009EE129 /* Products */,
+ 1B27D1F0B446D5907FAF40E1 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 0E17D7FA1F730D9F009EE129 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 0E1108A91F77B9F900A92462 /* TunnelKitHost.app */,
+ 0E05416925A232FD00EFC5FF /* TunnelKitDemo-iOS.app */,
+ 0E05419F25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex */,
+ 0E05422C25A236EB00EFC5FF /* TunnelKitDemo-macOS.app */,
+ 0E05427725A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 0EFD5B28272723F000C7D5FD /* Packages */ = {
+ isa = PBXGroup;
+ children = (
+ 0E26B05627272767008FB1E7 /* tunnelkit */,
+ );
+ name = Packages;
+ sourceTree = "";
+ };
+ 1B27D1F0B446D5907FAF40E1 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 0E411B9F2271FA3300E0852C /* libresolv.tbd */,
+ 0E411BA12271FA3C00E0852C /* libresolv.tbd */,
+ 0E0541A025A2343500EFC5FF /* NetworkExtension.framework */,
+ 44612F27B9EF890AF8B926DB /* Pods_ios_TunnelKit_iOS.framework */,
+ D3B8B90F61D2F5537A5C0691 /* Pods_ios_TunnelKitHost.framework */,
+ C34F78A0C56932A2127E6C81 /* Pods_ios_TunnelKitTests_iOS.framework */,
+ 4EF702DD650A65FCBA51506A /* Pods_macos_TunnelKit_macOS.framework */,
+ D383BA02D6881FDBEF55562A /* Pods_macos_TunnelKitTests_macOS.framework */,
+ B24169970F957D36C9D0765C /* Pods_ios_TunnelKitDemo_iOS.framework */,
+ 488FA71CA2DC38D2FDF7D1D8 /* Pods_ios_TunnelKitDemoTunnel_iOS.framework */,
+ 501B04C95D9A457FFA483C3B /* Pods_macos_TunnelKitDemo_macOS.framework */,
+ A49801900FA52CE67047623B /* Pods_macos_TunnelKitDemoTunnel_macOS.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 0E05416825A232FD00EFC5FF /* TunnelKitDemo-iOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 0E05417A25A2330100EFC5FF /* Build configuration list for PBXNativeTarget "TunnelKitDemo-iOS" */;
+ buildPhases = (
+ 0E05416525A232FD00EFC5FF /* Sources */,
+ 0E05416625A232FD00EFC5FF /* Frameworks */,
+ 0E05416725A232FD00EFC5FF /* Resources */,
+ 0E0541AD25A2343500EFC5FF /* Embed App Extensions */,
+ 0E05438525A240E400EFC5FF /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 0E0541A825A2343500EFC5FF /* PBXTargetDependency */,
+ );
+ name = "TunnelKitDemo-iOS";
+ packageProductDependencies = (
+ 0EFD5B322727250B00C7D5FD /* TunnelKitOpenVPN */,
+ );
+ productName = Demo;
+ productReference = 0E05416925A232FD00EFC5FF /* TunnelKitDemo-iOS.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 0E05419E25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 0E0541AA25A2343500EFC5FF /* Build configuration list for PBXNativeTarget "TunnelKitDemoTunnel-iOS" */;
+ buildPhases = (
+ 0E05419B25A2343500EFC5FF /* Sources */,
+ 0E05419C25A2343500EFC5FF /* Frameworks */,
+ 0E05419D25A2343500EFC5FF /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "TunnelKitDemoTunnel-iOS";
+ packageProductDependencies = (
+ 0EFD5B342727250E00C7D5FD /* TunnelKitOpenVPN */,
+ );
+ productName = Tunnel;
+ productReference = 0E05419F25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
+ 0E05422B25A236EB00EFC5FF /* TunnelKitDemo-macOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 0E05423B25A236EE00EFC5FF /* Build configuration list for PBXNativeTarget "TunnelKitDemo-macOS" */;
+ buildPhases = (
+ 0E05422825A236EB00EFC5FF /* Sources */,
+ 0E05422925A236EB00EFC5FF /* Frameworks */,
+ 0E05422A25A236EB00EFC5FF /* Resources */,
+ 0E05428425A239C600EFC5FF /* Embed App Extensions */,
+ 0E05438825A240E900EFC5FF /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 0E05427F25A239C600EFC5FF /* PBXTargetDependency */,
+ );
+ name = "TunnelKitDemo-macOS";
+ packageProductDependencies = (
+ 0EFD5B302727250500C7D5FD /* TunnelKitOpenVPN */,
+ );
+ productName = Demo;
+ productReference = 0E05422C25A236EB00EFC5FF /* TunnelKitDemo-macOS.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 0E05427625A239C600EFC5FF /* TunnelKitDemoTunnel-macOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 0E05428125A239C600EFC5FF /* Build configuration list for PBXNativeTarget "TunnelKitDemoTunnel-macOS" */;
+ buildPhases = (
+ 0E05427325A239C600EFC5FF /* Sources */,
+ 0E05427425A239C600EFC5FF /* Frameworks */,
+ 0E05427525A239C600EFC5FF /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "TunnelKitDemoTunnel-macOS";
+ packageProductDependencies = (
+ 0EFD5B362727251200C7D5FD /* TunnelKitOpenVPN */,
+ );
+ productName = Tunnel;
+ productReference = 0E05427725A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
+ 0E1108A81F77B9F900A92462 /* TunnelKitHost */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 0E1108B81F77B9F900A92462 /* Build configuration list for PBXNativeTarget "TunnelKitHost" */;
+ buildPhases = (
+ 0E1108A51F77B9F900A92462 /* Sources */,
+ 0E1108A61F77B9F900A92462 /* Frameworks */,
+ 0E1108A71F77B9F900A92462 /* Resources */,
+ 0ECAF84C246697DA00D8266A /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = TunnelKitHost;
+ productName = PIATunnelHost;
+ productReference = 0E1108A91F77B9F900A92462 /* TunnelKitHost.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 0E17D7F01F730D9F009EE129 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1230;
+ LastUpgradeCheck = 1230;
+ ORGANIZATIONNAME = "Davide De Rosa";
+ TargetAttributes = {
+ 0E05416825A232FD00EFC5FF = {
+ CreatedOnToolsVersion = 12.3;
+ ProvisioningStyle = Automatic;
+ };
+ 0E05419E25A2343500EFC5FF = {
+ CreatedOnToolsVersion = 12.3;
+ ProvisioningStyle = Automatic;
+ };
+ 0E05422B25A236EB00EFC5FF = {
+ CreatedOnToolsVersion = 12.3;
+ ProvisioningStyle = Automatic;
+ };
+ 0E05427625A239C600EFC5FF = {
+ CreatedOnToolsVersion = 12.3;
+ ProvisioningStyle = Automatic;
+ };
+ 0E1108A81F77B9F900A92462 = {
+ CreatedOnToolsVersion = 9.0;
+ LastSwiftMigration = 1020;
+ ProvisioningStyle = Automatic;
+ SystemCapabilities = {
+ com.apple.ApplicationGroups.iOS = {
+ enabled = 1;
+ };
+ com.apple.Keychain = {
+ enabled = 1;
+ };
+ };
+ };
+ };
+ };
+ buildConfigurationList = 0E17D7F31F730D9F009EE129 /* Build configuration list for PBXProject "TunnelKit" */;
+ compatibilityVersion = "Xcode 8.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 0E17D7EF1F730D9F009EE129;
+ productRefGroup = 0E17D7FA1F730D9F009EE129 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 0E1108A81F77B9F900A92462 /* TunnelKitHost */,
+ 0E05416825A232FD00EFC5FF /* TunnelKitDemo-iOS */,
+ 0E05422B25A236EB00EFC5FF /* TunnelKitDemo-macOS */,
+ 0E05419E25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS */,
+ 0E05427625A239C600EFC5FF /* TunnelKitDemoTunnel-macOS */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 0E05416725A232FD00EFC5FF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0E05418A25A2334900EFC5FF /* Main.storyboard in Resources */,
+ 0E05418B25A2334900EFC5FF /* LaunchScreen.storyboard in Resources */,
+ 0E05418925A2334500EFC5FF /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05419D25A2343500EFC5FF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05422A25A236EB00EFC5FF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0E05426125A2393300EFC5FF /* Assets.xcassets in Resources */,
+ 0E05426925A2393B00EFC5FF /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05427525A239C600EFC5FF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E1108A71F77B9F900A92462 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0E1108B61F77B9F900A92462 /* LaunchScreen.storyboard in Resources */,
+ 0E1108B31F77B9F900A92462 /* Assets.xcassets in Resources */,
+ 0E1108B11F77B9F900A92462 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 0E05416525A232FD00EFC5FF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0E0541D825A2355000EFC5FF /* Configuration.swift in Sources */,
+ 0E05418825A2334500EFC5FF /* ViewController.swift in Sources */,
+ 0E05418725A2334500EFC5FF /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05419B25A2343500EFC5FF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0E0541D125A2354500EFC5FF /* PacketTunnelProvider.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05422825A236EB00EFC5FF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0E0542B925A23A8100EFC5FF /* Configuration.swift in Sources */,
+ 0E05425825A2392E00EFC5FF /* AppDelegate.swift in Sources */,
+ 0E05425925A2392E00EFC5FF /* ViewController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E05427325A239C600EFC5FF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0E0542C225A23A8400EFC5FF /* PacketTunnelProvider.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 0E1108A51F77B9F900A92462 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0E1108AE1F77B9F900A92462 /* ViewController.swift in Sources */,
+ 0E1108AC1F77B9F900A92462 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 0E0541A825A2343500EFC5FF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 0E05419E25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS */;
+ targetProxy = 0E0541A725A2343500EFC5FF /* PBXContainerItemProxy */;
+ };
+ 0E05427F25A239C600EFC5FF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 0E05427625A239C600EFC5FF /* TunnelKitDemoTunnel-macOS */;
+ targetProxy = 0E05427E25A239C600EFC5FF /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 0E05413E25A231D500EFC5FF /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 0E05413F25A231D500EFC5FF /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 0E05414625A231D500EFC5FF /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 0E05414725A231D500EFC5FF /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+ 0E05414825A231D500EFC5FF /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 0E05414925A231D500EFC5FF /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 0E1108AF1F77B9F900A92462 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 0E1108B01F77B9F900A92462 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 0E1108B41F77B9F900A92462 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 0E1108B51F77B9F900A92462 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 0E05417B25A2330100EFC5FF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_ENTITLEMENTS = Demo/iOS/Demo.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ INFOPLIST_FILE = "$(SRCROOT)/Demo/iOS/Demo.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.TunnelKit.Demo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 0E05417C25A2330100EFC5FF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_ENTITLEMENTS = Demo/iOS/Demo.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ INFOPLIST_FILE = "$(SRCROOT)/Demo/iOS/Demo.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.TunnelKit.Demo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 0E0541AB25A2343500EFC5FF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_ENTITLEMENTS = Demo/iOS/DemoTunnel.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ INFOPLIST_FILE = "$(SRCROOT)/Demo/DemoTunnel.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.TunnelKit.Demo.Tunnel;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 0E0541AC25A2343500EFC5FF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_ENTITLEMENTS = Demo/iOS/DemoTunnel.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ INFOPLIST_FILE = "$(SRCROOT)/Demo/DemoTunnel.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.TunnelKit.Demo.Tunnel;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 0E05423925A236EE00EFC5FF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_ENTITLEMENTS = Demo/macOS/Demo.entitlements;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COMBINE_HIDPI_IMAGES = YES;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ ENABLE_HARDENED_RUNTIME = YES;
+ INFOPLIST_FILE = "$(SRCROOT)/Demo/macOS/Demo.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ );
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.macos.TunnelKit.Demo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SWIFT_VERSION = 5.0;
+ };
+ name = Debug;
+ };
+ 0E05423A25A236EE00EFC5FF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_ENTITLEMENTS = Demo/macOS/Demo.entitlements;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COMBINE_HIDPI_IMAGES = YES;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ ENABLE_HARDENED_RUNTIME = YES;
+ INFOPLIST_FILE = "$(SRCROOT)/Demo/macOS/Demo.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ );
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.macos.TunnelKit.Demo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SWIFT_VERSION = 5.0;
+ };
+ name = Release;
+ };
+ 0E05428225A239C600EFC5FF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_ENTITLEMENTS = Demo/macOS/DemoTunnel.entitlements;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ ENABLE_HARDENED_RUNTIME = YES;
+ INFOPLIST_FILE = "$(SRCROOT)/Demo/DemoTunnel.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ "@executable_path/../../../../Frameworks",
+ );
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.macos.TunnelKit.Demo.Tunnel;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ };
+ name = Debug;
+ };
+ 0E05428325A239C600EFC5FF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CODE_SIGN_ENTITLEMENTS = Demo/macOS/DemoTunnel.entitlements;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ ENABLE_HARDENED_RUNTIME = YES;
+ INFOPLIST_FILE = "$(SRCROOT)/Demo/DemoTunnel.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ "@executable_path/../../../../Frameworks",
+ );
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.macos.TunnelKit.Demo.Tunnel;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ };
+ name = Release;
+ };
+ 0E1108B91F77B9F900A92462 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_ENTITLEMENTS = Host/Host.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ INFOPLIST_FILE = "$(SRCROOT)/Host/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.TunnelKitHost;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 0E1108BA1F77B9F900A92462 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_ENTITLEMENTS = Host/Host.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = DTDYD63ZX9;
+ INFOPLIST_FILE = "$(SRCROOT)/Host/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.TunnelKitHost;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ 0E17D7FF1F730D9F009EE129 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 902;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 4.2;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ 0E17D8001F730D9F009EE129 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 902;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 4.2;
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 0E05417A25A2330100EFC5FF /* Build configuration list for PBXNativeTarget "TunnelKitDemo-iOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 0E05417B25A2330100EFC5FF /* Debug */,
+ 0E05417C25A2330100EFC5FF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 0E0541AA25A2343500EFC5FF /* Build configuration list for PBXNativeTarget "TunnelKitDemoTunnel-iOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 0E0541AB25A2343500EFC5FF /* Debug */,
+ 0E0541AC25A2343500EFC5FF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 0E05423B25A236EE00EFC5FF /* Build configuration list for PBXNativeTarget "TunnelKitDemo-macOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 0E05423925A236EE00EFC5FF /* Debug */,
+ 0E05423A25A236EE00EFC5FF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 0E05428125A239C600EFC5FF /* Build configuration list for PBXNativeTarget "TunnelKitDemoTunnel-macOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 0E05428225A239C600EFC5FF /* Debug */,
+ 0E05428325A239C600EFC5FF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 0E1108B81F77B9F900A92462 /* Build configuration list for PBXNativeTarget "TunnelKitHost" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 0E1108B91F77B9F900A92462 /* Debug */,
+ 0E1108BA1F77B9F900A92462 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 0E17D7F31F730D9F009EE129 /* Build configuration list for PBXProject "TunnelKit" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 0E17D7FF1F730D9F009EE129 /* Debug */,
+ 0E17D8001F730D9F009EE129 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ 0EFD5B302727250500C7D5FD /* TunnelKitOpenVPN */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = TunnelKitOpenVPN;
+ };
+ 0EFD5B322727250B00C7D5FD /* TunnelKitOpenVPN */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = TunnelKitOpenVPN;
+ };
+ 0EFD5B342727250E00C7D5FD /* TunnelKitOpenVPN */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = TunnelKitOpenVPN;
+ };
+ 0EFD5B362727251200C7D5FD /* TunnelKitOpenVPN */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = TunnelKitOpenVPN;
+ };
+/* End XCSwiftPackageProductDependency section */
+ };
+ rootObject = 0E17D7F01F730D9F009EE129 /* Project object */;
+}
diff --git a/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemo-iOS.xcscheme b/Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemo-iOS.xcscheme
similarity index 100%
rename from TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemo-iOS.xcscheme
rename to Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemo-iOS.xcscheme
diff --git a/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemo-macOS.xcscheme b/Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemo-macOS.xcscheme
similarity index 100%
rename from TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemo-macOS.xcscheme
rename to Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemo-macOS.xcscheme
diff --git a/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemoTunnel-iOS.xcscheme b/Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemoTunnel-iOS.xcscheme
similarity index 100%
rename from TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemoTunnel-iOS.xcscheme
rename to Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemoTunnel-iOS.xcscheme
diff --git a/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemoTunnel-macOS.xcscheme b/Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemoTunnel-macOS.xcscheme
similarity index 100%
rename from TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemoTunnel-macOS.xcscheme
rename to Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitDemoTunnel-macOS.xcscheme
diff --git a/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitHost.xcscheme b/Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitHost.xcscheme
similarity index 100%
rename from TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitHost.xcscheme
rename to Demo/TunnelKit.xcodeproj/xcshareddata/xcschemes/TunnelKitHost.xcscheme
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index d1bf7c6..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,3 +0,0 @@
-source "https://rubygems.org"
-
-gem "cocoapods"
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644
index b96f435..0000000
--- a/Gemfile.lock
+++ /dev/null
@@ -1,97 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- CFPropertyList (3.0.4)
- rexml
- activesupport (6.1.4.1)
- concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 1.6, < 2)
- minitest (>= 5.1)
- tzinfo (~> 2.0)
- zeitwerk (~> 2.3)
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
- algoliasearch (1.27.5)
- httpclient (~> 2.8, >= 2.8.3)
- json (>= 1.5.1)
- atomos (0.1.3)
- claide (1.0.3)
- cocoapods (1.11.2)
- addressable (~> 2.8)
- claide (>= 1.0.2, < 2.0)
- cocoapods-core (= 1.11.2)
- cocoapods-deintegrate (>= 1.0.3, < 2.0)
- cocoapods-downloader (>= 1.4.0, < 2.0)
- cocoapods-plugins (>= 1.0.0, < 2.0)
- cocoapods-search (>= 1.0.0, < 2.0)
- cocoapods-trunk (>= 1.4.0, < 2.0)
- cocoapods-try (>= 1.1.0, < 2.0)
- colored2 (~> 3.1)
- escape (~> 0.0.4)
- fourflusher (>= 2.3.0, < 3.0)
- gh_inspector (~> 1.0)
- molinillo (~> 0.8.0)
- nap (~> 1.0)
- ruby-macho (>= 1.0, < 3.0)
- xcodeproj (>= 1.21.0, < 2.0)
- cocoapods-core (1.11.2)
- activesupport (>= 5.0, < 7)
- addressable (~> 2.8)
- algoliasearch (~> 1.0)
- concurrent-ruby (~> 1.1)
- fuzzy_match (~> 2.0.4)
- nap (~> 1.0)
- netrc (~> 0.11)
- public_suffix (~> 4.0)
- typhoeus (~> 1.0)
- cocoapods-deintegrate (1.0.5)
- cocoapods-downloader (1.5.1)
- cocoapods-plugins (1.0.0)
- nap
- cocoapods-search (1.0.1)
- cocoapods-trunk (1.6.0)
- nap (>= 0.8, < 2.0)
- netrc (~> 0.11)
- cocoapods-try (1.2.0)
- colored2 (3.1.2)
- concurrent-ruby (1.1.9)
- escape (0.0.4)
- ethon (0.15.0)
- ffi (>= 1.15.0)
- ffi (1.15.4)
- fourflusher (2.3.1)
- fuzzy_match (2.0.4)
- gh_inspector (1.1.3)
- httpclient (2.8.3)
- i18n (1.8.10)
- concurrent-ruby (~> 1.0)
- json (2.6.0)
- minitest (5.14.4)
- molinillo (0.8.0)
- nanaimo (0.3.0)
- nap (1.1.0)
- netrc (0.11.0)
- public_suffix (4.0.6)
- rexml (3.2.5)
- ruby-macho (2.5.1)
- typhoeus (1.4.0)
- ethon (>= 0.9.0)
- tzinfo (2.0.4)
- concurrent-ruby (~> 1.0)
- xcodeproj (1.21.0)
- CFPropertyList (>= 2.3.3, < 4.0)
- atomos (~> 0.1.3)
- claide (>= 1.0.2, < 2.0)
- colored2 (~> 3.1)
- nanaimo (~> 0.3.0)
- rexml (~> 3.2.4)
- zeitwerk (2.4.2)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- cocoapods
-
-BUNDLED WITH
- 2.2.15
diff --git a/Package.resolved b/Package.resolved
new file mode 100644
index 0000000..dca1223
--- /dev/null
+++ b/Package.resolved
@@ -0,0 +1,25 @@
+{
+ "object": {
+ "pins": [
+ {
+ "package": "openssl-apple",
+ "repositoryURL": "https://github.com/keeshux/openssl-apple",
+ "state": {
+ "branch": null,
+ "revision": "1889136399ba40e4fc358cfe7fafef7170aac3f7",
+ "version": "1.1.112"
+ }
+ },
+ {
+ "package": "SwiftyBeaver",
+ "repositoryURL": "https://github.com/SwiftyBeaver/SwiftyBeaver",
+ "state": {
+ "branch": null,
+ "revision": "2c039501d6eeb4d4cd4aec4a8d884ad28862e044",
+ "version": "1.9.5"
+ }
+ }
+ ]
+ },
+ "version": 1
+}
diff --git a/Package.swift b/Package.swift
new file mode 100644
index 0000000..3149f99
--- /dev/null
+++ b/Package.swift
@@ -0,0 +1,116 @@
+// swift-tools-version:5.5
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let package = Package(
+ name: "TunnelKit",
+ platforms: [
+ .macOS(.v10_15), .iOS(.v12)
+ ],
+ products: [
+ // Products define the executables and libraries a package produces, and make them visible to other packages.
+ .library(
+ name: "TunnelKitCore",
+ targets: ["TunnelKitCore"]
+ ),
+ .library(
+ name: "TunnelKitAppExtension",
+ targets: ["TunnelKitAppExtension"]
+ ),
+ .library(
+ name: "TunnelKitManager",
+ targets: ["TunnelKitManager"]
+ ),
+ .library(
+ name: "TunnelKitNative",
+ targets: ["TunnelKitNative"]
+ ),
+ .library(
+ name: "TunnelKitOpenVPN",
+ targets: ["TunnelKitOpenVPN"]
+ ),
+ .library(
+ name: "TunnelKitLZO",
+ targets: ["TunnelKitLZO"]
+ )
+ ],
+ dependencies: [
+ // Dependencies declare other packages that this package depends on.
+ // .package(url: /* package url */, from: "1.0.0"),
+ .package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver", from: "1.9.0"),
+ .package(url: "https://github.com/keeshux/openssl-apple", from: "1.1.100")
+ ],
+ targets: [
+ // Targets are the basic building blocks of a package. A target can define a module or a test suite.
+ // Targets can depend on other targets in this package, and on products in packages this package depends on.
+ .target(
+ name: "TunnelKitCore",
+ dependencies: [
+ "InternalUtils",
+ "TunnelKitCoreObjC",
+ "SwiftyBeaver"]),
+ .target(
+ name: "TunnelKitCoreObjC",
+ dependencies: []),
+ .target(
+ name: "TunnelKitAppExtension",
+ dependencies: [
+ "TunnelKitCore",
+ "SwiftyBeaver"]),
+ .target(
+ name: "TunnelKitManager",
+ dependencies: [
+ "TunnelKitCore"]),
+ .target(
+ name: "TunnelKitNative",
+ dependencies: [
+ "TunnelKitCore",
+ "TunnelKitManager"]),
+ .target(
+ name: "TunnelKitOpenVPN",
+ dependencies: [
+ "TunnelKitCore",
+ "TunnelKitOpenVPNObjC",
+ "TunnelKitAppExtension",
+ "TunnelKitManager"]),
+ .target(
+ name: "TunnelKitOpenVPNObjC",
+ dependencies: [
+ "TunnelKitCoreObjC",
+ "openssl-apple"]),
+ .target(
+ name: "TunnelKitLZO",
+ dependencies: [],
+ exclude: [
+ "lib/COPYING",
+ "lib/Makefile",
+ "lib/README.LZO"
+ ]),
+ .target(
+ name: "InternalUtils",
+ dependencies: []),
+ .testTarget(
+ name: "TunnelKitCoreTests",
+ dependencies: [
+ "TunnelKitCore",
+ "TunnelKitCoreObjC"
+ ]),
+ .testTarget(
+ name: "TunnelKitOpenVPNTests",
+ dependencies: [
+ "TunnelKitCoreTests",
+ "TunnelKitOpenVPN",
+ "TunnelKitOpenVPNObjC",
+ "TunnelKitLZO"
+ ],
+ resources: [
+ .process("Resources")
+ ]),
+ .testTarget(
+ name: "TunnelKitLZOTests",
+ dependencies: [
+ "TunnelKitLZO"
+ ]),
+ ]
+)
diff --git a/Podfile b/Podfile
deleted file mode 100644
index 8d984bc..0000000
--- a/Podfile
+++ /dev/null
@@ -1,41 +0,0 @@
-source 'https://github.com/CocoaPods/Specs.git'
-use_frameworks!
-
-def shared_pods
- pod 'SwiftyBeaver'
- pod 'OpenSSL-Apple', '~> 1.1.1l.11'
-end
-
-def demo_pods
- pod 'SwiftyBeaver'
-end
-
-abstract_target 'ios' do
- platform :ios, '12.0'
- target 'TunnelKit-iOS' do
- shared_pods
- end
- target 'TunnelKitTests-iOS' do
- end
- target 'TunnelKitHost' do
- end
- target 'TunnelKitDemo-iOS' do
- demo_pods
- end
- target 'TunnelKitDemoTunnel-iOS' do
- end
-end
-
-abstract_target 'macos' do
- platform :osx, '10.15'
- target 'TunnelKit-macOS' do
- shared_pods
- end
- target 'TunnelKitTests-macOS' do
- end
- target 'TunnelKitDemo-macOS' do
- demo_pods
- end
- target 'TunnelKitDemoTunnel-macOS' do
- end
-end
diff --git a/Podfile.lock b/Podfile.lock
deleted file mode 100644
index e00bfbf..0000000
--- a/Podfile.lock
+++ /dev/null
@@ -1,20 +0,0 @@
-PODS:
- - OpenSSL-Apple (1.1.1l.11)
- - SwiftyBeaver (1.9.5)
-
-DEPENDENCIES:
- - OpenSSL-Apple (~> 1.1.1l.11)
- - SwiftyBeaver
-
-SPEC REPOS:
- https://github.com/CocoaPods/Specs.git:
- - OpenSSL-Apple
- - SwiftyBeaver
-
-SPEC CHECKSUMS:
- OpenSSL-Apple: fb93d9a7ce4529054764ce19bb80947a38aee09b
- SwiftyBeaver: 84069991dd5dca07d7069100985badaca7f0ce82
-
-PODFILE CHECKSUM: acb440e8c365ee318f02b159fee4a173163fa454
-
-COCOAPODS: 1.11.2
diff --git a/TunnelKit/Sources/Core/Data+Manipulation.swift b/Sources/InternalUtils/Data+Manipulation.swift
similarity index 87%
rename from TunnelKit/Sources/Core/Data+Manipulation.swift
rename to Sources/InternalUtils/Data+Manipulation.swift
index 0646a7c..81eb47e 100644
--- a/TunnelKit/Sources/Core/Data+Manipulation.swift
+++ b/Sources/InternalUtils/Data+Manipulation.swift
@@ -39,8 +39,9 @@ import Foundation
// hex -> Data conversion code from: http://stackoverflow.com/questions/32231926/nsdata-from-hex-string
// Data -> hex conversion code from: http://stackoverflow.com/questions/39075043/how-to-convert-data-to-hex-string-in-swift
+/// :nodoc:
extension UnicodeScalar {
- var hexNibble: UInt8 {
+ public var hexNibble: UInt8 {
let value = self.value
if 48 <= value && value <= 57 {
return UInt8(value - 48)
@@ -55,8 +56,9 @@ extension UnicodeScalar {
}
}
+/// :nodoc:
extension Data {
- init(hex: String) {
+ public init(hex: String) {
let scalars = hex.unicodeScalars
var bytes = Array(repeating: 0, count: (scalars.count + 1) >> 1)
for (index, scalar) in scalars.enumerated() {
@@ -69,21 +71,22 @@ extension Data {
self = Data(bytes)
}
- func toHex() -> String {
+ public func toHex() -> String {
return map { String(format: "%02hhx", $0) }.joined()
}
- mutating func zero() {
+ public mutating func zero() {
resetBytes(in: 0.. String? {
+ public func nullTerminatedString(from: Int) -> String? {
var nullOffset: Int?
for i in from.. UInt16 {
+ public func UInt16Value(from: Int) -> UInt16 {
var value: UInt16 = 0
for i in 0..<2 {
let byte = self[from + i]
@@ -169,7 +172,7 @@ extension Data {
}
// best
- func UInt32Value(from: Int) -> UInt32 {
+ public func UInt32Value(from: Int) -> UInt32 {
return subdata(in: from..<(from + 4)).withUnsafeBytes {
$0.load(as: UInt32.self)
}
@@ -188,39 +191,43 @@ extension Data {
return value
}
- func networkUInt16Value(from: Int) -> UInt16 {
+ public func networkUInt16Value(from: Int) -> UInt16 {
return UInt16(bigEndian: subdata(in: from..<(from + 2)).withUnsafeBytes {
$0.load(as: UInt16.self)
})
}
- func networkUInt32Value(from: Int) -> UInt32 {
+ public func networkUInt32Value(from: Int) -> UInt32 {
return UInt32(bigEndian: subdata(in: from..<(from + 4)).withUnsafeBytes {
$0.load(as: UInt32.self)
})
}
}
+/// :nodoc:
extension Data {
- func subdata(offset: Int, count: Int) -> Data {
+ public func subdata(offset: Int, count: Int) -> Data {
return subdata(in: offset..<(offset + count))
}
}
+/// :nodoc:
extension Array where Element == Data {
- var flatCount: Int {
+ public var flatCount: Int {
return reduce(0) { $0 + $1.count }
}
}
+/// :nodoc:
extension UnsafeRawBufferPointer {
- var bytePointer: UnsafePointer {
+ public var bytePointer: UnsafePointer {
return bindMemory(to: Element.self).baseAddress!
}
}
+/// :nodoc:
extension UnsafeMutableRawBufferPointer {
- var bytePointer: UnsafeMutablePointer {
+ public var bytePointer: UnsafeMutablePointer {
return bindMemory(to: Element.self).baseAddress!
}
}
diff --git a/TunnelKit/Sources/Core/NSRegularExpression+Shortcuts.swift b/Sources/InternalUtils/NSRegularExpression+Shortcuts.swift
similarity index 86%
rename from TunnelKit/Sources/Core/NSRegularExpression+Shortcuts.swift
rename to Sources/InternalUtils/NSRegularExpression+Shortcuts.swift
index 51a3c6e..f00ce68 100644
--- a/TunnelKit/Sources/Core/NSRegularExpression+Shortcuts.swift
+++ b/Sources/InternalUtils/NSRegularExpression+Shortcuts.swift
@@ -25,12 +25,13 @@
import Foundation
+/// :nodoc:
extension NSRegularExpression {
- convenience init(_ pattern: String) {
+ public convenience init(_ pattern: String) {
try! self.init(pattern: pattern, options: [])
}
- func enumerateComponents(in string: String, using block: ([String]) -> Void) {
+ public func enumerateComponents(in string: String, using block: ([String]) -> Void) {
enumerateMatches(in: string, options: [], range: NSMakeRange(0, string.count)) { (result, flags, stop) in
guard let range = result?.range else {
return
@@ -41,7 +42,7 @@ extension NSRegularExpression {
}
}
- func enumerateArguments(in string: String, using block: ([String]) -> Void) {
+ public func enumerateArguments(in string: String, using block: ([String]) -> Void) {
enumerateComponents(in: string) { (tokens) in
var args = tokens
args.removeFirst()
diff --git a/TunnelKit/Sources/Core/Utils.swift b/Sources/InternalUtils/Utils.swift
similarity index 95%
rename from TunnelKit/Sources/Core/Utils.swift
rename to Sources/InternalUtils/Utils.swift
index 873c682..0fcd985 100644
--- a/TunnelKit/Sources/Core/Utils.swift
+++ b/Sources/InternalUtils/Utils.swift
@@ -44,7 +44,7 @@ public extension DispatchQueue {
}
/// :nodoc:
-func fromDictionary(_ type: T.Type, _ dictionary: [String: Any]) throws -> T {
+public func fromDictionary(_ type: T.Type, _ dictionary: [String: Any]) throws -> T {
let data = try JSONSerialization.data(withJSONObject: dictionary, options: .fragmentsAllowed)
return try JSONDecoder().decode(T.self, from: data)
}
@@ -62,7 +62,7 @@ public extension Encodable {
/// :nodoc:
extension TimeInterval {
- var asTimeString: String {
+ public var asTimeString: String {
var ticks = Int(self)
let hours = ticks / 3600
ticks %= 3600
diff --git a/TunnelKit/Sources/AppExtension/GenericSocket.swift b/Sources/TunnelKitAppExtension/GenericSocket.swift
similarity index 100%
rename from TunnelKit/Sources/AppExtension/GenericSocket.swift
rename to Sources/TunnelKitAppExtension/GenericSocket.swift
diff --git a/TunnelKit/Sources/AppExtension/InterfaceObserver.swift b/Sources/TunnelKitAppExtension/InterfaceObserver.swift
similarity index 100%
rename from TunnelKit/Sources/AppExtension/InterfaceObserver.swift
rename to Sources/TunnelKitAppExtension/InterfaceObserver.swift
diff --git a/TunnelKit/Sources/AppExtension/Keychain.swift b/Sources/TunnelKitAppExtension/Keychain.swift
similarity index 100%
rename from TunnelKit/Sources/AppExtension/Keychain.swift
rename to Sources/TunnelKitAppExtension/Keychain.swift
diff --git a/TunnelKit/Sources/AppExtension/LinkProducer.swift b/Sources/TunnelKitAppExtension/LinkProducer.swift
similarity index 98%
rename from TunnelKit/Sources/AppExtension/LinkProducer.swift
rename to Sources/TunnelKitAppExtension/LinkProducer.swift
index 371500e..2c660e0 100644
--- a/TunnelKit/Sources/AppExtension/LinkProducer.swift
+++ b/Sources/TunnelKitAppExtension/LinkProducer.swift
@@ -24,6 +24,7 @@
//
import Foundation
+import TunnelKitCore
/// Entity able to produce a `LinkInterface`.
public protocol LinkProducer {
diff --git a/TunnelKit/Sources/AppExtension/MemoryDestination.swift b/Sources/TunnelKitAppExtension/MemoryDestination.swift
similarity index 100%
rename from TunnelKit/Sources/AppExtension/MemoryDestination.swift
rename to Sources/TunnelKitAppExtension/MemoryDestination.swift
diff --git a/TunnelKit/Sources/AppExtension/Transport/NETCPSocket.swift b/Sources/TunnelKitAppExtension/Transport/NETCPSocket.swift
similarity index 99%
rename from TunnelKit/Sources/AppExtension/Transport/NETCPSocket.swift
rename to Sources/TunnelKitAppExtension/Transport/NETCPSocket.swift
index e084e92..2548968 100644
--- a/TunnelKit/Sources/AppExtension/Transport/NETCPSocket.swift
+++ b/Sources/TunnelKitAppExtension/Transport/NETCPSocket.swift
@@ -37,6 +37,7 @@
import Foundation
import NetworkExtension
import SwiftyBeaver
+import TunnelKitCore
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/AppExtension/Transport/NETunnelInterface.swift b/Sources/TunnelKitAppExtension/Transport/NETunnelInterface.swift
similarity index 99%
rename from TunnelKit/Sources/AppExtension/Transport/NETunnelInterface.swift
rename to Sources/TunnelKitAppExtension/Transport/NETunnelInterface.swift
index 28f5a20..8d54fcb 100644
--- a/TunnelKit/Sources/AppExtension/Transport/NETunnelInterface.swift
+++ b/Sources/TunnelKitAppExtension/Transport/NETunnelInterface.swift
@@ -36,6 +36,7 @@
import Foundation
import NetworkExtension
+import TunnelKitCore
import SwiftyBeaver
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/AppExtension/Transport/NEUDPSocket.swift b/Sources/TunnelKitAppExtension/Transport/NEUDPSocket.swift
similarity index 99%
rename from TunnelKit/Sources/AppExtension/Transport/NEUDPSocket.swift
rename to Sources/TunnelKitAppExtension/Transport/NEUDPSocket.swift
index 9312280..429baf3 100644
--- a/TunnelKit/Sources/AppExtension/Transport/NEUDPSocket.swift
+++ b/Sources/TunnelKitAppExtension/Transport/NEUDPSocket.swift
@@ -37,6 +37,7 @@
import Foundation
import NetworkExtension
import SwiftyBeaver
+import TunnelKitCore
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/AppExtension/Transport/NWTCPConnectionState+Description.swift b/Sources/TunnelKitAppExtension/Transport/NWTCPConnectionState+Description.swift
similarity index 100%
rename from TunnelKit/Sources/AppExtension/Transport/NWTCPConnectionState+Description.swift
rename to Sources/TunnelKitAppExtension/Transport/NWTCPConnectionState+Description.swift
diff --git a/TunnelKit/Sources/AppExtension/Transport/NWUDPSessionState+Description.swift b/Sources/TunnelKitAppExtension/Transport/NWUDPSessionState+Description.swift
similarity index 100%
rename from TunnelKit/Sources/AppExtension/Transport/NWUDPSessionState+Description.swift
rename to Sources/TunnelKitAppExtension/Transport/NWUDPSessionState+Description.swift
diff --git a/TunnelKit/Sources/Core/BidirectionalState.swift b/Sources/TunnelKitCore/BidirectionalState.swift
similarity index 100%
rename from TunnelKit/Sources/Core/BidirectionalState.swift
rename to Sources/TunnelKitCore/BidirectionalState.swift
diff --git a/TunnelKit/Sources/Core/ConfigurationError.swift b/Sources/TunnelKitCore/ConfigurationError.swift
similarity index 100%
rename from TunnelKit/Sources/Core/ConfigurationError.swift
rename to Sources/TunnelKitCore/ConfigurationError.swift
diff --git a/TunnelKit/Sources/Core/CoreConfiguration.swift b/Sources/TunnelKitCore/CoreConfiguration.swift
similarity index 89%
rename from TunnelKit/Sources/Core/CoreConfiguration.swift
rename to Sources/TunnelKitCore/CoreConfiguration.swift
index 7987383..f2f81db 100644
--- a/TunnelKit/Sources/Core/CoreConfiguration.swift
+++ b/Sources/TunnelKitCore/CoreConfiguration.swift
@@ -36,10 +36,11 @@
import Foundation
-class CoreConfiguration {
- static let identifier = "com.algoritmico.TunnelKit"
+/// :nodoc:
+public class CoreConfiguration {
+ public static let identifier = "com.algoritmico.TunnelKit"
- static let version: String = {
+ public static let version: String = {
let bundle = Bundle(for: CoreConfiguration.self)
guard let info = bundle.infoDictionary else {
return ""
@@ -55,17 +56,17 @@ class CoreConfiguration {
}()
// configurable
- static var masksPrivateData = true
+ public static var masksPrivateData = true
- static var versionIdentifier: String?
+ public static var versionIdentifier: String?
- static let logsSensitiveData = false
+ public static let logsSensitiveData = false
- static var reconnectionDelay = 2.0
+ public static var reconnectionDelay = 2.0
}
extension CustomStringConvertible {
- var maskedDescription: String {
+ public var maskedDescription: String {
guard CoreConfiguration.masksPrivateData else {
return description
}
diff --git a/TunnelKit/Sources/Core/DNSProtocol.swift b/Sources/TunnelKitCore/DNSProtocol.swift
similarity index 100%
rename from TunnelKit/Sources/Core/DNSProtocol.swift
rename to Sources/TunnelKitCore/DNSProtocol.swift
diff --git a/TunnelKit/Sources/Core/DNSResolver.swift b/Sources/TunnelKitCore/DNSResolver.swift
similarity index 97%
rename from TunnelKit/Sources/Core/DNSResolver.swift
rename to Sources/TunnelKitCore/DNSResolver.swift
index cb0b294..9a88506 100644
--- a/TunnelKit/Sources/Core/DNSResolver.swift
+++ b/Sources/TunnelKitCore/DNSResolver.swift
@@ -44,6 +44,12 @@ public struct DNSRecord {
/// `true` if IPv6.
public let isIPv6: Bool
+
+ /// :nodoc:
+ public init(address: String, isIPv6: Bool) {
+ self.address = address
+ self.isIPv6 = isIPv6
+ }
}
/// Convenient methods for DNS resolution.
diff --git a/TunnelKit/Sources/Core/EndpointProtocol.swift b/Sources/TunnelKitCore/EndpointProtocol.swift
similarity index 100%
rename from TunnelKit/Sources/Core/EndpointProtocol.swift
rename to Sources/TunnelKitCore/EndpointProtocol.swift
diff --git a/TunnelKit/Sources/Core/Errors.swift b/Sources/TunnelKitCore/Errors.swift
similarity index 89%
rename from TunnelKit/Sources/Core/Errors.swift
rename to Sources/TunnelKitCore/Errors.swift
index a7daa0d..80c81d2 100644
--- a/TunnelKit/Sources/Core/Errors.swift
+++ b/Sources/TunnelKitCore/Errors.swift
@@ -24,15 +24,15 @@
//
import Foundation
-import __TunnelKitCore
+import TunnelKitCoreObjC
extension Error {
- func isTunnelKitError() -> Bool {
+ public func isTunnelKitError() -> Bool {
let te = self as NSError
return te.domain == TunnelKitErrorDomain
}
- func tunnelKitErrorCode() -> TunnelKitErrorCode? {
+ public func tunnelKitErrorCode() -> TunnelKitErrorCode? {
let te = self as NSError
guard te.domain == TunnelKitErrorDomain else {
return nil
diff --git a/TunnelKit/Sources/Core/IOInterface.swift b/Sources/TunnelKitCore/IOInterface.swift
similarity index 100%
rename from TunnelKit/Sources/Core/IOInterface.swift
rename to Sources/TunnelKitCore/IOInterface.swift
diff --git a/TunnelKit/Sources/Core/IPHeader.swift b/Sources/TunnelKitCore/IPHeader.swift
similarity index 100%
rename from TunnelKit/Sources/Core/IPHeader.swift
rename to Sources/TunnelKitCore/IPHeader.swift
diff --git a/TunnelKit/Sources/Core/IPv4Settings.swift b/Sources/TunnelKitCore/IPv4Settings.swift
similarity index 86%
rename from TunnelKit/Sources/Core/IPv4Settings.swift
rename to Sources/TunnelKitCore/IPv4Settings.swift
index adce721..0c5fb58 100644
--- a/TunnelKit/Sources/Core/IPv4Settings.swift
+++ b/Sources/TunnelKitCore/IPv4Settings.swift
@@ -40,7 +40,8 @@ public struct IPv4Settings: Codable, CustomStringConvertible {
/// The address of the gateway (uses default gateway if not set).
public let gateway: String
- init(_ destination: String, _ mask: String?, _ gateway: String) {
+ /// :nodoc:
+ public init(_ destination: String, _ mask: String?, _ gateway: String) {
self.destination = destination
self.mask = mask ?? "255.255.255.255"
self.gateway = gateway
@@ -66,6 +67,14 @@ public struct IPv4Settings: Codable, CustomStringConvertible {
/// The additional routes.
public let routes: [Route]
+ /// :nodoc:
+ public init(address: String, addressMask: String, defaultGateway: String, routes: [Route]) {
+ self.address = address
+ self.addressMask = addressMask
+ self.defaultGateway = defaultGateway
+ self.routes = routes
+ }
+
// MARK: CustomStringConvertible
/// :nodoc:
diff --git a/TunnelKit/Sources/Core/IPv6Settings.swift b/Sources/TunnelKitCore/IPv6Settings.swift
similarity index 85%
rename from TunnelKit/Sources/Core/IPv6Settings.swift
rename to Sources/TunnelKitCore/IPv6Settings.swift
index 0d60b17..c3fbac1 100644
--- a/TunnelKit/Sources/Core/IPv6Settings.swift
+++ b/Sources/TunnelKitCore/IPv6Settings.swift
@@ -40,7 +40,8 @@ public struct IPv6Settings: Codable, CustomStringConvertible {
/// The address of the gateway (uses default gateway if not set).
public let gateway: String
- init(_ destination: String, _ prefixLength: UInt8?, _ gateway: String) {
+ /// :nodoc:
+ public init(_ destination: String, _ prefixLength: UInt8?, _ gateway: String) {
self.destination = destination
self.prefixLength = prefixLength ?? 3
self.gateway = gateway
@@ -66,6 +67,14 @@ public struct IPv6Settings: Codable, CustomStringConvertible {
/// The additional routes.
public let routes: [Route]
+ /// :nodoc:
+ public init(address: String, addressPrefixLength: UInt8, defaultGateway: String, routes: [Route]) {
+ self.address = address
+ self.addressPrefixLength = addressPrefixLength
+ self.defaultGateway = defaultGateway
+ self.routes = routes
+ }
+
// MARK: CustomStringConvertible
/// :nodoc:
diff --git a/TunnelKit/Sources/Core/LinkInterface.swift b/Sources/TunnelKitCore/LinkInterface.swift
similarity index 100%
rename from TunnelKit/Sources/Core/LinkInterface.swift
rename to Sources/TunnelKitCore/LinkInterface.swift
diff --git a/TunnelKit/Sources/Core/Proxy.swift b/Sources/TunnelKitCore/Proxy.swift
similarity index 100%
rename from TunnelKit/Sources/Core/Proxy.swift
rename to Sources/TunnelKitCore/Proxy.swift
diff --git a/TunnelKit/Sources/Core/SecureRandom.swift b/Sources/TunnelKitCore/SecureRandom.swift
similarity index 92%
rename from TunnelKit/Sources/Core/SecureRandom.swift
rename to Sources/TunnelKitCore/SecureRandom.swift
index 53a8c9b..6f6e57f 100644
--- a/TunnelKit/Sources/Core/SecureRandom.swift
+++ b/Sources/TunnelKitCore/SecureRandom.swift
@@ -36,13 +36,16 @@
import Foundation
import Security.SecRandom
-import __TunnelKitCore
+import TunnelKitCoreObjC
+import InternalUtils
-enum SecureRandomError: Error {
+/// :nodoc:
+public enum SecureRandomError: Error {
case randomGenerator
}
-class SecureRandom {
+/// :nodoc:
+public class SecureRandom {
@available(*, deprecated)
static func uint32FromBuffer() throws -> UInt32 {
var randomBuffer = [UInt8](repeating: 0, count: 4)
@@ -59,7 +62,7 @@ class SecureRandom {
return randomNumber
}
- static func uint32() throws -> UInt32 {
+ public static func uint32() throws -> UInt32 {
var randomNumber: UInt32 = 0
try withUnsafeMutablePointer(to: &randomNumber) {
@@ -73,7 +76,7 @@ class SecureRandom {
return randomNumber
}
- static func data(length: Int) throws -> Data {
+ public static func data(length: Int) throws -> Data {
var randomData = Data(count: length)
try randomData.withUnsafeMutableBytes {
@@ -86,7 +89,7 @@ class SecureRandom {
return randomData
}
- static func safeData(length: Int) throws -> ZeroingData {
+ public static func safeData(length: Int) throws -> ZeroingData {
let randomBytes = UnsafeMutablePointer.allocate(capacity: length)
defer {
// randomBytes.initialize(to: 0, count: length)
diff --git a/TunnelKit/Sources/Core/Session.swift b/Sources/TunnelKitCore/Session.swift
similarity index 100%
rename from TunnelKit/Sources/Core/Session.swift
rename to Sources/TunnelKitCore/Session.swift
diff --git a/TunnelKit/Sources/Core/SocketType.swift b/Sources/TunnelKitCore/SocketType.swift
similarity index 100%
rename from TunnelKit/Sources/Core/SocketType.swift
rename to Sources/TunnelKitCore/SocketType.swift
diff --git a/TunnelKit/Sources/Core/TunnelInterface.swift b/Sources/TunnelKitCore/TunnelInterface.swift
similarity index 100%
rename from TunnelKit/Sources/Core/TunnelInterface.swift
rename to Sources/TunnelKitCore/TunnelInterface.swift
diff --git a/TunnelKit/Sources/Core/ZeroingData.swift b/Sources/TunnelKitCore/ZeroingData.swift
similarity index 84%
rename from TunnelKit/Sources/Core/ZeroingData.swift
rename to Sources/TunnelKitCore/ZeroingData.swift
index 49cabc1..87f2dce 100644
--- a/TunnelKit/Sources/Core/ZeroingData.swift
+++ b/Sources/TunnelKitCore/ZeroingData.swift
@@ -35,36 +35,36 @@
//
import Foundation
-import __TunnelKitCore
+import TunnelKitCoreObjC
-func Z() -> ZeroingData {
+public func Z() -> ZeroingData {
return ZeroingData()
}
-func Z(count: Int) -> ZeroingData {
+public func Z(count: Int) -> ZeroingData {
return ZeroingData(count: count)
}
-func Z(bytes: UnsafePointer, count: Int) -> ZeroingData {
+public func Z(bytes: UnsafePointer, count: Int) -> ZeroingData {
return ZeroingData(bytes: bytes, count: count)
}
-func Z(_ uint8: UInt8) -> ZeroingData {
+public func Z(_ uint8: UInt8) -> ZeroingData {
return ZeroingData(uInt8: uint8)
}
-func Z(_ uint16: UInt16) -> ZeroingData {
+public func Z(_ uint16: UInt16) -> ZeroingData {
return ZeroingData(uInt16: uint16)
}
-func Z(_ data: Data) -> ZeroingData {
+public func Z(_ data: Data) -> ZeroingData {
return ZeroingData(data: data)
}
-//func Z(_ data: Data, _ offset: Int, _ count: Int) -> ZeroingData {
+//public func Z(_ data: Data, _ offset: Int, _ count: Int) -> ZeroingData {
// return ZeroingData(data: data, offset: offset, count: count)
//}
-func Z(_ string: String, nullTerminated: Bool) -> ZeroingData {
+public func Z(_ string: String, nullTerminated: Bool) -> ZeroingData {
return ZeroingData(string: string, nullTerminated: nullTerminated)
}
diff --git a/TunnelKit/Sources/Core/Allocation.m b/Sources/TunnelKitCoreObjC/Allocation.m
similarity index 100%
rename from TunnelKit/Sources/Core/Allocation.m
rename to Sources/TunnelKitCoreObjC/Allocation.m
diff --git a/TunnelKit/Sources/Core/Errors.m b/Sources/TunnelKitCoreObjC/Errors.m
similarity index 100%
rename from TunnelKit/Sources/Core/Errors.m
rename to Sources/TunnelKitCoreObjC/Errors.m
diff --git a/TunnelKit/Sources/Core/LZO.m b/Sources/TunnelKitCoreObjC/LZOFactory.m
similarity index 90%
rename from TunnelKit/Sources/Core/LZO.m
rename to Sources/TunnelKitCoreObjC/LZOFactory.m
index b9ff7bd..96b5cbc 100644
--- a/TunnelKit/Sources/Core/LZO.m
+++ b/Sources/TunnelKitCoreObjC/LZOFactory.m
@@ -1,5 +1,5 @@
//
-// LZO.m
+// LZOFactory.m
// TunnelKit
//
// Created by Davide De Rosa on 3/18/19.
@@ -23,7 +23,7 @@
// along with TunnelKit. If not, see .
//
-#import "LZO.h"
+#import "LZOFactory.h"
#import "ZeroingData.h"
static NSString *const LZOClassName = @"StandardLZO";
@@ -34,12 +34,16 @@ static Class LZOClass()
return [bundle classNamed:LZOClassName];
}
-BOOL LZOIsSupported()
+@implementation LZOFactory
+
++ (BOOL)isSupported
{
return LZOClass() != nil;
}
-id LZOCreate()
++ (id)create
{
return [[LZOClass() alloc] init];
}
+
+@end
diff --git a/TunnelKit/Sources/Core/RoutingTable.m b/Sources/TunnelKitCoreObjC/RoutingTable.m
similarity index 100%
rename from TunnelKit/Sources/Core/RoutingTable.m
rename to Sources/TunnelKitCoreObjC/RoutingTable.m
diff --git a/TunnelKit/Sources/Core/RoutingTableEntry.m b/Sources/TunnelKitCoreObjC/RoutingTableEntry.m
similarity index 99%
rename from TunnelKit/Sources/Core/RoutingTableEntry.m
rename to Sources/TunnelKitCoreObjC/RoutingTableEntry.m
index ea46515..0eb6e1c 100644
--- a/TunnelKit/Sources/Core/RoutingTableEntry.m
+++ b/Sources/TunnelKitCoreObjC/RoutingTableEntry.m
@@ -411,6 +411,7 @@ char *routename(uint32_t in)
char *routename6(struct sockaddr_in6 *sa6)
{
static char line[MAXHOSTNAMELEN];
+ int flag = NI_NUMERICHOST;
/* use local variable for safety */
struct sockaddr_in6 sa6_local = {sizeof(sa6_local), AF_INET6, };
@@ -480,9 +481,10 @@ char *netname(uint32_t in, uint32_t mask)
char *netname6(struct sockaddr_in6 *sa6, struct sockaddr *sam)
{
+ char host[MAXHOSTNAMELEN];
static char line[MAXHOSTNAMELEN + 10];
u_char *lim;
- int masklen, illegal = 0;
+ int masklen, illegal = 0, flag = NI_NUMERICHOST;
struct in6_addr *mask = sam ? &((struct sockaddr_in6 *)sam)->sin6_addr : 0;
if (sam && sam->sa_len == 0) {
diff --git a/TunnelKit/Sources/Core/ZeroingData.m b/Sources/TunnelKitCoreObjC/ZeroingData.m
similarity index 100%
rename from TunnelKit/Sources/Core/ZeroingData.m
rename to Sources/TunnelKitCoreObjC/ZeroingData.m
diff --git a/TunnelKit/Sources/Core/Allocation.h b/Sources/TunnelKitCoreObjC/include/Allocation.h
similarity index 100%
rename from TunnelKit/Sources/Core/Allocation.h
rename to Sources/TunnelKitCoreObjC/include/Allocation.h
diff --git a/TunnelKit/Sources/Core/LZO.h b/Sources/TunnelKitCoreObjC/include/CompressionProvider.h
similarity index 91%
rename from TunnelKit/Sources/Core/LZO.h
rename to Sources/TunnelKitCoreObjC/include/CompressionProvider.h
index b219935..ba9b447 100644
--- a/TunnelKit/Sources/Core/LZO.h
+++ b/Sources/TunnelKitCoreObjC/include/CompressionProvider.h
@@ -1,5 +1,5 @@
//
-// LZO.h
+// CompressionProvider.h
// TunnelKit
//
// Created by Davide De Rosa on 3/18/19.
@@ -27,7 +27,7 @@
NS_ASSUME_NONNULL_BEGIN
-@protocol LZO
+@protocol CompressionProvider
- (nullable NSData *)compressedDataWithData:(NSData *)data error:(NSError **)error;
- (nullable NSData *)decompressedDataWithData:(NSData *)data error:(NSError **)error;
@@ -35,8 +35,4 @@ NS_ASSUME_NONNULL_BEGIN
@end
-//+ (NSString *)versionString;
-BOOL LZOIsSupported(void);
-id LZOCreate(void);
-
NS_ASSUME_NONNULL_END
diff --git a/TunnelKit/Sources/Core/Errors.h b/Sources/TunnelKitCoreObjC/include/Errors.h
similarity index 100%
rename from TunnelKit/Sources/Core/Errors.h
rename to Sources/TunnelKitCoreObjC/include/Errors.h
diff --git a/TunnelKit/Sources/Core/DNS.h b/Sources/TunnelKitCoreObjC/include/LZOFactory.h
similarity index 81%
rename from TunnelKit/Sources/Core/DNS.h
rename to Sources/TunnelKitCoreObjC/include/LZOFactory.h
index fb5ab92..ffda675 100644
--- a/TunnelKit/Sources/Core/DNS.h
+++ b/Sources/TunnelKitCoreObjC/include/LZOFactory.h
@@ -1,8 +1,8 @@
//
-// DNS.h
+// LZOFactory.h
// TunnelKit
//
-// Created by Davide De Rosa on 4/25/19.
+// Created by Davide De Rosa on 3/18/19.
// Copyright (c) 2021 Davide De Rosa. All rights reserved.
//
// https://github.com/passepartoutvpn
@@ -24,13 +24,16 @@
//
#import
+#import "CompressionProvider.h"
NS_ASSUME_NONNULL_BEGIN
-@interface DNS : NSObject
+@interface LZOFactory : NSObject
+
+//+ (NSString *)versionString;
++ (BOOL)isSupported;
++ (id)create;
-- (NSArray *)systemServers;
-
@end
NS_ASSUME_NONNULL_END
diff --git a/TunnelKit/Sources/Core/RoutingTable.h b/Sources/TunnelKitCoreObjC/include/RoutingTable.h
similarity index 100%
rename from TunnelKit/Sources/Core/RoutingTable.h
rename to Sources/TunnelKitCoreObjC/include/RoutingTable.h
diff --git a/TunnelKit/Sources/Core/RoutingTableEntry.h b/Sources/TunnelKitCoreObjC/include/RoutingTableEntry.h
similarity index 100%
rename from TunnelKit/Sources/Core/RoutingTableEntry.h
rename to Sources/TunnelKitCoreObjC/include/RoutingTableEntry.h
diff --git a/TunnelKit/Sources/Core/ZeroingData.h b/Sources/TunnelKitCoreObjC/include/ZeroingData.h
similarity index 100%
rename from TunnelKit/Sources/Core/ZeroingData.h
rename to Sources/TunnelKitCoreObjC/include/ZeroingData.h
diff --git a/TunnelKit/Sources/Core/route.h b/Sources/TunnelKitCoreObjC/include/route.h
similarity index 100%
rename from TunnelKit/Sources/Core/route.h
rename to Sources/TunnelKitCoreObjC/include/route.h
diff --git a/TunnelKit/Sources/Extra/LZO/StandardLZO.m b/Sources/TunnelKitLZO/StandardLZO.m
similarity index 97%
rename from TunnelKit/Sources/Extra/LZO/StandardLZO.m
rename to Sources/TunnelKitLZO/StandardLZO.m
index fa3b41b..2480d5c 100644
--- a/TunnelKit/Sources/Extra/LZO/StandardLZO.m
+++ b/Sources/TunnelKitLZO/StandardLZO.m
@@ -23,9 +23,8 @@
// along with TunnelKit. If not, see .
//
-#import "minilzo.h"
+#import "lib/minilzo.h"
-#import "LZO.h"
#import "Errors.h"
#define HEAP_ALLOC(var,size) \
@@ -35,7 +34,7 @@ lzo_align_t __LZO_MMODEL var [ ((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo
static HEAP_ALLOC(wrkmem, LZO1X_1_MEM_COMPRESS);
-@interface StandardLZO : NSObject
+@interface StandardLZO : NSObject
@property (nonatomic, strong) NSMutableData *decompressedBuffer;
diff --git a/Sources/TunnelKitLZO/include/Errors.h b/Sources/TunnelKitLZO/include/Errors.h
new file mode 120000
index 0000000..51651c1
--- /dev/null
+++ b/Sources/TunnelKitLZO/include/Errors.h
@@ -0,0 +1 @@
+../../TunnelKitCoreObjC/include/Errors.h
\ No newline at end of file
diff --git a/Sources/TunnelKitLZO/include/lzo/lzoconf.h b/Sources/TunnelKitLZO/include/lzo/lzoconf.h
new file mode 120000
index 0000000..d86f264
--- /dev/null
+++ b/Sources/TunnelKitLZO/include/lzo/lzoconf.h
@@ -0,0 +1 @@
+../../lib/lzoconf.h
\ No newline at end of file
diff --git a/Sources/TunnelKitLZO/include/lzo/lzodefs.h b/Sources/TunnelKitLZO/include/lzo/lzodefs.h
new file mode 120000
index 0000000..2347a19
--- /dev/null
+++ b/Sources/TunnelKitLZO/include/lzo/lzodefs.h
@@ -0,0 +1 @@
+../../lib/lzodefs.h
\ No newline at end of file
diff --git a/TunnelKit/Sources/Extra/LZO/lib/COPYING b/Sources/TunnelKitLZO/lib/COPYING
similarity index 100%
rename from TunnelKit/Sources/Extra/LZO/lib/COPYING
rename to Sources/TunnelKitLZO/lib/COPYING
diff --git a/TunnelKit/Sources/Extra/LZO/lib/Makefile b/Sources/TunnelKitLZO/lib/Makefile
similarity index 100%
rename from TunnelKit/Sources/Extra/LZO/lib/Makefile
rename to Sources/TunnelKitLZO/lib/Makefile
diff --git a/TunnelKit/Sources/Extra/LZO/lib/README.LZO b/Sources/TunnelKitLZO/lib/README.LZO
similarity index 100%
rename from TunnelKit/Sources/Extra/LZO/lib/README.LZO
rename to Sources/TunnelKitLZO/lib/README.LZO
diff --git a/TunnelKit/Sources/Extra/LZO/lib/lzoconf.h b/Sources/TunnelKitLZO/lib/lzoconf.h
similarity index 100%
rename from TunnelKit/Sources/Extra/LZO/lib/lzoconf.h
rename to Sources/TunnelKitLZO/lib/lzoconf.h
diff --git a/TunnelKit/Sources/Extra/LZO/lib/lzodefs.h b/Sources/TunnelKitLZO/lib/lzodefs.h
similarity index 100%
rename from TunnelKit/Sources/Extra/LZO/lib/lzodefs.h
rename to Sources/TunnelKitLZO/lib/lzodefs.h
diff --git a/TunnelKit/Sources/Extra/LZO/lib/minilzo.c b/Sources/TunnelKitLZO/lib/minilzo.c
similarity index 100%
rename from TunnelKit/Sources/Extra/LZO/lib/minilzo.c
rename to Sources/TunnelKitLZO/lib/minilzo.c
diff --git a/TunnelKit/Sources/Extra/LZO/lib/minilzo.h b/Sources/TunnelKitLZO/lib/minilzo.h
similarity index 100%
rename from TunnelKit/Sources/Extra/LZO/lib/minilzo.h
rename to Sources/TunnelKitLZO/lib/minilzo.h
diff --git a/TunnelKit/Sources/Extra/LZO/lib/testmini.c b/Sources/TunnelKitLZO/lib/testmini.c
similarity index 100%
rename from TunnelKit/Sources/Extra/LZO/lib/testmini.c
rename to Sources/TunnelKitLZO/lib/testmini.c
diff --git a/TunnelKit/Sources/Manager/MockVPNProvider.swift b/Sources/TunnelKitManager/MockVPNProvider.swift
similarity index 100%
rename from TunnelKit/Sources/Manager/MockVPNProvider.swift
rename to Sources/TunnelKitManager/MockVPNProvider.swift
diff --git a/TunnelKit/Sources/Manager/NetworkExtensionLocator.swift b/Sources/TunnelKitManager/NetworkExtensionLocator.swift
similarity index 100%
rename from TunnelKit/Sources/Manager/NetworkExtensionLocator.swift
rename to Sources/TunnelKitManager/NetworkExtensionLocator.swift
diff --git a/TunnelKit/Sources/Manager/NetworkExtensionVPNConfiguration.swift b/Sources/TunnelKitManager/NetworkExtensionVPNConfiguration.swift
similarity index 100%
rename from TunnelKit/Sources/Manager/NetworkExtensionVPNConfiguration.swift
rename to Sources/TunnelKitManager/NetworkExtensionVPNConfiguration.swift
diff --git a/TunnelKit/Sources/Manager/NetworkExtensionVPNProvider.swift b/Sources/TunnelKitManager/NetworkExtensionVPNProvider.swift
similarity index 98%
rename from TunnelKit/Sources/Manager/NetworkExtensionVPNProvider.swift
rename to Sources/TunnelKitManager/NetworkExtensionVPNProvider.swift
index 334fb3d..5ca93b7 100644
--- a/TunnelKit/Sources/Manager/NetworkExtensionVPNProvider.swift
+++ b/Sources/TunnelKitManager/NetworkExtensionVPNProvider.swift
@@ -26,6 +26,7 @@
import Foundation
import NetworkExtension
import SwiftyBeaver
+import TunnelKitCore
private let log = SwiftyBeaver.self
@@ -183,7 +184,7 @@ public class NetworkExtensionVPNProvider: VPNProvider {
// MARK: Helpers
- func lookup(completionHandler: @escaping (NEVPNManager?, Error?) -> Void) {
+ public func lookup(completionHandler: @escaping (NEVPNManager?, Error?) -> Void) {
locator.lookup(completionHandler: completionHandler)
}
diff --git a/TunnelKit/Sources/Manager/VPN.swift b/Sources/TunnelKitManager/VPN.swift
similarity index 100%
rename from TunnelKit/Sources/Manager/VPN.swift
rename to Sources/TunnelKitManager/VPN.swift
diff --git a/TunnelKit/Sources/Manager/VPNConfiguration.swift b/Sources/TunnelKitManager/VPNConfiguration.swift
similarity index 100%
rename from TunnelKit/Sources/Manager/VPNConfiguration.swift
rename to Sources/TunnelKitManager/VPNConfiguration.swift
diff --git a/TunnelKit/Sources/Manager/VPNProvider.swift b/Sources/TunnelKitManager/VPNProvider.swift
similarity index 100%
rename from TunnelKit/Sources/Manager/VPNProvider.swift
rename to Sources/TunnelKitManager/VPNProvider.swift
diff --git a/TunnelKit/Sources/Manager/VPNProviderIPC.swift b/Sources/TunnelKitManager/VPNProviderIPC.swift
similarity index 100%
rename from TunnelKit/Sources/Manager/VPNProviderIPC.swift
rename to Sources/TunnelKitManager/VPNProviderIPC.swift
diff --git a/TunnelKit/Sources/Manager/VPNStatus.swift b/Sources/TunnelKitManager/VPNStatus.swift
similarity index 100%
rename from TunnelKit/Sources/Manager/VPNStatus.swift
rename to Sources/TunnelKitManager/VPNStatus.swift
diff --git a/TunnelKit/Sources/Protocols/Native/NativeProvider.swift b/Sources/TunnelKitNative/NativeProvider.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/Native/NativeProvider.swift
rename to Sources/TunnelKitNative/NativeProvider.swift
index 9b7bde1..6d12ad3 100644
--- a/TunnelKit/Sources/Protocols/Native/NativeProvider.swift
+++ b/Sources/TunnelKitNative/NativeProvider.swift
@@ -24,6 +24,7 @@
//
import Foundation
+import TunnelKitManager
/// `VPNProvider` for native IPSec/IKEv2 configurations.
public class NativeProvider: VPNProvider {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/ConnectionStrategy.swift b/Sources/TunnelKitOpenVPN/AppExtension/ConnectionStrategy.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/AppExtension/ConnectionStrategy.swift
rename to Sources/TunnelKitOpenVPN/AppExtension/ConnectionStrategy.swift
index 9385f8a..a41ea77 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/ConnectionStrategy.swift
+++ b/Sources/TunnelKitOpenVPN/AppExtension/ConnectionStrategy.swift
@@ -37,6 +37,8 @@
import Foundation
import NetworkExtension
import SwiftyBeaver
+import TunnelKitCore
+import TunnelKitAppExtension
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/NETCPLink.swift b/Sources/TunnelKitOpenVPN/AppExtension/NETCPLink.swift
similarity index 97%
rename from TunnelKit/Sources/Protocols/OpenVPN/AppExtension/NETCPLink.swift
rename to Sources/TunnelKitOpenVPN/AppExtension/NETCPLink.swift
index 61e10d1..b49c172 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/NETCPLink.swift
+++ b/Sources/TunnelKitOpenVPN/AppExtension/NETCPLink.swift
@@ -25,7 +25,9 @@
import Foundation
import NetworkExtension
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitAppExtension
+import TunnelKitOpenVPNObjC
class NETCPLink: LinkInterface {
private let impl: NWTCPConnection
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/NEUDPLink.swift b/Sources/TunnelKitOpenVPN/AppExtension/NEUDPLink.swift
similarity index 98%
rename from TunnelKit/Sources/Protocols/OpenVPN/AppExtension/NEUDPLink.swift
rename to Sources/TunnelKitOpenVPN/AppExtension/NEUDPLink.swift
index ebd7068..18a13d1 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/NEUDPLink.swift
+++ b/Sources/TunnelKitOpenVPN/AppExtension/NEUDPLink.swift
@@ -25,6 +25,8 @@
import Foundation
import NetworkExtension
+import TunnelKitCore
+import TunnelKitAppExtension
class NEUDPLink: LinkInterface {
private let impl: NWUDPSession
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/OpenVPNTunnelProvider+Configuration.swift b/Sources/TunnelKitOpenVPN/AppExtension/OpenVPNTunnelProvider+Configuration.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/AppExtension/OpenVPNTunnelProvider+Configuration.swift
rename to Sources/TunnelKitOpenVPN/AppExtension/OpenVPNTunnelProvider+Configuration.swift
index 3558718..99f0f53 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/OpenVPNTunnelProvider+Configuration.swift
+++ b/Sources/TunnelKitOpenVPN/AppExtension/OpenVPNTunnelProvider+Configuration.swift
@@ -37,6 +37,10 @@
import Foundation
import NetworkExtension
import SwiftyBeaver
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitAppExtension
+import InternalUtils
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/OpenVPNTunnelProvider+Interaction.swift b/Sources/TunnelKitOpenVPN/AppExtension/OpenVPNTunnelProvider+Interaction.swift
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/AppExtension/OpenVPNTunnelProvider+Interaction.swift
rename to Sources/TunnelKitOpenVPN/AppExtension/OpenVPNTunnelProvider+Interaction.swift
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/OpenVPNTunnelProvider.swift b/Sources/TunnelKitOpenVPN/AppExtension/OpenVPNTunnelProvider.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/AppExtension/OpenVPNTunnelProvider.swift
rename to Sources/TunnelKitOpenVPN/AppExtension/OpenVPNTunnelProvider.swift
index acfd1bb..97bad3d 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/AppExtension/OpenVPNTunnelProvider.swift
+++ b/Sources/TunnelKitOpenVPN/AppExtension/OpenVPNTunnelProvider.swift
@@ -41,7 +41,9 @@ import SystemConfiguration.CaptiveNetwork
#else
import CoreWLAN
#endif
-import __TunnelKitCore
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitAppExtension
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/Authenticator.swift b/Sources/TunnelKitOpenVPN/Authenticator.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/Authenticator.swift
rename to Sources/TunnelKitOpenVPN/Authenticator.swift
index ec1eb20..af42caf 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/Authenticator.swift
+++ b/Sources/TunnelKitOpenVPN/Authenticator.swift
@@ -36,8 +36,9 @@
import Foundation
import SwiftyBeaver
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CompressionAlgorithm.swift b/Sources/TunnelKitOpenVPN/CompressionAlgorithm.swift
similarity index 98%
rename from TunnelKit/Sources/Protocols/OpenVPN/CompressionAlgorithm.swift
rename to Sources/TunnelKitOpenVPN/CompressionAlgorithm.swift
index d59c16e..ad7c2eb 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/CompressionAlgorithm.swift
+++ b/Sources/TunnelKitOpenVPN/CompressionAlgorithm.swift
@@ -24,7 +24,7 @@
//
import Foundation
-import __TunnelKitOpenVPN
+import TunnelKitOpenVPNObjC
extension OpenVPN {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CompressionFraming.swift b/Sources/TunnelKitOpenVPN/CompressionFraming.swift
similarity index 98%
rename from TunnelKit/Sources/Protocols/OpenVPN/CompressionFraming.swift
rename to Sources/TunnelKitOpenVPN/CompressionFraming.swift
index 85af696..dcca6b7 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/CompressionFraming.swift
+++ b/Sources/TunnelKitOpenVPN/CompressionFraming.swift
@@ -24,7 +24,7 @@
//
import Foundation
-import __TunnelKitOpenVPN
+import TunnelKitOpenVPNObjC
extension OpenVPN {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/Configuration.swift b/Sources/TunnelKitOpenVPN/Configuration.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/Configuration.swift
rename to Sources/TunnelKitOpenVPN/Configuration.swift
index 9f743a4..a046501 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/Configuration.swift
+++ b/Sources/TunnelKitOpenVPN/Configuration.swift
@@ -36,6 +36,7 @@
import Foundation
import SwiftyBeaver
+import TunnelKitCore
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/ConfigurationParser.swift b/Sources/TunnelKitOpenVPN/ConfigurationParser.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/ConfigurationParser.swift
rename to Sources/TunnelKitOpenVPN/ConfigurationParser.swift
index 44b89c6..4b88c5f 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/ConfigurationParser.swift
+++ b/Sources/TunnelKitOpenVPN/ConfigurationParser.swift
@@ -25,7 +25,9 @@
import Foundation
import SwiftyBeaver
-import __TunnelKitCore
+import TunnelKitCore
+import TunnelKitCoreObjC
+import InternalUtils
private let log = SwiftyBeaver.self
@@ -390,7 +392,7 @@ extension OpenVPN {
isHandled = true
optCompressionFraming = .compLZO
- if !LZOIsSupported() {
+ if !LZOFactory.isSupported() {
guard let arg = $0.first else {
optWarning = optWarning ?? .unsupportedConfiguration(option: line)
return
@@ -408,7 +410,7 @@ extension OpenVPN {
isHandled = true
optCompressionFraming = .compress
- if !LZOIsSupported() {
+ if !LZOFactory.isSupported() {
guard $0.isEmpty else {
unsupportedError = .unsupportedConfiguration(option: line)
return
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/ControlChannel.swift b/Sources/TunnelKitOpenVPN/ControlChannel.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/ControlChannel.swift
rename to Sources/TunnelKitOpenVPN/ControlChannel.swift
index bf1d9c1..c7aca56 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/ControlChannel.swift
+++ b/Sources/TunnelKitOpenVPN/ControlChannel.swift
@@ -25,8 +25,9 @@
import Foundation
import SwiftyBeaver
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/ControlChannelSerializer.swift b/Sources/TunnelKitOpenVPN/ControlChannelSerializer.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/ControlChannelSerializer.swift
rename to Sources/TunnelKitOpenVPN/ControlChannelSerializer.swift
index 949243d..a207fdb 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/ControlChannelSerializer.swift
+++ b/Sources/TunnelKitOpenVPN/ControlChannelSerializer.swift
@@ -25,8 +25,9 @@
import Foundation
import SwiftyBeaver
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CoreConfiguration+OpenVPN.swift b/Sources/TunnelKitOpenVPN/CoreConfiguration+OpenVPN.swift
similarity index 97%
rename from TunnelKit/Sources/Protocols/OpenVPN/CoreConfiguration+OpenVPN.swift
rename to Sources/TunnelKitOpenVPN/CoreConfiguration+OpenVPN.swift
index 6f7ad8a..e6b9282 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/CoreConfiguration+OpenVPN.swift
+++ b/Sources/TunnelKitOpenVPN/CoreConfiguration+OpenVPN.swift
@@ -35,8 +35,9 @@
//
import Foundation
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
extension CoreConfiguration {
struct OpenVPN {
@@ -80,7 +81,7 @@ extension CoreConfiguration {
"IV_NCP=2",
"IV_LZO_STUB=1",
]
- if LZOIsSupported() {
+ if LZOFactory.isSupported() {
info.append("IV_LZO=1")
}
// XXX: always do --push-peer-info
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoContainer.swift b/Sources/TunnelKitOpenVPN/CryptoContainer.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoContainer.swift
rename to Sources/TunnelKitOpenVPN/CryptoContainer.swift
index 7545781..3f36c67 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/CryptoContainer.swift
+++ b/Sources/TunnelKitOpenVPN/CryptoContainer.swift
@@ -35,7 +35,7 @@
//
import Foundation
-import __TunnelKitOpenVPN
+import TunnelKitOpenVPNObjC
extension OpenVPN {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/EncryptionBridge.swift b/Sources/TunnelKitOpenVPN/EncryptionBridge.swift
similarity index 98%
rename from TunnelKit/Sources/Protocols/OpenVPN/EncryptionBridge.swift
rename to Sources/TunnelKitOpenVPN/EncryptionBridge.swift
index c2eb664..1148d64 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/EncryptionBridge.swift
+++ b/Sources/TunnelKitOpenVPN/EncryptionBridge.swift
@@ -35,8 +35,9 @@
//
import Foundation
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
extension OpenVPN {
class EncryptionBridge {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPN.swift b/Sources/TunnelKitOpenVPN/OpenVPN.swift
similarity index 95%
rename from TunnelKit/Sources/Protocols/OpenVPN/OpenVPN.swift
rename to Sources/TunnelKitOpenVPN/OpenVPN.swift
index 0fa0e41..f9ece43 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPN.swift
+++ b/Sources/TunnelKitOpenVPN/OpenVPN.swift
@@ -24,8 +24,9 @@
//
import Foundation
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
/// Container for OpenVPN classes.
public class OpenVPN {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPNError.swift b/Sources/TunnelKitOpenVPN/OpenVPNError.swift
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/OpenVPNError.swift
rename to Sources/TunnelKitOpenVPN/OpenVPNError.swift
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPNProvider.swift b/Sources/TunnelKitOpenVPN/OpenVPNProvider.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/OpenVPNProvider.swift
rename to Sources/TunnelKitOpenVPN/OpenVPNProvider.swift
index d9a0a1f..912a6bf 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPNProvider.swift
+++ b/Sources/TunnelKitOpenVPN/OpenVPNProvider.swift
@@ -25,6 +25,7 @@
import Foundation
import NetworkExtension
+import TunnelKitManager
/// `VPNProvider` for OpenVPN protocol.
public class OpenVPNProvider: VPNProvider, VPNProviderIPC {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPNSession+PIA.swift b/Sources/TunnelKitOpenVPN/OpenVPNSession+PIA.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/OpenVPNSession+PIA.swift
rename to Sources/TunnelKitOpenVPN/OpenVPNSession+PIA.swift
index 5f359f0..c66127f 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPNSession+PIA.swift
+++ b/Sources/TunnelKitOpenVPN/OpenVPNSession+PIA.swift
@@ -35,6 +35,7 @@
//
import Foundation
+import TunnelKitCore
extension OpenVPNSession {
struct PIAHardReset {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPNSession.swift b/Sources/TunnelKitOpenVPN/OpenVPNSession.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/OpenVPNSession.swift
rename to Sources/TunnelKitOpenVPN/OpenVPNSession.swift
index a1d61d2..3928e10 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/OpenVPNSession.swift
+++ b/Sources/TunnelKitOpenVPN/OpenVPNSession.swift
@@ -36,8 +36,9 @@
import Foundation
import SwiftyBeaver
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
private let log = SwiftyBeaver.self
@@ -926,7 +927,7 @@ public class OpenVPNSession: Session {
break
case .LZO:
- if !LZOIsSupported() {
+ if !LZOFactory.isSupported() {
log.error("Server has LZO compression enabled and this was not built into the library (framing=\(framing))")
throw OpenVPNError.serverCompression
}
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/Packet.swift b/Sources/TunnelKitOpenVPN/Packet.swift
similarity index 98%
rename from TunnelKit/Sources/Protocols/OpenVPN/Packet.swift
rename to Sources/TunnelKitOpenVPN/Packet.swift
index a1c08bb..05a0b81 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/Packet.swift
+++ b/Sources/TunnelKitOpenVPN/Packet.swift
@@ -35,7 +35,9 @@
//
import Foundation
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
/// :nodoc:
extension ControlPacket {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/ProtocolMacros.swift b/Sources/TunnelKitOpenVPN/ProtocolMacros.swift
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/ProtocolMacros.swift
rename to Sources/TunnelKitOpenVPN/ProtocolMacros.swift
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/PushReply.swift b/Sources/TunnelKitOpenVPN/PushReply.swift
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/PushReply.swift
rename to Sources/TunnelKitOpenVPN/PushReply.swift
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/SessionKey.swift b/Sources/TunnelKitOpenVPN/SessionKey.swift
similarity index 98%
rename from TunnelKit/Sources/Protocols/OpenVPN/SessionKey.swift
rename to Sources/TunnelKitOpenVPN/SessionKey.swift
index 872cbdf..e8f572a 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/SessionKey.swift
+++ b/Sources/TunnelKitOpenVPN/SessionKey.swift
@@ -36,8 +36,9 @@
import Foundation
import SwiftyBeaver
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
private let log = SwiftyBeaver.self
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/StaticKey.swift b/Sources/TunnelKitOpenVPN/StaticKey.swift
similarity index 99%
rename from TunnelKit/Sources/Protocols/OpenVPN/StaticKey.swift
rename to Sources/TunnelKitOpenVPN/StaticKey.swift
index fd7d9c9..ee5961b 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/StaticKey.swift
+++ b/Sources/TunnelKitOpenVPN/StaticKey.swift
@@ -24,7 +24,8 @@
//
import Foundation
-import __TunnelKitCore
+import TunnelKitCore
+import TunnelKitCoreObjC
extension OpenVPN {
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/TLSWrap.swift b/Sources/TunnelKitOpenVPN/TLSWrap.swift
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/TLSWrap.swift
rename to Sources/TunnelKitOpenVPN/TLSWrap.swift
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/ControlPacket.m b/Sources/TunnelKitOpenVPNObjC/ControlPacket.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/ControlPacket.m
rename to Sources/TunnelKitOpenVPNObjC/ControlPacket.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoAEAD.m b/Sources/TunnelKitOpenVPNObjC/CryptoAEAD.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoAEAD.m
rename to Sources/TunnelKitOpenVPNObjC/CryptoAEAD.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoBox.m b/Sources/TunnelKitOpenVPNObjC/CryptoBox.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoBox.m
rename to Sources/TunnelKitOpenVPNObjC/CryptoBox.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoCBC.m b/Sources/TunnelKitOpenVPNObjC/CryptoCBC.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoCBC.m
rename to Sources/TunnelKitOpenVPNObjC/CryptoCBC.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoCTR.m b/Sources/TunnelKitOpenVPNObjC/CryptoCTR.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoCTR.m
rename to Sources/TunnelKitOpenVPNObjC/CryptoCTR.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/DataPath.m b/Sources/TunnelKitOpenVPNObjC/DataPath.m
similarity index 98%
rename from TunnelKit/Sources/Protocols/OpenVPN/DataPath.m
rename to Sources/TunnelKitOpenVPNObjC/DataPath.m
index f797c41..87eeafb 100644
--- a/TunnelKit/Sources/Protocols/OpenVPN/DataPath.m
+++ b/Sources/TunnelKitOpenVPNObjC/DataPath.m
@@ -41,7 +41,7 @@
#import "PacketMacros.h"
#import "MSS.h"
#import "ReplayProtector.h"
-#import "LZO.h"
+#import "LZOFactory.h"
#import "Allocation.h"
#import "Errors.h"
@@ -67,7 +67,7 @@
@property (nonatomic, copy) DataPathAssembleBlock assemblePayloadBlock;
@property (nonatomic, copy) DataPathParseBlock parsePayloadBlock;
-@property (nonatomic, strong) id lzo;
+@property (nonatomic, strong) id lzo;
@end
@@ -118,8 +118,8 @@
[self.decrypter setPeerId:peerId];
[self setCompressionFraming:compressionFraming];
- if (LZOIsSupported() && (compressionAlgorithm == CompressionAlgorithmNativeLZO)) {
- self.lzo = LZOCreate();
+ if ([LZOFactory isSupported] && (compressionAlgorithm == CompressionAlgorithmNativeLZO)) {
+ self.lzo = [LZOFactory create];
}
}
return self;
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/MSS.m b/Sources/TunnelKitOpenVPNObjC/MSS.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/MSS.m
rename to Sources/TunnelKitOpenVPNObjC/MSS.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/PacketMacros.m b/Sources/TunnelKitOpenVPNObjC/PacketMacros.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/PacketMacros.m
rename to Sources/TunnelKitOpenVPNObjC/PacketMacros.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/PacketStream.m b/Sources/TunnelKitOpenVPNObjC/PacketStream.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/PacketStream.m
rename to Sources/TunnelKitOpenVPNObjC/PacketStream.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/ReplayProtector.m b/Sources/TunnelKitOpenVPNObjC/ReplayProtector.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/ReplayProtector.m
rename to Sources/TunnelKitOpenVPNObjC/ReplayProtector.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/TLSBox.m b/Sources/TunnelKitOpenVPNObjC/TLSBox.m
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/TLSBox.m
rename to Sources/TunnelKitOpenVPNObjC/TLSBox.m
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CompressionAlgorithmNative.h b/Sources/TunnelKitOpenVPNObjC/include/CompressionAlgorithmNative.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CompressionAlgorithmNative.h
rename to Sources/TunnelKitOpenVPNObjC/include/CompressionAlgorithmNative.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CompressionFramingNative.h b/Sources/TunnelKitOpenVPNObjC/include/CompressionFramingNative.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CompressionFramingNative.h
rename to Sources/TunnelKitOpenVPNObjC/include/CompressionFramingNative.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/ControlPacket.h b/Sources/TunnelKitOpenVPNObjC/include/ControlPacket.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/ControlPacket.h
rename to Sources/TunnelKitOpenVPNObjC/include/ControlPacket.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/Crypto.h b/Sources/TunnelKitOpenVPNObjC/include/Crypto.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/Crypto.h
rename to Sources/TunnelKitOpenVPNObjC/include/Crypto.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoAEAD.h b/Sources/TunnelKitOpenVPNObjC/include/CryptoAEAD.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoAEAD.h
rename to Sources/TunnelKitOpenVPNObjC/include/CryptoAEAD.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoBox.h b/Sources/TunnelKitOpenVPNObjC/include/CryptoBox.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoBox.h
rename to Sources/TunnelKitOpenVPNObjC/include/CryptoBox.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoCBC.h b/Sources/TunnelKitOpenVPNObjC/include/CryptoCBC.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoCBC.h
rename to Sources/TunnelKitOpenVPNObjC/include/CryptoCBC.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoCTR.h b/Sources/TunnelKitOpenVPNObjC/include/CryptoCTR.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoCTR.h
rename to Sources/TunnelKitOpenVPNObjC/include/CryptoCTR.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/CryptoMacros.h b/Sources/TunnelKitOpenVPNObjC/include/CryptoMacros.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/CryptoMacros.h
rename to Sources/TunnelKitOpenVPNObjC/include/CryptoMacros.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/DataPath.h b/Sources/TunnelKitOpenVPNObjC/include/DataPath.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/DataPath.h
rename to Sources/TunnelKitOpenVPNObjC/include/DataPath.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/DataPathCrypto.h b/Sources/TunnelKitOpenVPNObjC/include/DataPathCrypto.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/DataPathCrypto.h
rename to Sources/TunnelKitOpenVPNObjC/include/DataPathCrypto.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/MSS.h b/Sources/TunnelKitOpenVPNObjC/include/MSS.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/MSS.h
rename to Sources/TunnelKitOpenVPNObjC/include/MSS.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/PacketMacros.h b/Sources/TunnelKitOpenVPNObjC/include/PacketMacros.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/PacketMacros.h
rename to Sources/TunnelKitOpenVPNObjC/include/PacketMacros.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/PacketStream.h b/Sources/TunnelKitOpenVPNObjC/include/PacketStream.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/PacketStream.h
rename to Sources/TunnelKitOpenVPNObjC/include/PacketStream.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/ReplayProtector.h b/Sources/TunnelKitOpenVPNObjC/include/ReplayProtector.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/ReplayProtector.h
rename to Sources/TunnelKitOpenVPNObjC/include/ReplayProtector.h
diff --git a/TunnelKit/Sources/Protocols/OpenVPN/TLSBox.h b/Sources/TunnelKitOpenVPNObjC/include/TLSBox.h
similarity index 100%
rename from TunnelKit/Sources/Protocols/OpenVPN/TLSBox.h
rename to Sources/TunnelKitOpenVPNObjC/include/TLSBox.h
diff --git a/TunnelKit/Tests/Core/DataManipulationTests.swift b/Tests/TunnelKitCoreTests/DataManipulationTests.swift
similarity index 99%
rename from TunnelKit/Tests/Core/DataManipulationTests.swift
rename to Tests/TunnelKitCoreTests/DataManipulationTests.swift
index 6d1ec19..914afc1 100644
--- a/TunnelKit/Tests/Core/DataManipulationTests.swift
+++ b/Tests/TunnelKitCoreTests/DataManipulationTests.swift
@@ -35,7 +35,7 @@
//
import XCTest
-@testable import TunnelKit
+@testable import TunnelKitCore
class DataManipulationTests: XCTestCase {
diff --git a/TunnelKit/Tests/Core/RandomTests.swift b/Tests/TunnelKitCoreTests/RandomTests.swift
similarity index 98%
rename from TunnelKit/Tests/Core/RandomTests.swift
rename to Tests/TunnelKitCoreTests/RandomTests.swift
index b8ac109..91671ac 100644
--- a/TunnelKit/Tests/Core/RandomTests.swift
+++ b/Tests/TunnelKitCoreTests/RandomTests.swift
@@ -35,7 +35,7 @@
//
import XCTest
-@testable import TunnelKit
+@testable import TunnelKitCore
class RandomTests: XCTestCase {
diff --git a/TunnelKit/Tests/Core/RawPerformanceTests.swift b/Tests/TunnelKitCoreTests/RawPerformanceTests.swift
similarity index 99%
rename from TunnelKit/Tests/Core/RawPerformanceTests.swift
rename to Tests/TunnelKitCoreTests/RawPerformanceTests.swift
index 1b783ea..aa20c77 100644
--- a/TunnelKit/Tests/Core/RawPerformanceTests.swift
+++ b/Tests/TunnelKitCoreTests/RawPerformanceTests.swift
@@ -37,7 +37,7 @@
import Foundation
import XCTest
-@testable import TunnelKit
+@testable import TunnelKitCore
class RawPerformanceTests: XCTestCase {
diff --git a/TunnelKit/Tests/Core/RoutingTests.swift b/Tests/TunnelKitCoreTests/RoutingTests.swift
similarity index 99%
rename from TunnelKit/Tests/Core/RoutingTests.swift
rename to Tests/TunnelKitCoreTests/RoutingTests.swift
index 6660adb..412893c 100644
--- a/TunnelKit/Tests/Core/RoutingTests.swift
+++ b/Tests/TunnelKitCoreTests/RoutingTests.swift
@@ -24,7 +24,7 @@
//
import XCTest
-import __TunnelKitCore
+import TunnelKitCoreObjC
class RoutingTests: XCTestCase {
diff --git a/TunnelKit/Tests/Core/TestUtils+Core.swift b/Tests/TunnelKitCoreTests/TestUtils+Core.swift
similarity index 92%
rename from TunnelKit/Tests/Core/TestUtils+Core.swift
rename to Tests/TunnelKitCoreTests/TestUtils+Core.swift
index b623c4b..267f6d7 100644
--- a/TunnelKit/Tests/Core/TestUtils+Core.swift
+++ b/Tests/TunnelKitCoreTests/TestUtils+Core.swift
@@ -35,14 +35,14 @@
//
import Foundation
-@testable import TunnelKit
+@testable import TunnelKitCore
-class TestUtils {
- static func uniqArray(_ v: [Int]) -> [Int] {
+public class TestUtils {
+ public static func uniqArray(_ v: [Int]) -> [Int] {
return v.reduce([]){ $0.contains($1) ? $0 : $0 + [$1] }
}
- static func generateDataSuite(_ size: Int, _ count: Int) -> [Data] {
+ public static func generateDataSuite(_ size: Int, _ count: Int) -> [Data] {
var suite = [Data]()
for _ in 0.. URL {
- return Bundle(for: ConfigurationParserTests.self).url(forResource: name, withExtension: "ovpn")!
+ return Bundle.module.url(forResource: name, withExtension: "ovpn")!
}
}
diff --git a/TunnelKit/Tests/OpenVPN/ControlChannelTests.swift b/Tests/TunnelKitOpenVPNTests/ControlChannelTests.swift
similarity index 98%
rename from TunnelKit/Tests/OpenVPN/ControlChannelTests.swift
rename to Tests/TunnelKitOpenVPNTests/ControlChannelTests.swift
index cdd32d4..5187cb0 100644
--- a/TunnelKit/Tests/OpenVPN/ControlChannelTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/ControlChannelTests.swift
@@ -24,9 +24,10 @@
//
import XCTest
-@testable import TunnelKit
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+@testable import TunnelKitCore
+import TunnelKitCoreObjC
+@testable import TunnelKitOpenVPN
+import TunnelKitOpenVPNObjC
class ControlChannelTests: XCTestCase {
private let hex = "634a4d2d459d606c8e6abbec168fdcd1871462eaa2eaed84c8f403bdf8c7da737d81b5774cc35fe0a42b38aa053f1335fd4a22d721880433bbb20ae1f2d88315b2d186b3b377685506fa39d85d38da16c2ecc0d631bda64f9d8f5a8d073f18aab97ade23e49ea9e7de86784d1ed5fa356df5f7fa1d163e5537efa8d4ba61239dc301a9aa55de0e06e33a7545f7d0cc153405576464ba92942dafa5fb79c7a60663ff1e7da3122ae09d4561653bef3eeb312ad68b191e2f94cbcf4e21caff0b59f8be86567bd21787070c2dc10a8baf7e87ce2e07d7d7de25ead11bd6d6e6ec030c0a3fd50d2d0ca3c0378022bb642e954868d7b93e18a131ecbb12b0bbedb1ce"
diff --git a/TunnelKit/Tests/OpenVPN/DataPathEncryptionTests.swift b/Tests/TunnelKitOpenVPNTests/DataPathEncryptionTests.swift
similarity index 98%
rename from TunnelKit/Tests/OpenVPN/DataPathEncryptionTests.swift
rename to Tests/TunnelKitOpenVPNTests/DataPathEncryptionTests.swift
index 68ce16b..ff12b0f 100644
--- a/TunnelKit/Tests/OpenVPN/DataPathEncryptionTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/DataPathEncryptionTests.swift
@@ -35,9 +35,9 @@
//
import XCTest
-@testable import TunnelKit
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+@testable import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
class DataPathEncryptionTests: XCTestCase {
private let cipherKey = try! SecureRandom.safeData(length: 32)
diff --git a/TunnelKit/Tests/OpenVPN/DataPathPerformanceTests.swift b/Tests/TunnelKitOpenVPNTests/DataPathPerformanceTests.swift
similarity index 97%
rename from TunnelKit/Tests/OpenVPN/DataPathPerformanceTests.swift
rename to Tests/TunnelKitOpenVPNTests/DataPathPerformanceTests.swift
index 1fd1132..acc735f 100644
--- a/TunnelKit/Tests/OpenVPN/DataPathPerformanceTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/DataPathPerformanceTests.swift
@@ -35,8 +35,10 @@
//
import XCTest
-@testable import TunnelKit
-import __TunnelKitOpenVPN
+@testable import TunnelKitCore
+@testable import TunnelKitOpenVPN
+import TunnelKitOpenVPNObjC
+import TunnelKitCoreTests
class DataPathPerformanceTests: XCTestCase {
private var dataPath: DataPath!
diff --git a/TunnelKit/Tests/OpenVPN/EncryptionPerformanceTests.swift b/Tests/TunnelKitOpenVPNTests/EncryptionPerformanceTests.swift
similarity index 97%
rename from TunnelKit/Tests/OpenVPN/EncryptionPerformanceTests.swift
rename to Tests/TunnelKitOpenVPNTests/EncryptionPerformanceTests.swift
index 47e12ad..c5aa3d8 100644
--- a/TunnelKit/Tests/OpenVPN/EncryptionPerformanceTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/EncryptionPerformanceTests.swift
@@ -35,9 +35,10 @@
//
import XCTest
-@testable import TunnelKit
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+@testable import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
+import TunnelKitCoreTests
class EncryptionPerformanceTests: XCTestCase {
private var cbcEncrypter: Encrypter!
diff --git a/TunnelKit/Tests/OpenVPN/EncryptionTests.swift b/Tests/TunnelKitOpenVPNTests/EncryptionTests.swift
similarity index 95%
rename from TunnelKit/Tests/OpenVPN/EncryptionTests.swift
rename to Tests/TunnelKitOpenVPNTests/EncryptionTests.swift
index 7033915..7d0c173 100644
--- a/TunnelKit/Tests/OpenVPN/EncryptionTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/EncryptionTests.swift
@@ -35,9 +35,10 @@
//
import XCTest
-@testable import TunnelKit
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+@testable import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPN
+import TunnelKitOpenVPNObjC
class EncryptionTests: XCTestCase {
private var cipherEncKey: ZeroingData!
@@ -112,7 +113,7 @@ class EncryptionTests: XCTestCase {
}
func testCertificateMD5() {
- let path = Bundle(for: EncryptionTests.self).path(forResource: "pia-2048", ofType: "pem")!
+ let path = Bundle.module.path(forResource: "pia-2048", ofType: "pem")!
let md5 = try! TLSBox.md5(forCertificatePath: path)
let exp = "e2fccccaba712ccc68449b1c56427ac1"
print(md5)
@@ -130,7 +131,7 @@ class EncryptionTests: XCTestCase {
}
private func privateTestPrivateKeyDecryption(pkcs: String) {
- let bundle = Bundle(for: EncryptionTests.self)
+ let bundle = Bundle.module
let encryptedPath = bundle.path(forResource: "tunnelbear", ofType: "enc.\(pkcs).key")!
let decryptedPath = bundle.path(forResource: "tunnelbear", ofType: "key")!
@@ -147,7 +148,7 @@ class EncryptionTests: XCTestCase {
}
func testCertificatePreamble() {
- let url = Bundle(for: EncryptionTests.self).url(forResource: "tunnelbear", withExtension: "crt")!
+ let url = Bundle.module.url(forResource: "tunnelbear", withExtension: "crt")!
let cert = OpenVPN.CryptoContainer(pem: try! String(contentsOf: url))
XCTAssert(cert.pem.hasPrefix("-----BEGIN"))
}
diff --git a/TunnelKit/Tests/OpenVPN/LinkTests.swift b/Tests/TunnelKitOpenVPNTests/LinkTests.swift
similarity index 98%
rename from TunnelKit/Tests/OpenVPN/LinkTests.swift
rename to Tests/TunnelKitOpenVPNTests/LinkTests.swift
index 58a08c1..86a202c 100644
--- a/TunnelKit/Tests/OpenVPN/LinkTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/LinkTests.swift
@@ -35,8 +35,9 @@
//
import XCTest
-@testable import TunnelKit
-@testable import __TunnelKitCore
+@testable import TunnelKitCore
+@testable import TunnelKitCoreObjC
+import TunnelKitCoreTests
class LinkTests: XCTestCase {
diff --git a/TunnelKit/Tests/OpenVPN/PacketTests.swift b/Tests/TunnelKitOpenVPNTests/PacketTests.swift
similarity index 97%
rename from TunnelKit/Tests/OpenVPN/PacketTests.swift
rename to Tests/TunnelKitOpenVPNTests/PacketTests.swift
index c4746ce..3e67f2d 100644
--- a/TunnelKit/Tests/OpenVPN/PacketTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/PacketTests.swift
@@ -24,8 +24,8 @@
//
import XCTest
-@testable import TunnelKit
-import __TunnelKitOpenVPN
+@testable import TunnelKitCore
+import TunnelKitOpenVPNObjC
class PacketTests: XCTestCase {
diff --git a/TunnelKit/Tests/OpenVPN/PushTests.swift b/Tests/TunnelKitOpenVPNTests/PushTests.swift
similarity index 99%
rename from TunnelKit/Tests/OpenVPN/PushTests.swift
rename to Tests/TunnelKitOpenVPNTests/PushTests.swift
index d2b5c28..d667991 100644
--- a/TunnelKit/Tests/OpenVPN/PushTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/PushTests.swift
@@ -24,7 +24,8 @@
//
import XCTest
-@testable import TunnelKit
+@testable import TunnelKitCore
+@testable import TunnelKitOpenVPN
private extension OpenVPN.PushReply {
func debug() {
diff --git a/TunnelKit/Tests/pia-2048.pem b/Tests/TunnelKitOpenVPNTests/Resources/pia-2048.pem
similarity index 100%
rename from TunnelKit/Tests/pia-2048.pem
rename to Tests/TunnelKitOpenVPNTests/Resources/pia-2048.pem
diff --git a/TunnelKit/Tests/pia-hungary.ovpn b/Tests/TunnelKitOpenVPNTests/Resources/pia-hungary.ovpn
similarity index 100%
rename from TunnelKit/Tests/pia-hungary.ovpn
rename to Tests/TunnelKitOpenVPNTests/Resources/pia-hungary.ovpn
diff --git a/TunnelKit/Tests/tunnelbear.crt b/Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.crt
similarity index 100%
rename from TunnelKit/Tests/tunnelbear.crt
rename to Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.crt
diff --git a/TunnelKit/Tests/tunnelbear.enc.1.key b/Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.enc.1.key
similarity index 100%
rename from TunnelKit/Tests/tunnelbear.enc.1.key
rename to Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.enc.1.key
diff --git a/TunnelKit/Tests/tunnelbear.enc.1.ovpn b/Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.enc.1.ovpn
similarity index 100%
rename from TunnelKit/Tests/tunnelbear.enc.1.ovpn
rename to Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.enc.1.ovpn
diff --git a/TunnelKit/Tests/tunnelbear.enc.8.key b/Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.enc.8.key
similarity index 100%
rename from TunnelKit/Tests/tunnelbear.enc.8.key
rename to Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.enc.8.key
diff --git a/TunnelKit/Tests/tunnelbear.enc.8.ovpn b/Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.enc.8.ovpn
similarity index 100%
rename from TunnelKit/Tests/tunnelbear.enc.8.ovpn
rename to Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.enc.8.ovpn
diff --git a/TunnelKit/Tests/tunnelbear.key b/Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.key
similarity index 100%
rename from TunnelKit/Tests/tunnelbear.key
rename to Tests/TunnelKitOpenVPNTests/Resources/tunnelbear.key
diff --git a/TunnelKit/Tests/OpenVPN/StaticKeyTests.swift b/Tests/TunnelKitOpenVPNTests/StaticKeyTests.swift
similarity index 98%
rename from TunnelKit/Tests/OpenVPN/StaticKeyTests.swift
rename to Tests/TunnelKitOpenVPNTests/StaticKeyTests.swift
index e1b27b8..b890996 100644
--- a/TunnelKit/Tests/OpenVPN/StaticKeyTests.swift
+++ b/Tests/TunnelKitOpenVPNTests/StaticKeyTests.swift
@@ -24,7 +24,8 @@
//
import XCTest
-@testable import TunnelKit
+@testable import TunnelKitCore
+import TunnelKitOpenVPN
class StaticKeyTests: XCTestCase {
private let content = """
diff --git a/TunnelKit/Tests/OpenVPN/TestUtils+OpenVPN.swift b/Tests/TunnelKitOpenVPNTests/TestUtils+OpenVPN.swift
similarity index 97%
rename from TunnelKit/Tests/OpenVPN/TestUtils+OpenVPN.swift
rename to Tests/TunnelKitOpenVPNTests/TestUtils+OpenVPN.swift
index 9d5616f..78db63b 100644
--- a/TunnelKit/Tests/OpenVPN/TestUtils+OpenVPN.swift
+++ b/Tests/TunnelKitOpenVPNTests/TestUtils+OpenVPN.swift
@@ -35,9 +35,9 @@
//
import Foundation
-@testable import TunnelKit
-import __TunnelKitCore
-import __TunnelKitOpenVPN
+@testable import TunnelKitCore
+import TunnelKitCoreObjC
+import TunnelKitOpenVPNObjC
extension Encrypter {
func encryptData(_ data: Data, flags: UnsafePointer?) throws -> Data {
diff --git a/TunnelKit.podspec b/TunnelKit.podspec
deleted file mode 100644
index 8636e8f..0000000
--- a/TunnelKit.podspec
+++ /dev/null
@@ -1,79 +0,0 @@
-Pod::Spec.new do |s|
- s.name = "TunnelKit"
- s.version = "3.6.0"
- s.summary = "VPN client library for Apple platforms."
-
- s.homepage = "https://github.com/passepartoutvpn/tunnelkit"
- s.license = { :type => "GPLv3", :file => "LICENSE" }
- s.author = { "Davide De Rosa" => "me@davidederosa.com" }
- s.source = { :git => "https://github.com/passepartoutvpn/tunnelkit.git", :tag => "v#{s.version}" }
- s.swift_version = "5.1"
-
- s.ios.deployment_target = "12.0"
- s.osx.deployment_target = "10.15"
-
- s.default_subspecs = "Protocols/OpenVPN"
-
- s.subspec "Core" do |p|
- p.source_files = "TunnelKit/Sources/Core/**/*.{h,m,swift}"
- p.private_header_files = "TunnelKit/Sources/Core/**/*.h"
- p.preserve_paths = "TunnelKit/Sources/Core/*.modulemap"
- p.pod_target_xcconfig = { "SWIFT_INCLUDE_PATHS" => "${PODS_TARGET_SRCROOT}/TunnelKit/Sources/Core",
- "APPLICATION_EXTENSION_API_ONLY" => "YES" }
- p.dependency "SwiftyBeaver"
- p.libraries = "resolv"
- end
-
- s.subspec "AppExtension" do |p|
- p.source_files = "TunnelKit/Sources/AppExtension/**/*.swift"
- p.frameworks = "NetworkExtension"
- p.pod_target_xcconfig = { "APPLICATION_EXTENSION_API_ONLY" => "YES" }
-
- p.dependency "SwiftyBeaver"
- p.dependency "TunnelKit/Core"
- end
-
- s.subspec "Manager" do |p|
- p.source_files = "TunnelKit/Sources/Manager/**/*.swift"
- p.frameworks = "NetworkExtension"
-
- p.dependency "SwiftyBeaver"
- p.dependency "TunnelKit/Core"
- end
-
- s.subspec "Protocols" do |t|
- t.subspec "Native" do |p|
- p.source_files = "TunnelKit/Sources/Protocols/Native/**/*.swift"
- p.pod_target_xcconfig = { "SWIFT_INCLUDE_PATHS" => "${PODS_TARGET_SRCROOT}/TunnelKit/Sources/Protocols/Native" }
-
- p.dependency "TunnelKit/Manager"
- end
-
- t.subspec "OpenVPN" do |p|
- p.source_files = "TunnelKit/Sources/Protocols/OpenVPN/**/*.{h,m,swift}"
- p.private_header_files = "TunnelKit/Sources/Protocols/OpenVPN/**/*.h"
- p.preserve_paths = "TunnelKit/Sources/Protocols/OpenVPN/*.modulemap"
- p.pod_target_xcconfig = { "OTHER_LDFLAGS" => "-framework openssl",
- "SWIFT_INCLUDE_PATHS" => "${PODS_TARGET_SRCROOT}/TunnelKit/Sources/Protocols/OpenVPN",
- "APPLICATION_EXTENSION_API_ONLY" => "YES" }
-
- p.dependency "OpenSSL-Apple", "~> 1.1.1l.11"
- p.dependency "TunnelKit/AppExtension"
- p.dependency "TunnelKit/Manager"
- end
- end
-
- s.subspec "Extra" do |t|
- t.subspec "LZO" do |p|
- p.source_files = "TunnelKit/Sources/Core/LZO.h",
- "TunnelKit/Sources/Core/Errors.{h,m}",
- "TunnelKit/Sources/Extra/LZO/*.{h,m}",
- "TunnelKit/Sources/Extra/LZO/lib/*lzo*.{h,m,c}"
- p.private_header_files = "TunnelKit/Sources/Core/LZO.h",
- "TunnelKit/Sources/Core/Errors.h",
- "TunnelKit/Sources/Extra/LZO/*.h",
- "TunnelKit/Sources/Extra/LZO/lib/*lzo*.h"
- p.pod_target_xcconfig = { "APPLICATION_EXTENSION_API_ONLY" => "YES" }
- end
- end
-end
diff --git a/TunnelKit.xcodeproj/project.pbxproj b/TunnelKit.xcodeproj/project.pbxproj
deleted file mode 100644
index be45448..0000000
--- a/TunnelKit.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,2916 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 48;
- objects = {
-
-/* Begin PBXBuildFile section */
- 059617B22CA9F55F1416F32D /* Pods_macos_TunnelKit_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EF702DD650A65FCBA51506A /* Pods_macos_TunnelKit_macOS.framework */; };
- 0E011F7A2196D93600BA59EE /* SocketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E011F792196D93600BA59EE /* SocketType.swift */; };
- 0E011F7B2196D93600BA59EE /* SocketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E011F792196D93600BA59EE /* SocketType.swift */; };
- 0E011F7D2196D97200BA59EE /* EndpointProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E011F7C2196D97200BA59EE /* EndpointProtocol.swift */; };
- 0E011F7E2196D97200BA59EE /* EndpointProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E011F7C2196D97200BA59EE /* EndpointProtocol.swift */; };
- 0E011F852196E25900BA59EE /* pia-hungary.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = 0E011F832196E25400BA59EE /* pia-hungary.ovpn */; };
- 0E011F862196E25A00BA59EE /* pia-hungary.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = 0E011F832196E25400BA59EE /* pia-hungary.ovpn */; };
- 0E05418725A2334500EFC5FF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05414B25A231D500EFC5FF /* AppDelegate.swift */; };
- 0E05418825A2334500EFC5FF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05414425A231D500EFC5FF /* ViewController.swift */; };
- 0E05418925A2334500EFC5FF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E05414525A231D500EFC5FF /* Assets.xcassets */; };
- 0E05418A25A2334900EFC5FF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E05414825A231D500EFC5FF /* Main.storyboard */; };
- 0E05418B25A2334900EFC5FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E05414625A231D500EFC5FF /* LaunchScreen.storyboard */; };
- 0E0541A125A2343500EFC5FF /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E0541A025A2343500EFC5FF /* NetworkExtension.framework */; };
- 0E0541A925A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0E05419F25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
- 0E0541D125A2354500EFC5FF /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413825A231D500EFC5FF /* PacketTunnelProvider.swift */; };
- 0E0541D825A2355000EFC5FF /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413425A231D500EFC5FF /* Configuration.swift */; };
- 0E05425825A2392E00EFC5FF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05414125A231D500EFC5FF /* AppDelegate.swift */; };
- 0E05425925A2392E00EFC5FF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413C25A231D500EFC5FF /* ViewController.swift */; };
- 0E05426125A2393300EFC5FF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E05413D25A231D500EFC5FF /* Assets.xcassets */; };
- 0E05426925A2393B00EFC5FF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E05413E25A231D500EFC5FF /* Main.storyboard */; };
- 0E05427825A239C600EFC5FF /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E0541A025A2343500EFC5FF /* NetworkExtension.framework */; };
- 0E05428025A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0E05427725A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
- 0E0542B925A23A8100EFC5FF /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413425A231D500EFC5FF /* Configuration.swift */; };
- 0E0542C225A23A8400EFC5FF /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05413825A231D500EFC5FF /* PacketTunnelProvider.swift */; };
- 0E05438425A240E400EFC5FF /* TunnelKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0E17D7F91F730D9F009EE129 /* TunnelKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 0E05438725A240E900EFC5FF /* TunnelKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0E3251C51F95770D00C108D9 /* TunnelKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 0E0B20402278A85C007A3CB9 /* RoutingTableEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E0B203E2278A85B007A3CB9 /* RoutingTableEntry.h */; };
- 0E0B20412278A85C007A3CB9 /* RoutingTableEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E0B203E2278A85B007A3CB9 /* RoutingTableEntry.h */; };
- 0E0B20422278A85C007A3CB9 /* RoutingTableEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0B203F2278A85B007A3CB9 /* RoutingTableEntry.m */; };
- 0E0B20432278A85C007A3CB9 /* RoutingTableEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E0B203F2278A85B007A3CB9 /* RoutingTableEntry.m */; };
- 0E11089F1F77B9E800A92462 /* TunnelKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E17D7F91F730D9F009EE129 /* TunnelKit.framework */; };
- 0E1108AC1F77B9F900A92462 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E1108AB1F77B9F900A92462 /* AppDelegate.swift */; };
- 0E1108AE1F77B9F900A92462 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E1108AD1F77B9F900A92462 /* ViewController.swift */; };
- 0E1108B11F77B9F900A92462 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E1108AF1F77B9F900A92462 /* Main.storyboard */; };
- 0E1108B31F77B9F900A92462 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E1108B21F77B9F900A92462 /* Assets.xcassets */; };
- 0E1108B61F77B9F900A92462 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E1108B41F77B9F900A92462 /* LaunchScreen.storyboard */; };
- 0E12B29E21449ADB00B4BAE9 /* NSRegularExpression+Shortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E12B29D21449ADB00B4BAE9 /* NSRegularExpression+Shortcuts.swift */; };
- 0E12B29F21449ADB00B4BAE9 /* NSRegularExpression+Shortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E12B29D21449ADB00B4BAE9 /* NSRegularExpression+Shortcuts.swift */; };
- 0E12B2A521454F7F00B4BAE9 /* BidirectionalState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E12B2A421454F7F00B4BAE9 /* BidirectionalState.swift */; };
- 0E12B2A621454F7F00B4BAE9 /* BidirectionalState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E12B2A421454F7F00B4BAE9 /* BidirectionalState.swift */; };
- 0E23B3DB2297466600304C30 /* TestUtils+Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3D82297463200304C30 /* TestUtils+Core.swift */; };
- 0E23B3DC2297466700304C30 /* TestUtils+Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3D82297463200304C30 /* TestUtils+Core.swift */; };
- 0E23B3DE229749C600304C30 /* LinkProducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3DD229749C600304C30 /* LinkProducer.swift */; };
- 0E23B3DF229749C600304C30 /* LinkProducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3DD229749C600304C30 /* LinkProducer.swift */; };
- 0E23B42522982AF800304C30 /* CryptoCBC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3E222982AF800304C30 /* CryptoCBC.h */; };
- 0E23B42622982AF800304C30 /* CryptoCBC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3E222982AF800304C30 /* CryptoCBC.h */; };
- 0E23B42722982AF800304C30 /* CryptoAEAD.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E322982AF800304C30 /* CryptoAEAD.m */; };
- 0E23B42822982AF800304C30 /* CryptoAEAD.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E322982AF800304C30 /* CryptoAEAD.m */; };
- 0E23B42922982AF800304C30 /* CryptoCTR.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3E422982AF800304C30 /* CryptoCTR.h */; };
- 0E23B42A22982AF800304C30 /* CryptoCTR.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3E422982AF800304C30 /* CryptoCTR.h */; };
- 0E23B42B22982AF800304C30 /* SessionKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E522982AF800304C30 /* SessionKey.swift */; };
- 0E23B42C22982AF800304C30 /* SessionKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E522982AF800304C30 /* SessionKey.swift */; };
- 0E23B42D22982AF800304C30 /* ControlChannelSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E622982AF800304C30 /* ControlChannelSerializer.swift */; };
- 0E23B42E22982AF800304C30 /* ControlChannelSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E622982AF800304C30 /* ControlChannelSerializer.swift */; };
- 0E23B42F22982AF800304C30 /* MSS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3E722982AF800304C30 /* MSS.h */; };
- 0E23B43022982AF800304C30 /* MSS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3E722982AF800304C30 /* MSS.h */; };
- 0E23B43122982AF800304C30 /* PacketMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E822982AF800304C30 /* PacketMacros.m */; };
- 0E23B43222982AF800304C30 /* PacketMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E822982AF800304C30 /* PacketMacros.m */; };
- 0E23B43322982AF800304C30 /* ControlChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E922982AF800304C30 /* ControlChannel.swift */; };
- 0E23B43422982AF800304C30 /* ControlChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3E922982AF800304C30 /* ControlChannel.swift */; };
- 0E23B43522982AF800304C30 /* CoreConfiguration+OpenVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EA22982AF800304C30 /* CoreConfiguration+OpenVPN.swift */; };
- 0E23B43622982AF800304C30 /* CoreConfiguration+OpenVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EA22982AF800304C30 /* CoreConfiguration+OpenVPN.swift */; };
- 0E23B43722982AF800304C30 /* TLSBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EB22982AF800304C30 /* TLSBox.m */; };
- 0E23B43822982AF800304C30 /* TLSBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EB22982AF800304C30 /* TLSBox.m */; };
- 0E23B43922982AF800304C30 /* OpenVPNError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EC22982AF800304C30 /* OpenVPNError.swift */; };
- 0E23B43A22982AF800304C30 /* OpenVPNError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EC22982AF800304C30 /* OpenVPNError.swift */; };
- 0E23B43B22982AF800304C30 /* ControlPacket.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3ED22982AF800304C30 /* ControlPacket.h */; };
- 0E23B43C22982AF800304C30 /* ControlPacket.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3ED22982AF800304C30 /* ControlPacket.h */; };
- 0E23B43D22982AF800304C30 /* CryptoBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EE22982AF800304C30 /* CryptoBox.m */; };
- 0E23B43E22982AF800304C30 /* CryptoBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EE22982AF800304C30 /* CryptoBox.m */; };
- 0E23B43F22982AF800304C30 /* OpenVPNSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EF22982AF800304C30 /* OpenVPNSession.swift */; };
- 0E23B44022982AF800304C30 /* OpenVPNSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3EF22982AF800304C30 /* OpenVPNSession.swift */; };
- 0E23B44122982AF800304C30 /* OpenVPNSession+PIA.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F022982AF800304C30 /* OpenVPNSession+PIA.swift */; };
- 0E23B44222982AF800304C30 /* OpenVPNSession+PIA.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F022982AF800304C30 /* OpenVPNSession+PIA.swift */; };
- 0E23B44322982AF800304C30 /* CryptoContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F122982AF800304C30 /* CryptoContainer.swift */; };
- 0E23B44422982AF800304C30 /* CryptoContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F122982AF800304C30 /* CryptoContainer.swift */; };
- 0E23B44522982AF800304C30 /* DataPathCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3F222982AF800304C30 /* DataPathCrypto.h */; };
- 0E23B44622982AF800304C30 /* DataPathCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3F222982AF800304C30 /* DataPathCrypto.h */; };
- 0E23B44722982AF800304C30 /* OpenVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F322982AF800304C30 /* OpenVPN.swift */; };
- 0E23B44822982AF800304C30 /* OpenVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F322982AF800304C30 /* OpenVPN.swift */; };
- 0E23B44922982AF800304C30 /* CompressionAlgorithmNative.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3F422982AF800304C30 /* CompressionAlgorithmNative.h */; };
- 0E23B44A22982AF800304C30 /* CompressionAlgorithmNative.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3F422982AF800304C30 /* CompressionAlgorithmNative.h */; };
- 0E23B44B22982AF800304C30 /* TLSWrap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F522982AF800304C30 /* TLSWrap.swift */; };
- 0E23B44C22982AF800304C30 /* TLSWrap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F522982AF800304C30 /* TLSWrap.swift */; };
- 0E23B44D22982AF800304C30 /* DataPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3F622982AF800304C30 /* DataPath.h */; };
- 0E23B44E22982AF800304C30 /* DataPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3F622982AF800304C30 /* DataPath.h */; };
- 0E23B44F22982AF800304C30 /* OpenVPNTunnelProvider+Interaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F822982AF800304C30 /* OpenVPNTunnelProvider+Interaction.swift */; };
- 0E23B45022982AF800304C30 /* OpenVPNTunnelProvider+Interaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F822982AF800304C30 /* OpenVPNTunnelProvider+Interaction.swift */; };
- 0E23B45122982AF800304C30 /* NEUDPLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F922982AF800304C30 /* NEUDPLink.swift */; };
- 0E23B45222982AF800304C30 /* NEUDPLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3F922982AF800304C30 /* NEUDPLink.swift */; };
- 0E23B45322982AF800304C30 /* ConnectionStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FA22982AF800304C30 /* ConnectionStrategy.swift */; };
- 0E23B45422982AF800304C30 /* ConnectionStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FA22982AF800304C30 /* ConnectionStrategy.swift */; };
- 0E23B45522982AF800304C30 /* OpenVPNTunnelProvider+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FB22982AF800304C30 /* OpenVPNTunnelProvider+Configuration.swift */; };
- 0E23B45622982AF800304C30 /* OpenVPNTunnelProvider+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FB22982AF800304C30 /* OpenVPNTunnelProvider+Configuration.swift */; };
- 0E23B45722982AF800304C30 /* NETCPLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FC22982AF800304C30 /* NETCPLink.swift */; };
- 0E23B45822982AF800304C30 /* NETCPLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FC22982AF800304C30 /* NETCPLink.swift */; };
- 0E23B45922982AF800304C30 /* OpenVPNTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FD22982AF800304C30 /* OpenVPNTunnelProvider.swift */; };
- 0E23B45A22982AF800304C30 /* OpenVPNTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FD22982AF800304C30 /* OpenVPNTunnelProvider.swift */; };
- 0E23B45B22982AF800304C30 /* PacketStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3FE22982AF800304C30 /* PacketStream.h */; };
- 0E23B45C22982AF800304C30 /* PacketStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B3FE22982AF800304C30 /* PacketStream.h */; };
- 0E23B45D22982AF800304C30 /* ProtocolMacros.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FF22982AF800304C30 /* ProtocolMacros.swift */; };
- 0E23B45E22982AF800304C30 /* ProtocolMacros.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B3FF22982AF800304C30 /* ProtocolMacros.swift */; };
- 0E23B45F22982AF800304C30 /* ReplayProtector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40022982AF800304C30 /* ReplayProtector.h */; };
- 0E23B46022982AF800304C30 /* ReplayProtector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40022982AF800304C30 /* ReplayProtector.h */; };
- 0E23B46122982AF800304C30 /* Crypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40122982AF800304C30 /* Crypto.h */; };
- 0E23B46222982AF800304C30 /* Crypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40122982AF800304C30 /* Crypto.h */; };
- 0E23B46322982AF800304C30 /* CompressionAlgorithm.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40222982AF800304C30 /* CompressionAlgorithm.swift */; };
- 0E23B46422982AF800304C30 /* CompressionAlgorithm.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40222982AF800304C30 /* CompressionAlgorithm.swift */; };
- 0E23B46522982AF800304C30 /* EncryptionBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40322982AF800304C30 /* EncryptionBridge.swift */; };
- 0E23B46622982AF800304C30 /* EncryptionBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40322982AF800304C30 /* EncryptionBridge.swift */; };
- 0E23B46722982AF800304C30 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40422982AF800304C30 /* Authenticator.swift */; };
- 0E23B46822982AF800304C30 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40422982AF800304C30 /* Authenticator.swift */; };
- 0E23B46922982AF800304C30 /* CompressionFraming.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40522982AF800304C30 /* CompressionFraming.swift */; };
- 0E23B46A22982AF800304C30 /* CompressionFraming.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40522982AF800304C30 /* CompressionFraming.swift */; };
- 0E23B46B22982AF800304C30 /* CryptoCBC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40622982AF800304C30 /* CryptoCBC.m */; };
- 0E23B46C22982AF800304C30 /* CryptoCBC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40622982AF800304C30 /* CryptoCBC.m */; };
- 0E23B46D22982AF800304C30 /* StaticKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40722982AF800304C30 /* StaticKey.swift */; };
- 0E23B46E22982AF800304C30 /* StaticKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40722982AF800304C30 /* StaticKey.swift */; };
- 0E23B46F22982AF800304C30 /* PushReply.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40822982AF800304C30 /* PushReply.swift */; };
- 0E23B47022982AF800304C30 /* PushReply.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40822982AF800304C30 /* PushReply.swift */; };
- 0E23B47122982AF800304C30 /* PacketMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40922982AF800304C30 /* PacketMacros.h */; };
- 0E23B47222982AF800304C30 /* PacketMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40922982AF800304C30 /* PacketMacros.h */; };
- 0E23B47322982AF800304C30 /* MSS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40A22982AF800304C30 /* MSS.m */; };
- 0E23B47422982AF800304C30 /* MSS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40A22982AF800304C30 /* MSS.m */; };
- 0E23B47522982AF800304C30 /* CryptoCTR.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40B22982AF800304C30 /* CryptoCTR.m */; };
- 0E23B47622982AF800304C30 /* CryptoCTR.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40B22982AF800304C30 /* CryptoCTR.m */; };
- 0E23B47722982AF800304C30 /* CryptoAEAD.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40C22982AF800304C30 /* CryptoAEAD.h */; };
- 0E23B47822982AF800304C30 /* CryptoAEAD.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40C22982AF800304C30 /* CryptoAEAD.h */; };
- 0E23B47922982AF800304C30 /* CompressionFramingNative.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40D22982AF800304C30 /* CompressionFramingNative.h */; };
- 0E23B47A22982AF800304C30 /* CompressionFramingNative.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B40D22982AF800304C30 /* CompressionFramingNative.h */; };
- 0E23B47B22982AF800304C30 /* ConfigurationParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40E22982AF800304C30 /* ConfigurationParser.swift */; };
- 0E23B47C22982AF800304C30 /* ConfigurationParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40E22982AF800304C30 /* ConfigurationParser.swift */; };
- 0E23B47D22982AF800304C30 /* Packet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40F22982AF800304C30 /* Packet.swift */; };
- 0E23B47E22982AF800304C30 /* Packet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B40F22982AF800304C30 /* Packet.swift */; };
- 0E23B47F22982AF800304C30 /* CryptoBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41022982AF800304C30 /* CryptoBox.h */; };
- 0E23B48022982AF800304C30 /* CryptoBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41022982AF800304C30 /* CryptoBox.h */; };
- 0E23B48122982AF800304C30 /* ControlPacket.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41122982AF800304C30 /* ControlPacket.m */; };
- 0E23B48222982AF800304C30 /* ControlPacket.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41122982AF800304C30 /* ControlPacket.m */; };
- 0E23B48322982AF800304C30 /* TLSBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41322982AF800304C30 /* TLSBox.h */; };
- 0E23B48422982AF800304C30 /* TLSBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41322982AF800304C30 /* TLSBox.h */; };
- 0E23B48522982AF800304C30 /* ReplayProtector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41422982AF800304C30 /* ReplayProtector.m */; };
- 0E23B48622982AF800304C30 /* ReplayProtector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41422982AF800304C30 /* ReplayProtector.m */; };
- 0E23B48722982AF800304C30 /* CryptoMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41522982AF800304C30 /* CryptoMacros.h */; };
- 0E23B48822982AF800304C30 /* CryptoMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41522982AF800304C30 /* CryptoMacros.h */; };
- 0E23B48922982AF800304C30 /* PacketStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41622982AF800304C30 /* PacketStream.m */; };
- 0E23B48A22982AF800304C30 /* PacketStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41622982AF800304C30 /* PacketStream.m */; };
- 0E23B48B22982AF800304C30 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41722982AF800304C30 /* Configuration.swift */; };
- 0E23B48C22982AF800304C30 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41722982AF800304C30 /* Configuration.swift */; };
- 0E23B48D22982AF800304C30 /* DataPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41822982AF800304C30 /* DataPath.m */; };
- 0E23B48E22982AF800304C30 /* DataPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41822982AF800304C30 /* DataPath.m */; };
- 0E23B48F22982AF800304C30 /* StandardLZO.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41B22982AF800304C30 /* StandardLZO.m */; };
- 0E23B49022982AF800304C30 /* StandardLZO.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B41B22982AF800304C30 /* StandardLZO.m */; };
- 0E23B49122982AF800304C30 /* lzodefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41D22982AF800304C30 /* lzodefs.h */; };
- 0E23B49222982AF800304C30 /* lzodefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41D22982AF800304C30 /* lzodefs.h */; };
- 0E23B49322982AF800304C30 /* lzoconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41E22982AF800304C30 /* lzoconf.h */; };
- 0E23B49422982AF800304C30 /* lzoconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B41E22982AF800304C30 /* lzoconf.h */; };
- 0E23B49722982AF800304C30 /* minilzo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B42022982AF800304C30 /* minilzo.h */; };
- 0E23B49822982AF800304C30 /* minilzo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E23B42022982AF800304C30 /* minilzo.h */; };
- 0E23B49F22982AF800304C30 /* minilzo.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B42422982AF800304C30 /* minilzo.c */; };
- 0E23B4A022982AF800304C30 /* minilzo.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E23B42422982AF800304C30 /* minilzo.c */; };
- 0E3B65742249253A00EFF4DA /* tunnelbear.enc.1.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = 0E3B656E224923EC00EFF4DA /* tunnelbear.enc.1.ovpn */; };
- 0E3B65752249253B00EFF4DA /* tunnelbear.enc.1.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = 0E3B656E224923EC00EFF4DA /* tunnelbear.enc.1.ovpn */; };
- 0E3B65762249253F00EFF4DA /* tunnelbear.key in Resources */ = {isa = PBXBuildFile; fileRef = 0E3B65712249247E00EFF4DA /* tunnelbear.key */; };
- 0E3B65772249254000EFF4DA /* tunnelbear.key in Resources */ = {isa = PBXBuildFile; fileRef = 0E3B65712249247E00EFF4DA /* tunnelbear.key */; };
- 0E411B9B2271F90700E0852C /* DNS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E411B992271F90700E0852C /* DNS.h */; };
- 0E411B9C2271F90700E0852C /* DNS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E411B992271F90700E0852C /* DNS.h */; };
- 0E411B9D2271F90700E0852C /* DNS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E411B9A2271F90700E0852C /* DNS.m */; };
- 0E411B9E2271F90700E0852C /* DNS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E411B9A2271F90700E0852C /* DNS.m */; };
- 0E411BA02271FA3300E0852C /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E411B9F2271FA3300E0852C /* libresolv.tbd */; };
- 0E411BA22271FA3C00E0852C /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E411BA12271FA3C00E0852C /* libresolv.tbd */; };
- 0E500EA622493B5B00CAE560 /* tunnelbear.enc.1.key in Resources */ = {isa = PBXBuildFile; fileRef = 0E500EA522493B5B00CAE560 /* tunnelbear.enc.1.key */; };
- 0E500EA722493B5B00CAE560 /* tunnelbear.enc.1.key in Resources */ = {isa = PBXBuildFile; fileRef = 0E500EA522493B5B00CAE560 /* tunnelbear.enc.1.key */; };
- 0E58BF5622411F3D006FB157 /* LZO.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E58BF5522411F37006FB157 /* LZO.h */; };
- 0E58BF5722411F3E006FB157 /* LZO.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E58BF5522411F37006FB157 /* LZO.h */; };
- 0E58BF5922411FEF006FB157 /* LZO.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E58BF5822411FEF006FB157 /* LZO.m */; };
- 0E58BF5A22411FEF006FB157 /* LZO.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E58BF5822411FEF006FB157 /* LZO.m */; };
- 0E749F622178911D00BB2701 /* pia-2048.pem in Resources */ = {isa = PBXBuildFile; fileRef = 0E749F612178911C00BB2701 /* pia-2048.pem */; };
- 0E7F3F6A246ABA0F006BE77F /* IPHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E7F3F69246ABA0F006BE77F /* IPHeader.swift */; };
- 0E7F3F6B246ABA0F006BE77F /* IPHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E7F3F69246ABA0F006BE77F /* IPHeader.swift */; };
- 0E94E8EA25BACEBD0040BC30 /* DNSProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E94E8E925BACEBD0040BC30 /* DNSProtocol.swift */; };
- 0E94E8EB25BACEBD0040BC30 /* DNSProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E94E8E925BACEBD0040BC30 /* DNSProtocol.swift */; };
- 0EA82A282190B220007960EB /* TunnelKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E3251C51F95770D00C108D9 /* TunnelKit.framework */; };
- 0EA82A3E2190B2BC007960EB /* pia-2048.pem in Resources */ = {isa = PBXBuildFile; fileRef = 0E749F612178911C00BB2701 /* pia-2048.pem */; };
- 0EA9F28926D69FAE00E806E1 /* NetworkExtensionVPNConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F28826D69FAE00E806E1 /* NetworkExtensionVPNConfiguration.swift */; };
- 0EA9F28A26D69FAE00E806E1 /* NetworkExtensionVPNConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F28826D69FAE00E806E1 /* NetworkExtensionVPNConfiguration.swift */; };
- 0EA9F28C26D6A1EE00E806E1 /* NetworkExtensionVPNProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F28B26D6A1EE00E806E1 /* NetworkExtensionVPNProvider.swift */; };
- 0EA9F28D26D6A1EE00E806E1 /* NetworkExtensionVPNProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F28B26D6A1EE00E806E1 /* NetworkExtensionVPNProvider.swift */; };
- 0EA9F28F26D6AC6D00E806E1 /* VPNProviderIPC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F28E26D6AC6D00E806E1 /* VPNProviderIPC.swift */; };
- 0EA9F29026D6AC6D00E806E1 /* VPNProviderIPC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F28E26D6AC6D00E806E1 /* VPNProviderIPC.swift */; };
- 0EA9F29526D6CA7E00E806E1 /* NetworkExtensionLocator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F29426D6CA7E00E806E1 /* NetworkExtensionLocator.swift */; };
- 0EA9F29626D6CA7E00E806E1 /* NetworkExtensionLocator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F29426D6CA7E00E806E1 /* NetworkExtensionLocator.swift */; };
- 0EAC57372494277A00D0FCE0 /* OpenVPNProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57312494277A00D0FCE0 /* OpenVPNProvider.swift */; };
- 0EAC57382494277A00D0FCE0 /* OpenVPNProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57312494277A00D0FCE0 /* OpenVPNProvider.swift */; };
- 0EAC57392494277A00D0FCE0 /* MockVPNProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57322494277A00D0FCE0 /* MockVPNProvider.swift */; };
- 0EAC573A2494277A00D0FCE0 /* MockVPNProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57322494277A00D0FCE0 /* MockVPNProvider.swift */; };
- 0EAC573B2494277A00D0FCE0 /* VPNStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57332494277A00D0FCE0 /* VPNStatus.swift */; };
- 0EAC573C2494277A00D0FCE0 /* VPNStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57332494277A00D0FCE0 /* VPNStatus.swift */; };
- 0EAC573D2494277A00D0FCE0 /* VPNConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57342494277A00D0FCE0 /* VPNConfiguration.swift */; };
- 0EAC573E2494277A00D0FCE0 /* VPNConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57342494277A00D0FCE0 /* VPNConfiguration.swift */; };
- 0EAC573F2494277A00D0FCE0 /* VPNProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57352494277A00D0FCE0 /* VPNProvider.swift */; };
- 0EAC57402494277A00D0FCE0 /* VPNProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57352494277A00D0FCE0 /* VPNProvider.swift */; };
- 0EAC57412494277A00D0FCE0 /* VPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57362494277A00D0FCE0 /* VPN.swift */; };
- 0EAC57422494277A00D0FCE0 /* VPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC57362494277A00D0FCE0 /* VPN.swift */; };
- 0ECAF84A246697DA00D8266A /* TunnelKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E17D7F91F730D9F009EE129 /* TunnelKit.framework */; };
- 0ECAF84B246697DA00D8266A /* TunnelKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0E17D7F91F730D9F009EE129 /* TunnelKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 0ECC60D82254981A0020BEAC /* ConfigurationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECC60D72254981A0020BEAC /* ConfigurationError.swift */; };
- 0ECC60D92254981A0020BEAC /* ConfigurationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECC60D72254981A0020BEAC /* ConfigurationError.swift */; };
- 0ECCEA7F2622F2F00007DA28 /* NativeProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECCEA7E2622F2F00007DA28 /* NativeProvider.swift */; };
- 0ECCEA802622F2F00007DA28 /* NativeProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECCEA7E2622F2F00007DA28 /* NativeProvider.swift */; };
- 0ECEB1152252C8E900E9E551 /* tunnelbear.enc.8.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = 0ECEB1132252C8E900E9E551 /* tunnelbear.enc.8.ovpn */; };
- 0ECEB1162252C8E900E9E551 /* tunnelbear.enc.8.ovpn in Resources */ = {isa = PBXBuildFile; fileRef = 0ECEB1132252C8E900E9E551 /* tunnelbear.enc.8.ovpn */; };
- 0ECEB1172252C8E900E9E551 /* tunnelbear.enc.8.key in Resources */ = {isa = PBXBuildFile; fileRef = 0ECEB1142252C8E900E9E551 /* tunnelbear.enc.8.key */; };
- 0ECEB1182252C8E900E9E551 /* tunnelbear.enc.8.key in Resources */ = {isa = PBXBuildFile; fileRef = 0ECEB1142252C8E900E9E551 /* tunnelbear.enc.8.key */; };
- 0ECEB11B2252CDAD00E9E551 /* tunnelbear.crt in Resources */ = {isa = PBXBuildFile; fileRef = 0ECEB11A2252CDAD00E9E551 /* tunnelbear.crt */; };
- 0ECEB11C2252CDAD00E9E551 /* tunnelbear.crt in Resources */ = {isa = PBXBuildFile; fileRef = 0ECEB11A2252CDAD00E9E551 /* tunnelbear.crt */; };
- 0EE2F96E2291636B00F56F49 /* IPv4Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F96D2291636B00F56F49 /* IPv4Settings.swift */; };
- 0EE2F96F2291636B00F56F49 /* IPv4Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F96D2291636B00F56F49 /* IPv4Settings.swift */; };
- 0EE2F9712291638600F56F49 /* IPv6Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9702291638600F56F49 /* IPv6Settings.swift */; };
- 0EE2F9722291638600F56F49 /* IPv6Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9702291638600F56F49 /* IPv6Settings.swift */; };
- 0EE2F974229163C900F56F49 /* Proxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F973229163C900F56F49 /* Proxy.swift */; };
- 0EE2F975229163C900F56F49 /* Proxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F973229163C900F56F49 /* Proxy.swift */; };
- 0EE2F97A2291817300F56F49 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9792291817300F56F49 /* Errors.swift */; };
- 0EE2F97B2291817300F56F49 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9792291817300F56F49 /* Errors.swift */; };
- 0EE2F9AC2291853D00F56F49 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9AB2291853D00F56F49 /* Session.swift */; };
- 0EE2F9AD2291853D00F56F49 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9AB2291853D00F56F49 /* Session.swift */; };
- 0EE2F9F022918DA100F56F49 /* NETCPSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E022918DA100F56F49 /* NETCPSocket.swift */; };
- 0EE2F9F122918DA100F56F49 /* NETCPSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E022918DA100F56F49 /* NETCPSocket.swift */; };
- 0EE2F9F222918DA100F56F49 /* NETunnelInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E122918DA100F56F49 /* NETunnelInterface.swift */; };
- 0EE2F9F322918DA100F56F49 /* NETunnelInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E122918DA100F56F49 /* NETunnelInterface.swift */; };
- 0EE2F9F422918DA100F56F49 /* NWTCPConnectionState+Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E222918DA100F56F49 /* NWTCPConnectionState+Description.swift */; };
- 0EE2F9F522918DA100F56F49 /* NWTCPConnectionState+Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E222918DA100F56F49 /* NWTCPConnectionState+Description.swift */; };
- 0EE2F9F622918DA100F56F49 /* NEUDPSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E322918DA100F56F49 /* NEUDPSocket.swift */; };
- 0EE2F9F722918DA100F56F49 /* NEUDPSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E322918DA100F56F49 /* NEUDPSocket.swift */; };
- 0EE2F9F822918DA100F56F49 /* NWUDPSessionState+Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E422918DA100F56F49 /* NWUDPSessionState+Description.swift */; };
- 0EE2F9F922918DA100F56F49 /* NWUDPSessionState+Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E422918DA100F56F49 /* NWUDPSessionState+Description.swift */; };
- 0EE2F9FA22918DA100F56F49 /* DNSResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E522918DA100F56F49 /* DNSResolver.swift */; };
- 0EE2F9FB22918DA100F56F49 /* DNSResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E522918DA100F56F49 /* DNSResolver.swift */; };
- 0EE2F9FE22918DA100F56F49 /* Keychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E722918DA100F56F49 /* Keychain.swift */; };
- 0EE2F9FF22918DA100F56F49 /* Keychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E722918DA100F56F49 /* Keychain.swift */; };
- 0EE2FA0022918DA100F56F49 /* MemoryDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E822918DA100F56F49 /* MemoryDestination.swift */; };
- 0EE2FA0122918DA100F56F49 /* MemoryDestination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E822918DA100F56F49 /* MemoryDestination.swift */; };
- 0EE2FA0222918DA100F56F49 /* GenericSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E922918DA100F56F49 /* GenericSocket.swift */; };
- 0EE2FA0322918DA100F56F49 /* GenericSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9E922918DA100F56F49 /* GenericSocket.swift */; };
- 0EE2FA0622918DA100F56F49 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9EB22918DA100F56F49 /* Utils.swift */; };
- 0EE2FA0722918DA100F56F49 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9EB22918DA100F56F49 /* Utils.swift */; };
- 0EE2FA0A22918DA100F56F49 /* InterfaceObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9ED22918DA100F56F49 /* InterfaceObserver.swift */; };
- 0EE2FA0B22918DA100F56F49 /* InterfaceObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2F9ED22918DA100F56F49 /* InterfaceObserver.swift */; };
- 0EE2FA422291954300F56F49 /* AppExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA0E2291953300F56F49 /* AppExtensionTests.swift */; };
- 0EE2FA432291954300F56F49 /* CompressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA1C2291953300F56F49 /* CompressionTests.swift */; };
- 0EE2FA442291954300F56F49 /* ConfigurationParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA162291953300F56F49 /* ConfigurationParserTests.swift */; };
- 0EE2FA452291954300F56F49 /* ControlChannelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA1A2291953300F56F49 /* ControlChannelTests.swift */; };
- 0EE2FA462291954300F56F49 /* DataManipulationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA192291953300F56F49 /* DataManipulationTests.swift */; };
- 0EE2FA472291954300F56F49 /* DataPathEncryptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA1D2291953300F56F49 /* DataPathEncryptionTests.swift */; };
- 0EE2FA482291954300F56F49 /* DataPathPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA0D2291953300F56F49 /* DataPathPerformanceTests.swift */; };
- 0EE2FA492291954300F56F49 /* DNSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA112291953300F56F49 /* DNSTests.swift */; };
- 0EE2FA4A2291954300F56F49 /* EncryptionPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA172291953300F56F49 /* EncryptionPerformanceTests.swift */; };
- 0EE2FA4B2291954300F56F49 /* EncryptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA102291953300F56F49 /* EncryptionTests.swift */; };
- 0EE2FA4C2291954300F56F49 /* LinkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA122291953300F56F49 /* LinkTests.swift */; };
- 0EE2FA4D2291954300F56F49 /* PacketTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA182291953300F56F49 /* PacketTests.swift */; };
- 0EE2FA4E2291954300F56F49 /* PushTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA1B2291953300F56F49 /* PushTests.swift */; };
- 0EE2FA4F2291954300F56F49 /* RandomTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA0F2291953300F56F49 /* RandomTests.swift */; };
- 0EE2FA502291954300F56F49 /* RawPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA0C2291953300F56F49 /* RawPerformanceTests.swift */; };
- 0EE2FA512291954300F56F49 /* RoutingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA132291953300F56F49 /* RoutingTests.swift */; };
- 0EE2FA522291954300F56F49 /* StaticKeyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA142291953300F56F49 /* StaticKeyTests.swift */; };
- 0EE2FA532291954300F56F49 /* TestUtils+OpenVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA152291953300F56F49 /* TestUtils+OpenVPN.swift */; };
- 0EE2FA542291954400F56F49 /* AppExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA0E2291953300F56F49 /* AppExtensionTests.swift */; };
- 0EE2FA552291954400F56F49 /* CompressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA1C2291953300F56F49 /* CompressionTests.swift */; };
- 0EE2FA562291954400F56F49 /* ConfigurationParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA162291953300F56F49 /* ConfigurationParserTests.swift */; };
- 0EE2FA572291954400F56F49 /* ControlChannelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA1A2291953300F56F49 /* ControlChannelTests.swift */; };
- 0EE2FA582291954400F56F49 /* DataManipulationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA192291953300F56F49 /* DataManipulationTests.swift */; };
- 0EE2FA592291954400F56F49 /* DataPathEncryptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA1D2291953300F56F49 /* DataPathEncryptionTests.swift */; };
- 0EE2FA5A2291954400F56F49 /* DataPathPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA0D2291953300F56F49 /* DataPathPerformanceTests.swift */; };
- 0EE2FA5B2291954400F56F49 /* DNSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA112291953300F56F49 /* DNSTests.swift */; };
- 0EE2FA5C2291954400F56F49 /* EncryptionPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA172291953300F56F49 /* EncryptionPerformanceTests.swift */; };
- 0EE2FA5D2291954400F56F49 /* EncryptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA102291953300F56F49 /* EncryptionTests.swift */; };
- 0EE2FA5E2291954400F56F49 /* LinkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA122291953300F56F49 /* LinkTests.swift */; };
- 0EE2FA5F2291954400F56F49 /* PacketTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA182291953300F56F49 /* PacketTests.swift */; };
- 0EE2FA602291954400F56F49 /* PushTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA1B2291953300F56F49 /* PushTests.swift */; };
- 0EE2FA612291954400F56F49 /* RandomTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA0F2291953300F56F49 /* RandomTests.swift */; };
- 0EE2FA622291954400F56F49 /* RawPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA0C2291953300F56F49 /* RawPerformanceTests.swift */; };
- 0EE2FA632291954400F56F49 /* RoutingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA132291953300F56F49 /* RoutingTests.swift */; };
- 0EE2FA642291954400F56F49 /* StaticKeyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA142291953300F56F49 /* StaticKeyTests.swift */; };
- 0EE2FA652291954400F56F49 /* TestUtils+OpenVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE2FA152291953300F56F49 /* TestUtils+OpenVPN.swift */; };
- 0EEC49E120B5F7EA008FEB91 /* Allocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFEB42E2006D3C800F81029 /* Allocation.h */; };
- 0EEC49E520B5F7F6008FEB91 /* Errors.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFEB4362006D3C800F81029 /* Errors.h */; };
- 0EEC49EA20B5F7F6008FEB91 /* ZeroingData.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFEB4412006D3C800F81029 /* ZeroingData.h */; };
- 0EFB902922788511006405E4 /* RoutingTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFB902722788511006405E4 /* RoutingTable.h */; };
- 0EFB902A22788511006405E4 /* RoutingTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFB902722788511006405E4 /* RoutingTable.h */; };
- 0EFB902B22788512006405E4 /* RoutingTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFB902822788511006405E4 /* RoutingTable.m */; };
- 0EFB902C22788512006405E4 /* RoutingTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFB902822788511006405E4 /* RoutingTable.m */; };
- 0EFEB4592006D3C800F81029 /* Allocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFEB42E2006D3C800F81029 /* Allocation.h */; };
- 0EFEB45A2006D3C800F81029 /* TunnelInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB42F2006D3C800F81029 /* TunnelInterface.swift */; };
- 0EFEB45C2006D3C800F81029 /* ZeroingData.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4312006D3C800F81029 /* ZeroingData.m */; };
- 0EFEB4612006D3C800F81029 /* Errors.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFEB4362006D3C800F81029 /* Errors.h */; };
- 0EFEB4622006D3C800F81029 /* SecureRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4372006D3C800F81029 /* SecureRandom.swift */; };
- 0EFEB4662006D3C800F81029 /* ZeroingData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB43B2006D3C800F81029 /* ZeroingData.swift */; };
- 0EFEB46C2006D3C800F81029 /* ZeroingData.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EFEB4412006D3C800F81029 /* ZeroingData.h */; };
- 0EFEB46D2006D3C800F81029 /* Data+Manipulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4432006D3C800F81029 /* Data+Manipulation.swift */; };
- 0EFEB46F2006D3C800F81029 /* IOInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4452006D3C800F81029 /* IOInterface.swift */; };
- 0EFEB4702006D3C800F81029 /* Allocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4462006D3C800F81029 /* Allocation.m */; };
- 0EFEB4732006D3C800F81029 /* LinkInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4492006D3C800F81029 /* LinkInterface.swift */; };
- 0EFEB4742006D3C800F81029 /* CoreConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB44A2006D3C800F81029 /* CoreConfiguration.swift */; };
- 0EFEB4752006D3C800F81029 /* Errors.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB44B2006D3C800F81029 /* Errors.m */; };
- 0EFEB4902006D7F300F81029 /* TunnelInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB42F2006D3C800F81029 /* TunnelInterface.swift */; };
- 0EFEB4922006D7F300F81029 /* ZeroingData.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4312006D3C800F81029 /* ZeroingData.m */; };
- 0EFEB4952006D7F300F81029 /* SecureRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4372006D3C800F81029 /* SecureRandom.swift */; };
- 0EFEB4982006D7F300F81029 /* ZeroingData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB43B2006D3C800F81029 /* ZeroingData.swift */; };
- 0EFEB49C2006D7F300F81029 /* Data+Manipulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4432006D3C800F81029 /* Data+Manipulation.swift */; };
- 0EFEB49D2006D7F300F81029 /* IOInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4452006D3C800F81029 /* IOInterface.swift */; };
- 0EFEB49E2006D7F300F81029 /* Allocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4462006D3C800F81029 /* Allocation.m */; };
- 0EFEB4A12006D7F300F81029 /* LinkInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB4492006D3C800F81029 /* LinkInterface.swift */; };
- 0EFEB4A22006D7F300F81029 /* CoreConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB44A2006D3C800F81029 /* CoreConfiguration.swift */; };
- 0EFEB4A32006D7F300F81029 /* Errors.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEB44B2006D3C800F81029 /* Errors.m */; };
- 14A98E2438394F91CA6E81FF /* Pods_ios_TunnelKitDemoTunnel_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 488FA71CA2DC38D2FDF7D1D8 /* Pods_ios_TunnelKitDemoTunnel_iOS.framework */; };
- 2E1C97B5CEB3ACB400B2B654 /* Pods_ios_TunnelKitDemo_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24169970F957D36C9D0765C /* Pods_ios_TunnelKitDemo_iOS.framework */; };
- 3298292573C925E76D8DC769 /* Pods_macos_TunnelKitTests_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D383BA02D6881FDBEF55562A /* Pods_macos_TunnelKitTests_macOS.framework */; };
- 51082C1C1032265B55A0DB50 /* Pods_macos_TunnelKitDemoTunnel_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A49801900FA52CE67047623B /* Pods_macos_TunnelKitDemoTunnel_macOS.framework */; };
- 721A20C2EC6A9738AEBC1F44 /* Pods_ios_TunnelKit_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44612F27B9EF890AF8B926DB /* Pods_ios_TunnelKit_iOS.framework */; };
- CD2AEAA866A43CDEC75AA2C1 /* Pods_ios_TunnelKitHost.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3B8B90F61D2F5537A5C0691 /* Pods_ios_TunnelKitHost.framework */; };
- E5A45D60EA9229A27490EE2C /* Pods_ios_TunnelKitTests_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C34F78A0C56932A2127E6C81 /* Pods_ios_TunnelKitTests_iOS.framework */; };
- FDC8526145844D69D78C0F44 /* Pods_macos_TunnelKitDemo_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 501B04C95D9A457FFA483C3B /* Pods_macos_TunnelKitDemo_macOS.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 0E0541A725A2343500EFC5FF /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E05419E25A2343500EFC5FF;
- remoteInfo = Tunnel;
- };
- 0E0541F625A235F200EFC5FF /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E17D7F81F730D9F009EE129;
- remoteInfo = "TunnelKit-iOS";
- };
- 0E0541F825A235F700EFC5FF /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E17D7F81F730D9F009EE129;
- remoteInfo = "TunnelKit-iOS";
- };
- 0E05427125A2399500EFC5FF /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E3251C41F95770D00C108D9;
- remoteInfo = "TunnelKit-macOS";
- };
- 0E05427E25A239C600EFC5FF /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E05427625A239C600EFC5FF;
- remoteInfo = Tunnel;
- };
- 0E05428D25A239E700EFC5FF /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E3251C41F95770D00C108D9;
- remoteInfo = "TunnelKit-macOS";
- };
- 0E1108A01F77B9E800A92462 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E17D7F81F730D9F009EE129;
- remoteInfo = PIATunnel;
- };
- 0E1108BB1F77BA0200A92462 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E1108A81F77B9F900A92462;
- remoteInfo = PIATunnelHost;
- };
- 0E9379CA1F819A4600CE91B6 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E17D7F81F730D9F009EE129;
- remoteInfo = PIATunnel;
- };
- 0EA82A292190B220007960EB /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0E17D7F01F730D9F009EE129 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 0E3251C41F95770D00C108D9;
- remoteInfo = "TunnelKit-macOS";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 0E0541AD25A2343500EFC5FF /* Embed App Extensions */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 13;
- files = (
- 0E0541A925A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex in Embed App Extensions */,
- );
- name = "Embed App Extensions";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0E05428425A239C600EFC5FF /* Embed App Extensions */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 13;
- files = (
- 0E05428025A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex in Embed App Extensions */,
- );
- name = "Embed App Extensions";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0E05438525A240E400EFC5FF /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 0E05438425A240E400EFC5FF /* TunnelKit.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0E05438825A240E900EFC5FF /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 0E05438725A240E900EFC5FF /* TunnelKit.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0ECAF84C246697DA00D8266A /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 0ECAF84B246697DA00D8266A /* TunnelKit.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 003F0DF74DE0A7292E643803 /* Pods-ios-TunnelKitTests-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-TunnelKitTests-iOS.release.xcconfig"; path = "Target Support Files/Pods-ios-TunnelKitTests-iOS/Pods-ios-TunnelKitTests-iOS.release.xcconfig"; sourceTree = ""; };
- 0AF4DDAD0F2B526865FF49E2 /* Pods-macos-TunnelKitTests-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-TunnelKitTests-macOS.debug.xcconfig"; path = "Target Support Files/Pods-macos-TunnelKitTests-macOS/Pods-macos-TunnelKitTests-macOS.debug.xcconfig"; sourceTree = ""; };
- 0E011F792196D93600BA59EE /* SocketType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketType.swift; sourceTree = ""; };
- 0E011F7C2196D97200BA59EE /* EndpointProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndpointProtocol.swift; sourceTree = ""; };
- 0E011F832196E25400BA59EE /* pia-hungary.ovpn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "pia-hungary.ovpn"; sourceTree = ""; };
- 0E05413025A231D500EFC5FF /* DemoTunnel.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DemoTunnel.entitlements; sourceTree = ""; };
- 0E05413225A231D500EFC5FF /* DemoTunnel.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = DemoTunnel.plist; sourceTree = ""; };
- 0E05413425A231D500EFC5FF /* Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = ""; };
- 0E05413825A231D500EFC5FF /* PacketTunnelProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacketTunnelProvider.swift; sourceTree = ""; };
- 0E05413925A231D500EFC5FF /* DemoTunnel.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DemoTunnel.entitlements; sourceTree = ""; };
- 0E05413C25A231D500EFC5FF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
- 0E05413D25A231D500EFC5FF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 0E05413F25A231D500EFC5FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 0E05414025A231D500EFC5FF /* Demo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Demo.entitlements; sourceTree = ""; };
- 0E05414125A231D500EFC5FF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 0E05414225A231D500EFC5FF /* Demo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Demo.plist; sourceTree = ""; };
- 0E05414425A231D500EFC5FF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
- 0E05414525A231D500EFC5FF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 0E05414725A231D500EFC5FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 0E05414925A231D500EFC5FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 0E05414A25A231D500EFC5FF /* Demo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Demo.entitlements; sourceTree = ""; };
- 0E05414B25A231D500EFC5FF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 0E05414C25A231D500EFC5FF /* Demo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Demo.plist; sourceTree = ""; };
- 0E05416925A232FD00EFC5FF /* TunnelKitDemo-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "TunnelKitDemo-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 0E05419F25A2343500EFC5FF /* TunnelKitDemoTunnel-iOS.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "TunnelKitDemoTunnel-iOS.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
- 0E0541A025A2343500EFC5FF /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; };
- 0E05422C25A236EB00EFC5FF /* TunnelKitDemo-macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "TunnelKitDemo-macOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 0E05427725A239C600EFC5FF /* TunnelKitDemoTunnel-macOS.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "TunnelKitDemoTunnel-macOS.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
- 0E0B203E2278A85B007A3CB9 /* RoutingTableEntry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoutingTableEntry.h; sourceTree = ""; };
- 0E0B203F2278A85B007A3CB9 /* RoutingTableEntry.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoutingTableEntry.m; sourceTree = ""; };
- 0E11089A1F77B9E800A92462 /* TunnelKitTests-iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "TunnelKitTests-iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
- 0E11089E1F77B9E800A92462 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 0E1108A91F77B9F900A92462 /* TunnelKitHost.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TunnelKitHost.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 0E1108AB1F77B9F900A92462 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 0E1108AD1F77B9F900A92462 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
- 0E1108B01F77B9F900A92462 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 0E1108B21F77B9F900A92462 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 0E1108B51F77B9F900A92462 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 0E1108B71F77B9F900A92462 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 0E12B29D21449ADB00B4BAE9 /* NSRegularExpression+Shortcuts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSRegularExpression+Shortcuts.swift"; sourceTree = ""; };
- 0E12B2A421454F7F00B4BAE9 /* BidirectionalState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BidirectionalState.swift; sourceTree = ""; };
- 0E17D7F91F730D9F009EE129 /* TunnelKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TunnelKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 0E23B3D82297463200304C30 /* TestUtils+Core.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TestUtils+Core.swift"; sourceTree = ""; };
- 0E23B3DD229749C600304C30 /* LinkProducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkProducer.swift; sourceTree = ""; };
- 0E23B3E222982AF800304C30 /* CryptoCBC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoCBC.h; sourceTree = ""; };
- 0E23B3E322982AF800304C30 /* CryptoAEAD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CryptoAEAD.m; sourceTree = ""; };
- 0E23B3E422982AF800304C30 /* CryptoCTR.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoCTR.h; sourceTree = ""; };
- 0E23B3E522982AF800304C30 /* SessionKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionKey.swift; sourceTree = ""; };
- 0E23B3E622982AF800304C30 /* ControlChannelSerializer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlChannelSerializer.swift; sourceTree = ""; };
- 0E23B3E722982AF800304C30 /* MSS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSS.h; sourceTree = ""; };
- 0E23B3E822982AF800304C30 /* PacketMacros.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PacketMacros.m; sourceTree = ""; };
- 0E23B3E922982AF800304C30 /* ControlChannel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlChannel.swift; sourceTree = ""; };
- 0E23B3EA22982AF800304C30 /* CoreConfiguration+OpenVPN.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreConfiguration+OpenVPN.swift"; sourceTree = ""; };
- 0E23B3EB22982AF800304C30 /* TLSBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TLSBox.m; sourceTree = ""; };
- 0E23B3EC22982AF800304C30 /* OpenVPNError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenVPNError.swift; sourceTree = ""; };
- 0E23B3ED22982AF800304C30 /* ControlPacket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ControlPacket.h; sourceTree = ""; };
- 0E23B3EE22982AF800304C30 /* CryptoBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CryptoBox.m; sourceTree = ""; };
- 0E23B3EF22982AF800304C30 /* OpenVPNSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenVPNSession.swift; sourceTree = ""; };
- 0E23B3F022982AF800304C30 /* OpenVPNSession+PIA.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "OpenVPNSession+PIA.swift"; sourceTree = ""; };
- 0E23B3F122982AF800304C30 /* CryptoContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CryptoContainer.swift; sourceTree = ""; };
- 0E23B3F222982AF800304C30 /* DataPathCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataPathCrypto.h; sourceTree = ""; };
- 0E23B3F322982AF800304C30 /* OpenVPN.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenVPN.swift; sourceTree = ""; };
- 0E23B3F422982AF800304C30 /* CompressionAlgorithmNative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompressionAlgorithmNative.h; sourceTree = ""; };
- 0E23B3F522982AF800304C30 /* TLSWrap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TLSWrap.swift; sourceTree = ""; };
- 0E23B3F622982AF800304C30 /* DataPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataPath.h; sourceTree = ""; };
- 0E23B3F822982AF800304C30 /* OpenVPNTunnelProvider+Interaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "OpenVPNTunnelProvider+Interaction.swift"; sourceTree = ""; };
- 0E23B3F922982AF800304C30 /* NEUDPLink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NEUDPLink.swift; sourceTree = ""; };
- 0E23B3FA22982AF800304C30 /* ConnectionStrategy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionStrategy.swift; sourceTree = ""; };
- 0E23B3FB22982AF800304C30 /* OpenVPNTunnelProvider+Configuration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "OpenVPNTunnelProvider+Configuration.swift"; sourceTree = ""; };
- 0E23B3FC22982AF800304C30 /* NETCPLink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NETCPLink.swift; sourceTree = ""; };
- 0E23B3FD22982AF800304C30 /* OpenVPNTunnelProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenVPNTunnelProvider.swift; sourceTree = ""; };
- 0E23B3FE22982AF800304C30 /* PacketStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PacketStream.h; sourceTree = ""; };
- 0E23B3FF22982AF800304C30 /* ProtocolMacros.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProtocolMacros.swift; sourceTree = ""; };
- 0E23B40022982AF800304C30 /* ReplayProtector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReplayProtector.h; sourceTree = ""; };
- 0E23B40122982AF800304C30 /* Crypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Crypto.h; sourceTree = ""; };
- 0E23B40222982AF800304C30 /* CompressionAlgorithm.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompressionAlgorithm.swift; sourceTree = ""; };
- 0E23B40322982AF800304C30 /* EncryptionBridge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EncryptionBridge.swift; sourceTree = ""; };
- 0E23B40422982AF800304C30 /* Authenticator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Authenticator.swift; sourceTree = ""; };
- 0E23B40522982AF800304C30 /* CompressionFraming.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompressionFraming.swift; sourceTree = ""; };
- 0E23B40622982AF800304C30 /* CryptoCBC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CryptoCBC.m; sourceTree = ""; };
- 0E23B40722982AF800304C30 /* StaticKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaticKey.swift; sourceTree = ""; };
- 0E23B40822982AF800304C30 /* PushReply.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PushReply.swift; sourceTree = ""; };
- 0E23B40922982AF800304C30 /* PacketMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PacketMacros.h; sourceTree = ""; };
- 0E23B40A22982AF800304C30 /* MSS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSS.m; sourceTree = ""; };
- 0E23B40B22982AF800304C30 /* CryptoCTR.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CryptoCTR.m; sourceTree = ""; };
- 0E23B40C22982AF800304C30 /* CryptoAEAD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAEAD.h; sourceTree = ""; };
- 0E23B40D22982AF800304C30 /* CompressionFramingNative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompressionFramingNative.h; sourceTree = ""; };
- 0E23B40E22982AF800304C30 /* ConfigurationParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigurationParser.swift; sourceTree = ""; };
- 0E23B40F22982AF800304C30 /* Packet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Packet.swift; sourceTree = ""; };
- 0E23B41022982AF800304C30 /* CryptoBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoBox.h; sourceTree = ""; };
- 0E23B41122982AF800304C30 /* ControlPacket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ControlPacket.m; sourceTree = ""; };
- 0E23B41222982AF800304C30 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; };
- 0E23B41322982AF800304C30 /* TLSBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TLSBox.h; sourceTree = ""; };
- 0E23B41422982AF800304C30 /* ReplayProtector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReplayProtector.m; sourceTree = ""; };
- 0E23B41522982AF800304C30 /* CryptoMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoMacros.h; sourceTree = ""; };
- 0E23B41622982AF800304C30 /* PacketStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PacketStream.m; sourceTree = ""; };
- 0E23B41722982AF800304C30 /* Configuration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = ""; };
- 0E23B41822982AF800304C30 /* DataPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DataPath.m; sourceTree = ""; };
- 0E23B41B22982AF800304C30 /* StandardLZO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StandardLZO.m; sourceTree = ""; };
- 0E23B41D22982AF800304C30 /* lzodefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzodefs.h; sourceTree = ""; };
- 0E23B41E22982AF800304C30 /* lzoconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzoconf.h; sourceTree = ""; };
- 0E23B42022982AF800304C30 /* minilzo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minilzo.h; sourceTree = ""; };
- 0E23B42422982AF800304C30 /* minilzo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = minilzo.c; sourceTree = ""; };
- 0E3251C51F95770D00C108D9 /* TunnelKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TunnelKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 0E3B656E224923EC00EFF4DA /* tunnelbear.enc.1.ovpn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tunnelbear.enc.1.ovpn; sourceTree = ""; };
- 0E3B65712249247E00EFF4DA /* tunnelbear.key */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tunnelbear.key; sourceTree = ""; };
- 0E411B992271F90700E0852C /* DNS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DNS.h; sourceTree = ""; };
- 0E411B9A2271F90700E0852C /* DNS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DNS.m; sourceTree = ""; };
- 0E411B9F2271FA3300E0852C /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libresolv.tbd; sourceTree = DEVELOPER_DIR; };
- 0E411BA12271FA3C00E0852C /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; };
- 0E500EA522493B5B00CAE560 /* tunnelbear.enc.1.key */ = {isa = PBXFileReference; lastKnownFileType = text; path = tunnelbear.enc.1.key; sourceTree = ""; };
- 0E58BF5522411F37006FB157 /* LZO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LZO.h; sourceTree = ""; };
- 0E58BF5822411FEF006FB157 /* LZO.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LZO.m; sourceTree = ""; };
- 0E6479E0212EACD6008E6888 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 0E749F612178911C00BB2701 /* pia-2048.pem */ = {isa = PBXFileReference; lastKnownFileType = text; path = "pia-2048.pem"; sourceTree = ""; };
- 0E7F3F69246ABA0F006BE77F /* IPHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPHeader.swift; sourceTree = ""; };
- 0E85A25B202CCA3D0059E9F9 /* Host.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Host.entitlements; sourceTree = ""; };
- 0E94E8E925BACEBD0040BC30 /* DNSProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DNSProtocol.swift; sourceTree = ""; };
- 0EA82A232190B220007960EB /* TunnelKitTests-macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "TunnelKitTests-macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
- 0EA9F28826D69FAE00E806E1 /* NetworkExtensionVPNConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkExtensionVPNConfiguration.swift; sourceTree = ""; };
- 0EA9F28B26D6A1EE00E806E1 /* NetworkExtensionVPNProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkExtensionVPNProvider.swift; sourceTree = ""; };
- 0EA9F28E26D6AC6D00E806E1 /* VPNProviderIPC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPNProviderIPC.swift; sourceTree = ""; };
- 0EA9F29426D6CA7E00E806E1 /* NetworkExtensionLocator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkExtensionLocator.swift; sourceTree = ""; };
- 0EAC57312494277A00D0FCE0 /* OpenVPNProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenVPNProvider.swift; sourceTree = ""; };
- 0EAC57322494277A00D0FCE0 /* MockVPNProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockVPNProvider.swift; sourceTree = ""; };
- 0EAC57332494277A00D0FCE0 /* VPNStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VPNStatus.swift; sourceTree = ""; };
- 0EAC57342494277A00D0FCE0 /* VPNConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VPNConfiguration.swift; sourceTree = ""; };
- 0EAC57352494277A00D0FCE0 /* VPNProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VPNProvider.swift; sourceTree = ""; };
- 0EAC57362494277A00D0FCE0 /* VPN.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VPN.swift; sourceTree = ""; };
- 0EB03E0E2290CF52006D03A0 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; };
- 0ECC60D72254981A0020BEAC /* ConfigurationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationError.swift; sourceTree = ""; };
- 0ECCEA7E2622F2F00007DA28 /* NativeProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeProvider.swift; sourceTree = ""; };
- 0ECEB1132252C8E900E9E551 /* tunnelbear.enc.8.ovpn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tunnelbear.enc.8.ovpn; sourceTree = ""; };
- 0ECEB1142252C8E900E9E551 /* tunnelbear.enc.8.key */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tunnelbear.enc.8.key; sourceTree = ""; };
- 0ECEB11A2252CDAD00E9E551 /* tunnelbear.crt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tunnelbear.crt; sourceTree = ""; };
- 0EE2F96D2291636B00F56F49 /* IPv4Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPv4Settings.swift; sourceTree = ""; };
- 0EE2F9702291638600F56F49 /* IPv6Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPv6Settings.swift; sourceTree = ""; };
- 0EE2F973229163C900F56F49 /* Proxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Proxy.swift; sourceTree = ""; };
- 0EE2F9792291817300F56F49 /* Errors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; };
- 0EE2F9AB2291853D00F56F49 /* Session.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Session.swift; sourceTree = ""; };
- 0EE2F9E022918DA100F56F49 /* NETCPSocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NETCPSocket.swift; sourceTree = ""; };
- 0EE2F9E122918DA100F56F49 /* NETunnelInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NETunnelInterface.swift; sourceTree = ""; };
- 0EE2F9E222918DA100F56F49 /* NWTCPConnectionState+Description.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NWTCPConnectionState+Description.swift"; sourceTree = ""; };
- 0EE2F9E322918DA100F56F49 /* NEUDPSocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NEUDPSocket.swift; sourceTree = ""; };
- 0EE2F9E422918DA100F56F49 /* NWUDPSessionState+Description.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NWUDPSessionState+Description.swift"; sourceTree = ""; };
- 0EE2F9E522918DA100F56F49 /* DNSResolver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DNSResolver.swift; sourceTree = ""; };
- 0EE2F9E722918DA100F56F49 /* Keychain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Keychain.swift; sourceTree = ""; };
- 0EE2F9E822918DA100F56F49 /* MemoryDestination.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MemoryDestination.swift; sourceTree = ""; };
- 0EE2F9E922918DA100F56F49 /* GenericSocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenericSocket.swift; sourceTree = ""; };
- 0EE2F9EB22918DA100F56F49 /* Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; };
- 0EE2F9ED22918DA100F56F49 /* InterfaceObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InterfaceObserver.swift; sourceTree = ""; };
- 0EE2FA0C2291953300F56F49 /* RawPerformanceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RawPerformanceTests.swift; sourceTree = ""; };
- 0EE2FA0D2291953300F56F49 /* DataPathPerformanceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataPathPerformanceTests.swift; sourceTree = ""; };
- 0EE2FA0E2291953300F56F49 /* AppExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppExtensionTests.swift; sourceTree = ""; };
- 0EE2FA0F2291953300F56F49 /* RandomTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RandomTests.swift; sourceTree = ""; };
- 0EE2FA102291953300F56F49 /* EncryptionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EncryptionTests.swift; sourceTree = ""; };
- 0EE2FA112291953300F56F49 /* DNSTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DNSTests.swift; sourceTree = ""; };
- 0EE2FA122291953300F56F49 /* LinkTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LinkTests.swift; sourceTree = ""; };
- 0EE2FA132291953300F56F49 /* RoutingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoutingTests.swift; sourceTree = ""; };
- 0EE2FA142291953300F56F49 /* StaticKeyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaticKeyTests.swift; sourceTree = ""; };
- 0EE2FA152291953300F56F49 /* TestUtils+OpenVPN.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TestUtils+OpenVPN.swift"; sourceTree = ""; };
- 0EE2FA162291953300F56F49 /* ConfigurationParserTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigurationParserTests.swift; sourceTree = ""; };
- 0EE2FA172291953300F56F49 /* EncryptionPerformanceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EncryptionPerformanceTests.swift; sourceTree = ""; };
- 0EE2FA182291953300F56F49 /* PacketTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PacketTests.swift; sourceTree = ""; };
- 0EE2FA192291953300F56F49 /* DataManipulationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataManipulationTests.swift; sourceTree = ""; };
- 0EE2FA1A2291953300F56F49 /* ControlChannelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlChannelTests.swift; sourceTree = ""; };
- 0EE2FA1B2291953300F56F49 /* PushTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PushTests.swift; sourceTree = ""; };
- 0EE2FA1C2291953300F56F49 /* CompressionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompressionTests.swift; sourceTree = ""; };
- 0EE2FA1D2291953300F56F49 /* DataPathEncryptionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataPathEncryptionTests.swift; sourceTree = ""; };
- 0EFB902722788511006405E4 /* RoutingTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoutingTable.h; sourceTree = ""; };
- 0EFB902822788511006405E4 /* RoutingTable.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoutingTable.m; sourceTree = ""; };
- 0EFEB42E2006D3C800F81029 /* Allocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Allocation.h; sourceTree = ""; };
- 0EFEB42F2006D3C800F81029 /* TunnelInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TunnelInterface.swift; sourceTree = ""; };
- 0EFEB4312006D3C800F81029 /* ZeroingData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZeroingData.m; sourceTree = ""; };
- 0EFEB4362006D3C800F81029 /* Errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Errors.h; sourceTree = ""; };
- 0EFEB4372006D3C800F81029 /* SecureRandom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureRandom.swift; sourceTree = ""; };
- 0EFEB43B2006D3C800F81029 /* ZeroingData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZeroingData.swift; sourceTree = ""; };
- 0EFEB4412006D3C800F81029 /* ZeroingData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZeroingData.h; sourceTree = ""; };
- 0EFEB4432006D3C800F81029 /* Data+Manipulation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Data+Manipulation.swift"; sourceTree = ""; };
- 0EFEB4452006D3C800F81029 /* IOInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IOInterface.swift; sourceTree = ""; };
- 0EFEB4462006D3C800F81029 /* Allocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Allocation.m; sourceTree = ""; };
- 0EFEB4492006D3C800F81029 /* LinkInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LinkInterface.swift; sourceTree = ""; };
- 0EFEB44A2006D3C800F81029 /* CoreConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreConfiguration.swift; sourceTree = ""; };
- 0EFEB44B2006D3C800F81029 /* Errors.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Errors.m; sourceTree = ""; };
- 1067E0DA76AE8CAF89D71584 /* Pods-ios-Demo-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-Demo-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-Demo-iOS/Pods-ios-Demo-iOS.debug.xcconfig"; sourceTree = ""; };
- 157488BB58C4CC25BC563A54 /* Pods-macos-DemoTunnel-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-DemoTunnel-macOS.debug.xcconfig"; path = "Target Support Files/Pods-macos-DemoTunnel-macOS/Pods-macos-DemoTunnel-macOS.debug.xcconfig"; sourceTree = ""; };
- 1DF4ACC345765CF3A1576D4A /* Pods-macos-Demo-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-Demo-macOS.release.xcconfig"; path = "Target Support Files/Pods-macos-Demo-macOS/Pods-macos-Demo-macOS.release.xcconfig"; sourceTree = ""; };
- 237CD7047F4B1693AB36A1A1 /* Pods-macos-TunnelKit-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-TunnelKit-macOS.release.xcconfig"; path = "Target Support Files/Pods-macos-TunnelKit-macOS/Pods-macos-TunnelKit-macOS.release.xcconfig"; sourceTree = ""; };
- 2DD764A8C3908CB48A442295 /* Pods-TunnelKit-TunnelKitTests-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TunnelKit-TunnelKitTests-macOS.release.xcconfig"; path = "Target Support Files/Pods-TunnelKit-TunnelKitTests-macOS/Pods-TunnelKit-TunnelKitTests-macOS.release.xcconfig"; sourceTree = ""; };
- 33C00B882D0DF7C28257630B /* Pods-TunnelKit-TunnelKit-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TunnelKit-TunnelKit-macOS.debug.xcconfig"; path = "Target Support Files/Pods-TunnelKit-TunnelKit-macOS/Pods-TunnelKit-TunnelKit-macOS.debug.xcconfig"; sourceTree = ""; };
- 358F3D1B9B9A8FEE29E522F6 /* Pods-TunnelKit-TunnelKitHost.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TunnelKit-TunnelKitHost.debug.xcconfig"; path = "Target Support Files/Pods-TunnelKit-TunnelKitHost/Pods-TunnelKit-TunnelKitHost.debug.xcconfig"; sourceTree = ""; };
- 3DE692CD2FA087ED390CB9C6 /* Pods-TunnelKit-TunnelKitTests-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TunnelKit-TunnelKitTests-iOS.debug.xcconfig"; path = "Target Support Files/Pods-TunnelKit-TunnelKitTests-iOS/Pods-TunnelKit-TunnelKitTests-iOS.debug.xcconfig"; sourceTree = ""; };
- 3EB4715EDD7F534B7198FDED /* Pods-ios-TunnelKitDemoTunnel-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-TunnelKitDemoTunnel-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-TunnelKitDemoTunnel-iOS/Pods-ios-TunnelKitDemoTunnel-iOS.debug.xcconfig"; sourceTree = ""; };
- 4226303B698C4BB5A2D3EA0B /* Pods-ios-TunnelKit-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-TunnelKit-iOS.release.xcconfig"; path = "Target Support Files/Pods-ios-TunnelKit-iOS/Pods-ios-TunnelKit-iOS.release.xcconfig"; sourceTree = ""; };
- 442D4665BCE9ADD09F63F180 /* Pods-ios-Demo-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-Demo-iOS.release.xcconfig"; path = "Target Support Files/Pods-ios-Demo-iOS/Pods-ios-Demo-iOS.release.xcconfig"; sourceTree = ""; };
- 44612F27B9EF890AF8B926DB /* Pods_ios_TunnelKit_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_TunnelKit_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 488FA71CA2DC38D2FDF7D1D8 /* Pods_ios_TunnelKitDemoTunnel_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_TunnelKitDemoTunnel_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 4EF702DD650A65FCBA51506A /* Pods_macos_TunnelKit_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_TunnelKit_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 501B04C95D9A457FFA483C3B /* Pods_macos_TunnelKitDemo_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_TunnelKitDemo_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 64037042B4D72C5837330825 /* Pods-ios-TunnelKitTests-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-TunnelKitTests-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-TunnelKitTests-iOS/Pods-ios-TunnelKitTests-iOS.debug.xcconfig"; sourceTree = ""; };
- 699D1F9CD94BC7F9348EB407 /* Pods-macos-TunnelKitTests-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-TunnelKitTests-macOS.release.xcconfig"; path = "Target Support Files/Pods-macos-TunnelKitTests-macOS/Pods-macos-TunnelKitTests-macOS.release.xcconfig"; sourceTree = ""; };
- 7495E11A5285EEDEFF4CE52C /* Pods-macos-TunnelKitDemoTunnel-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-TunnelKitDemoTunnel-macOS.debug.xcconfig"; path = "Target Support Files/Pods-macos-TunnelKitDemoTunnel-macOS/Pods-macos-TunnelKitDemoTunnel-macOS.debug.xcconfig"; sourceTree = ""; };
- 7CE8A5CE244CC80CAF8BD890 /* Pods-TunnelKit-TunnelKitTests-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TunnelKit-TunnelKitTests-macOS.debug.xcconfig"; path = "Target Support Files/Pods-TunnelKit-TunnelKitTests-macOS/Pods-TunnelKit-TunnelKitTests-macOS.debug.xcconfig"; sourceTree = ""; };
- 82499AC779944BE0D1CA651C /* Pods-TunnelKit-TunnelKitTests-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TunnelKit-TunnelKitTests-iOS.release.xcconfig"; path = "Target Support Files/Pods-TunnelKit-TunnelKitTests-iOS/Pods-TunnelKit-TunnelKitTests-iOS.release.xcconfig"; sourceTree = ""; };
- 83830F707A0FDAE3EBFA9008 /* Pods-ios-DemoTunnel-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-DemoTunnel-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-DemoTunnel-iOS/Pods-ios-DemoTunnel-iOS.debug.xcconfig"; sourceTree = ""; };
- 8D69E51508704ECD5ACEBE79 /* Pods-ios-TunnelKitDemoTunnel-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-TunnelKitDemoTunnel-iOS.release.xcconfig"; path = "Target Support Files/Pods-ios-TunnelKitDemoTunnel-iOS/Pods-ios-TunnelKitDemoTunnel-iOS.release.xcconfig"; sourceTree = ""; };
- 9D2F19A70BA726DCE60AAFFB /* Pods-ios-TunnelKitDemo-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-TunnelKitDemo-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-TunnelKitDemo-iOS/Pods-ios-TunnelKitDemo-iOS.debug.xcconfig"; sourceTree = ""; };
- A0C15F7E031B3D09730175D7 /* Pods-macos-TunnelKitDemo-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-TunnelKitDemo-macOS.release.xcconfig"; path = "Target Support Files/Pods-macos-TunnelKitDemo-macOS/Pods-macos-TunnelKitDemo-macOS.release.xcconfig"; sourceTree = ""; };
- A43E3F5B33D769164DD14EC8 /* Pods-ios-TunnelKitHost.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-TunnelKitHost.release.xcconfig"; path = "Target Support Files/Pods-ios-TunnelKitHost/Pods-ios-TunnelKitHost.release.xcconfig"; sourceTree = "