From 002e6287f9fe5cfafbd86654862c46e00174d45f Mon Sep 17 00:00:00 2001 From: Sergey Abramchuk Date: Wed, 6 Sep 2017 18:08:39 +0300 Subject: [PATCH] Add OpenVPNCertificate files and their tests to the project --- .../OpenVPNCertificateTests.swift | 43 +++++++++++++++++++ OpenVPN Adapter Tests/Resources/ca.crt | 17 ++++++++ OpenVPN Adapter Tests/Resources/ca.key | 15 +++++++ OpenVPN Adapter.xcodeproj/project.pbxproj | 38 ++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 OpenVPN Adapter Tests/OpenVPNCertificateTests.swift create mode 100644 OpenVPN Adapter Tests/Resources/ca.crt create mode 100644 OpenVPN Adapter Tests/Resources/ca.key diff --git a/OpenVPN Adapter Tests/OpenVPNCertificateTests.swift b/OpenVPN Adapter Tests/OpenVPNCertificateTests.swift new file mode 100644 index 0000000..2b575f8 --- /dev/null +++ b/OpenVPN Adapter Tests/OpenVPNCertificateTests.swift @@ -0,0 +1,43 @@ +// +// OpenVPNCertificateTests.swift +// OpenVPN Adapter +// +// Created by Sergey Abramchuk on 06.09.17. +// +// + +import XCTest +@testable import OpenVPNAdapter + +class OpenVPNCertificateTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testCertificateFromPEM() { + guard + let caURL = Bundle.current.url(forResource: "ca", withExtension: "crt"), + let caData = try? Data(contentsOf: caURL) +// let caContent = try? String(contentsOf: caURL, encoding: .utf8).cString(using: .utf8) + else { + XCTFail("") + return + } + + let certificate: OpenVPNCertificate + do { + certificate = try OpenVPNCertificate(pem: caData) + } catch { + XCTFail(error.localizedDescription) + return + } + } + +} diff --git a/OpenVPN Adapter Tests/Resources/ca.crt b/OpenVPN Adapter Tests/Resources/ca.crt new file mode 100644 index 0000000..13916da --- /dev/null +++ b/OpenVPN Adapter Tests/Resources/ca.crt @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICvDCCAiWgAwIBAgIJAIk6JnSDG7spMA0GCSqGSIb3DQEBBQUAMEkxCzAJBgNV +BAYTAlJVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRQwEgYDVQQHEwtBcmtoYW5nZWxz +azEPMA0GA1UEChMGUy1USUNLMB4XDTE3MDkwNjE0MDc1MVoXDTE3MTAwNjE0MDc1 +MVowSTELMAkGA1UEBhMCUlUxEzARBgNVBAgTClNvbWUtU3RhdGUxFDASBgNVBAcT +C0Fya2hhbmdlbHNrMQ8wDQYDVQQKEwZTLVRJQ0swgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBAMXgr0CSQmXqzeYv3tqHDVeAnjt2eFlFya1RJIE59Vu3quAD/6Us +fM2VUAtjRu+Bh8QYefsJ5IBpT7AnaUi5TM0XDBW9iPxxXus2l0QtCiCf/JDEDk19 +Ig5e4lbJMwR/QuEw6LceVXmcxIYsZBnw4Ni7DcXbBeLKuEQuiUOMXcqrAgMBAAGj +gaswgagwHQYDVR0OBBYEFE4iwGwZysk3DA8xMI9lM1yljKtVMHkGA1UdIwRyMHCA +FE4iwGwZysk3DA8xMI9lM1yljKtVoU2kSzBJMQswCQYDVQQGEwJSVTETMBEGA1UE +CBMKU29tZS1TdGF0ZTEUMBIGA1UEBxMLQXJraGFuZ2Vsc2sxDzANBgNVBAoTBlMt +VElDS4IJAIk6JnSDG7spMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEA +iBlchqANsArwiY6xO3rpWsuvOQaijUY0DicHnzriEcrD3XATRKllQ6vekXHolsKl +1tq88AmNhn95s9zOgEGrFftvb06UwZ/zGiuXlUPTkiFxOP3rqXmYG9pn431DhMfm +rr2dVN0/94np8jELlpnxFiB79GWSPjVOfXDmZ266oD4= +-----END CERTIFICATE----- diff --git a/OpenVPN Adapter Tests/Resources/ca.key b/OpenVPN Adapter Tests/Resources/ca.key new file mode 100644 index 0000000..bff2359 --- /dev/null +++ b/OpenVPN Adapter Tests/Resources/ca.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDF4K9AkkJl6s3mL97ahw1XgJ47dnhZRcmtUSSBOfVbt6rgA/+l +LHzNlVALY0bvgYfEGHn7CeSAaU+wJ2lIuUzNFwwVvYj8cV7rNpdELQogn/yQxA5N +fSIOXuJWyTMEf0LhMOi3HlV5nMSGLGQZ8ODYuw3F2wXiyrhELolDjF3KqwIDAQAB +AoGAUPOBXr43EbDEeSYeWnIjoCeLFDJ8O7FUN2ZZs9A9Mz9pVWntXOpdSFGMRIxh +ybvJCg0lYfEDHRF4O010Qf8kjo5Y+KRUJgV7J3HG4O8XkpYBnNMJa1wJYBdreFe2 +iUgcEaBRK55LOOftiE34dLQMgJlaySuNBtfNlORlqJJ0Z6kCQQDpNgeEdytUbjx+ +aJhnxNtXy6yJ0EUKoDPi9xKpa3K7ZxB6tfA+B+WtgLKWfFSorK9P3cSH9B0Pr2OO +MGK2x2PPAkEA2TbC05eQ/XUqiH6yvbtss5Q73YabIj8g6hd6IyHW2b10Qt27CCZS +pEwB16XXtJqXCOcqY3spuORM/Y14f652ZQJAdjc6Jk7WOw1KQvW4U9m5Kk8HXjCh +3toIk0OVRSY/WXnMI7f4WSldps63OIs7yukGUSDkj9oRpTLN73TdhTObhwJBANbb +fhfCot6zWOEvQiq/DCUOCbF0hlt3yl0D4AKEZHt5FVlW7rx++9wceu4O07GIAMID +t0A0Ae8rlKRxnbHepqkCQD+XNnuUSi+zJB07Qmsx1ywQr9zH4lDVuZ660LELWYPr +rp8x07XiCFKvmGWDLuKsEBzj5eBwqlTUywwjhwYm8Xo= +-----END RSA PRIVATE KEY----- diff --git a/OpenVPN Adapter.xcodeproj/project.pbxproj b/OpenVPN Adapter.xcodeproj/project.pbxproj index c71f75d..365031e 100644 --- a/OpenVPN Adapter.xcodeproj/project.pbxproj +++ b/OpenVPN Adapter.xcodeproj/project.pbxproj @@ -104,6 +104,16 @@ C9BDB1361EBCC3B900C204FF /* OpenVPNTunnelSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = C9BDB1331EBCC3B900C204FF /* OpenVPNTunnelSettings.h */; }; C9BDB1371EBCC3B900C204FF /* OpenVPNTunnelSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = C9BDB1341EBCC3B900C204FF /* OpenVPNTunnelSettings.m */; }; C9BDB1381EBCC3B900C204FF /* OpenVPNTunnelSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = C9BDB1341EBCC3B900C204FF /* OpenVPNTunnelSettings.m */; }; + C9CA4DD31F602F7B00C4F184 /* OpenVPNCertificate.h in Headers */ = {isa = PBXBuildFile; fileRef = C9CA4DD11F602F7B00C4F184 /* OpenVPNCertificate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9CA4DD41F602F7B00C4F184 /* OpenVPNCertificate.h in Headers */ = {isa = PBXBuildFile; fileRef = C9CA4DD11F602F7B00C4F184 /* OpenVPNCertificate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9CA4DD51F602F7B00C4F184 /* OpenVPNCertificate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9CA4DD21F602F7B00C4F184 /* OpenVPNCertificate.m */; }; + C9CA4DD61F602F7B00C4F184 /* OpenVPNCertificate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9CA4DD21F602F7B00C4F184 /* OpenVPNCertificate.m */; }; + C9CA4DD91F6038F000C4F184 /* ca.key in Resources */ = {isa = PBXBuildFile; fileRef = C9CA4DD71F6038F000C4F184 /* ca.key */; }; + C9CA4DDA1F6038F000C4F184 /* ca.key in Resources */ = {isa = PBXBuildFile; fileRef = C9CA4DD71F6038F000C4F184 /* ca.key */; }; + C9CA4DDB1F6038F000C4F184 /* ca.crt in Resources */ = {isa = PBXBuildFile; fileRef = C9CA4DD81F6038F000C4F184 /* ca.crt */; }; + C9CA4DDC1F6038F000C4F184 /* ca.crt in Resources */ = {isa = PBXBuildFile; fileRef = C9CA4DD81F6038F000C4F184 /* ca.crt */; }; + C9CA4DE11F603A5300C4F184 /* OpenVPNCertificateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9CA4DE01F603A5300C4F184 /* OpenVPNCertificateTests.swift */; }; + C9CA4DE21F603A5300C4F184 /* OpenVPNCertificateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9CA4DE01F603A5300C4F184 /* OpenVPNCertificateTests.swift */; }; C9D2ABDB1EA20F99007EDF9D /* OpenVPNAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = C9BB477E1E7173C700F3F98C /* OpenVPNAdapter.mm */; }; C9D2ABDC1EA20F99007EDF9D /* OpenVPNClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = C9BB47781E7171ED00F3F98C /* OpenVPNClient.mm */; }; C9D2ABDE1EA20F99007EDF9D /* ovpncli.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9FD92191E9A667600374FC4 /* ovpncli.cpp */; }; @@ -206,6 +216,11 @@ C9BCE25C1EB3C201009D6AC1 /* OpenVPNSessionToken+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OpenVPNSessionToken+Internal.h"; sourceTree = ""; }; C9BDB1331EBCC3B900C204FF /* OpenVPNTunnelSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenVPNTunnelSettings.h; sourceTree = ""; }; C9BDB1341EBCC3B900C204FF /* OpenVPNTunnelSettings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenVPNTunnelSettings.m; sourceTree = ""; }; + C9CA4DD11F602F7B00C4F184 /* OpenVPNCertificate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenVPNCertificate.h; sourceTree = ""; }; + C9CA4DD21F602F7B00C4F184 /* OpenVPNCertificate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenVPNCertificate.m; sourceTree = ""; }; + C9CA4DD71F6038F000C4F184 /* ca.key */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ca.key; sourceTree = ""; }; + C9CA4DD81F6038F000C4F184 /* ca.crt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ca.crt; sourceTree = ""; }; + C9CA4DE01F603A5300C4F184 /* OpenVPNCertificateTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenVPNCertificateTests.swift; sourceTree = ""; }; C9D2ABF01EA20F99007EDF9D /* OpenVPNAdapter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = OpenVPNAdapter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C9D2ABFF1EA212A3007EDF9D /* OpenVPNAdapterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OpenVPNAdapterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; C9FD92181E9A667600374FC4 /* ovpncli.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ovpncli.hpp; path = Vendors/openvpn/client/ovpncli.hpp; sourceTree = ""; }; @@ -366,6 +381,7 @@ C9BB475D1E71663A00F3F98C /* OpenVPN Adapter */ = { isa = PBXGroup; children = ( + C9CA4DD01F602D8300C4F184 /* Certificates and Keys */, C9B7955B1F1D165700CF35FE /* Reachability */, C9235AC41EB24F0100C7D303 /* Configuration */, C9235AC51EB24F1100C7D303 /* Stats and Info */, @@ -436,6 +452,8 @@ C9BB479A1E71836100F3F98C /* Resources */ = { isa = PBXGroup; children = ( + C9CA4DD71F6038F000C4F184 /* ca.key */, + C9CA4DD81F6038F000C4F184 /* ca.crt */, C98467A11EAA559B00272A9A /* local_vpn_server.ovpn */, ); path = Resources; @@ -444,6 +462,7 @@ C9BB479D1E71837200F3F98C /* Adapter Tests */ = { isa = PBXGroup; children = ( + C9CA4DE01F603A5300C4F184 /* OpenVPNCertificateTests.swift */, C9354F431F1E49A500F4C935 /* OpenVPNReachabilityTests.swift */, C94605E81EAA656B00971516 /* OpenVPNConfigurationTests.swift */, C9BB47901E71821A00F3F98C /* OpenVPNAdapterTests.swift */, @@ -476,6 +495,15 @@ name = Utils; sourceTree = ""; }; + C9CA4DD01F602D8300C4F184 /* Certificates and Keys */ = { + isa = PBXGroup; + children = ( + C9CA4DD11F602F7B00C4F184 /* OpenVPNCertificate.h */, + C9CA4DD21F602F7B00C4F184 /* OpenVPNCertificate.m */, + ); + name = "Certificates and Keys"; + sourceTree = ""; + }; C9FF73B71EB7421600E995AC /* Helpers */ = { isa = PBXGroup; children = ( @@ -491,6 +519,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + C9CA4DD31F602F7B00C4F184 /* OpenVPNCertificate.h in Headers */, C9BB47791E7171ED00F3F98C /* OpenVPNClient.h in Headers */, C9657A3A1EB0BAAB00EFF210 /* OpenVPNInterfaceStats+Internal.h in Headers */, C9354F451F1E4A4500F4C935 /* OpenVPNReachabilityStatus.h in Headers */, @@ -532,6 +561,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + C9CA4DD41F602F7B00C4F184 /* OpenVPNCertificate.h in Headers */, C9D2ABE31EA20F99007EDF9D /* OpenVPNClient.h in Headers */, C9657A3B1EB0BAAB00EFF210 /* OpenVPNInterfaceStats+Internal.h in Headers */, C9354F461F1E4A4600F4C935 /* OpenVPNReachabilityStatus.h in Headers */, @@ -707,6 +737,8 @@ buildActionMask = 2147483647; files = ( C98467A21EAA559B00272A9A /* local_vpn_server.ovpn in Resources */, + C9CA4DDB1F6038F000C4F184 /* ca.crt in Resources */, + C9CA4DD91F6038F000C4F184 /* ca.key in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -722,6 +754,8 @@ buildActionMask = 2147483647; files = ( C98467A31EAA559B00272A9A /* local_vpn_server.ovpn in Resources */, + C9CA4DDC1F6038F000C4F184 /* ca.crt in Resources */, + C9CA4DDA1F6038F000C4F184 /* ca.key in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -771,6 +805,7 @@ C9657A311EB0B7A900EFF210 /* OpenVPNTransportStats.mm in Sources */, C9B795661F1D182500CF35FE /* OpenVPNReachabilityTracker.mm in Sources */, C9657A581EB0CE1300EFF210 /* OpenVPNProperties.mm in Sources */, + C9CA4DD51F602F7B00C4F184 /* OpenVPNCertificate.m in Sources */, C9BB477A1E7171ED00F3F98C /* OpenVPNClient.mm in Sources */, C9FD921B1E9A667600374FC4 /* ovpncli.cpp in Sources */, C9657A361EB0BA3900EFF210 /* OpenVPNInterfaceStats.mm in Sources */, @@ -788,6 +823,7 @@ C94605E91EAA656B00971516 /* OpenVPNConfigurationTests.swift in Sources */, C9BB47911E71821A00F3F98C /* OpenVPNAdapterTests.swift in Sources */, C9B03A7C1EABA82200268B85 /* ProfileLoader.swift in Sources */, + C9CA4DE11F603A5300C4F184 /* OpenVPNCertificateTests.swift in Sources */, C9BB47A21E7183DB00F3F98C /* Bundle.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -804,6 +840,7 @@ C9657A301EB0B7A600EFF210 /* OpenVPNTransportStats.mm in Sources */, C9B795671F1D182500CF35FE /* OpenVPNReachabilityTracker.mm in Sources */, C9657A591EB0CE1400EFF210 /* OpenVPNProperties.mm in Sources */, + C9CA4DD61F602F7B00C4F184 /* OpenVPNCertificate.m in Sources */, C9D2ABDC1EA20F99007EDF9D /* OpenVPNClient.mm in Sources */, C9D2ABDE1EA20F99007EDF9D /* ovpncli.cpp in Sources */, C9657A371EB0BA3900EFF210 /* OpenVPNInterfaceStats.mm in Sources */, @@ -820,6 +857,7 @@ files = ( C94605EA1EAA65F200971516 /* OpenVPNConfigurationTests.swift in Sources */, C9D2ABF61EA212A3007EDF9D /* OpenVPNAdapterTests.swift in Sources */, + C9CA4DE21F603A5300C4F184 /* OpenVPNCertificateTests.swift in Sources */, C9354F471F1E4AE200F4C935 /* OpenVPNReachabilityTests.swift in Sources */, C9B03A7D1EABA82300268B85 /* ProfileLoader.swift in Sources */, C9D2ABF71EA212A3007EDF9D /* Bundle.swift in Sources */,