120 Commits
0.4.0 ... 0.7.0

Author SHA1 Message Date
Sergey Abramchuk
efc584cc41 Merge branch 'release/0.7.0' 2020-08-19 20:14:48 +03:00
Sergey Abramchuk
9dd3ca3bf5 Update changelog 2020-08-18 14:31:44 +03:00
Sergey Abramchuk
d9346d7622 Update readme file 2020-08-18 14:31:30 +03:00
Sergey Abramchuk
1843ebfb1d Update podspec file 2020-08-18 14:31:03 +03:00
Sergey Abramchuk
de616fc406 Bump OpenVPNAdapter version 2020-08-18 14:22:11 +03:00
Sergey Abramchuk
37296b6b98 Bump OpenVPNClient version 2020-08-18 14:21:37 +03:00
Sergey Abramchuk
779353fc97 Bump mbedTLS version 2020-08-18 14:21:07 +03:00
Sergey Abramchuk
062a7a1f9b Merge branch 'feature/update-dependencies' into develop 2020-08-18 14:19:59 +03:00
Sergey Abramchuk
c04cfe5d00 Add new errors and their description 2020-08-18 14:15:15 +03:00
Sergey Abramchuk
7b1f143822 Apply patches 2020-08-18 13:54:37 +03:00
Sergey Abramchuk
a559b32781 Merge commit '029ba813cd7ac6f9f807e61521f003017fdb5805' into feature/update-dependencies 2020-08-18 13:51:43 +03:00
Sergey Abramchuk
029ba813cd Squashed 'Sources/mbedTLS/' changes from 14c6762351..f8199650a9
d8180f8d84 Merge remote-tracking branch 'origin/mbedtls-2.7' into mbedtls-2.7-restricted
db649896e6 Merge pull request #2895 from gilles-peskine-arm/drbg-set_entropy_len-2.7
373a7097eb Merge pull request #673 from gilles-peskine-arm/ctr_drbg-aes_fail-2.7
b2be1fca2c Catch AES failure in mbedtls_ctr_drbg_random
df1b3e54c7 Merge pull request #2937 from gilles-peskine-arm/memory_buffer_alloc-fatal-pass-2.7
02fbc08d2e Enable more test cases without MBEDTLS_MEMORY_DEBUG
786f068ec0 More accurate test case description
04d45c98e8 Clarify that the "FATAL" message is expected
c5a016dde1 Merge remote-tracking branch 'restricted/pr/666' into mbedtls-2.7-restricted
e70059df85 Merge remote-tracking branch 'restricted/pr/668' into mbedtls-2.7-restricted
10fcdd25d4 Merge pull request #664 from ARMmbed/dev/yanesca/iotcrypt-958-ecdsa-side-channel-fix-2.7
07597365cd Zeroize local AES variables before exiting the function
dfa4d71873 Add ChangeLog entry
b4edac5616 mpi_lt_mpi_ct: fix condition handling
f4482aaccc mpi_lt_mpi_ct: Add further tests
a776aea91a mpi_lt_mpi_ct: Fix test numbering
1b86eeb06b mpi_lt_mpi_ct perform tests for both limb size
5823961558 ct_lt_mpi_uint: cast the return value explicitely
6adff06e50 mbedtls_mpi_lt_mpi_ct: add tests for 32 bit limbs
cff9e6e03d mbedtls_mpi_lt_mpi_ct: simplify condition
8ec2a953af Rename variable for better readability
a2b9a96fb8 mbedtls_mpi_lt_mpi_ct: Improve documentation
51ed14e20f Make mbedtls_mpi_lt_mpi_ct more portable
9741fa6e2b Bignum: Document assumptions about the sign field
9332ecefc8 Add more tests for mbedtls_mpi_lt_mpi_ct
aaa3f22b76 mpi_lt_mpi_ct test: hardcode base 16
3173a53fe9 Document ct_lt_mpi_uint
782cbe592d mpi_lt_mpi_ct: make use of unsigned consistent
db9f449409 ct_lt_mpi_uint: make use of biL
c3b376e2f2 Change mbedtls_mpi_cmp_mpi_ct to check less than
8461c0e2a8 mbedtls_mpi_cmp_mpi_ct: remove multiplications
8de2d45cd7 Remove excess vertical space
c587a32a9c Remove declaration after statement
5f3019b298 Fix side channel vulnerability in ECDSA
883801d3ec Add tests to constant time mpi comparison
e0187b95f0 Add new, constant time mpi comparison
4c575c0270 Note that mbedtls_ctr_drbg_seed() must not be called twice
eab4d701ca Fix CTR_DRBG benchmark
5cf41f80a4 Add ChangeLog entry
82debf8332 ECDSA: Fix side channel vulnerability
093aa517c4 Changelog entry for xxx_drbg_set_entropy_len before xxx_drbg_seed
b729e1b9ba CTR_DRBG: support set_entropy_len() before seed()
845ac103a9 CTR_DRBG: Don't use functions before they're defined
9c742249cf HMAC_DRBG: support set_entropy_len() before seed()
c87a54683b Merge pull request #2900 from gilles-peskine-arm/asan-test-fail-2.7
cc656ac96b Merge pull request #2872 from gilles-peskine-arm/test_malloc_0_null-2.7
5ee14d70d2 'make test' must fail if Asan fails
4c2697f43f Asan make builds: avoid sanitizer recovery
260921d3f2 Use UBsan in addition to Asan with 'make test'
c20a4053c3 Unify ASan options in make builds
395d8c1222 Merge remote-tracking branch 'origin/pr/2878' into mbedtls-2.7
55e120b9b2 mbedtls_hmac_drbg_set_entropy_len() only matters when reseeding
dff3682477 mbedtls_ctr_drbg_set_entropy_len() only matters when reseeding
2abefefec2 mbedtls_ctr_drbg_seed: correct maximum for len
406d25878c Add a note about CTR_DRBG security strength to config.h
f0b3dcb14b CTR_DRBG: more consistent formatting and wording
b9cfe58180 DRBG documentation: Relate f_entropy arguments to the entropy module
97edf5e1e2 Add ChangeLog entry for the DRBG documentation improvements
5cc748e58f Merge remote-tracking branch 'origin/pr/2866' into mbedtls-2.7
d89173066c HMAC_DRBG documentation improvements
2fc6cf5da7 Merge remote-tracking branch 'origin/pr/2704' into mbedtls-2.7
eb99c1028f CTR_DRBG: explain the security strength and the entropy input length
25e1945321 CTR_DRBG documentation improvements
0ab4092e2d Reduce stack usage of test_suite_pkcs1_v15
dd4277f70d Reduce stack usage of test_suite_pkcs1_v21
b3d3973264 Reduce stack usage of test_suite_rsa
6827d1c588 Reduce stack usage of test_suite_pk
0981a5d7ab Add a test component with malloc(0) returning NULL
ea5d3571b0 Add a calloc self-test
d28b9b3c5d Merge remote-tracking branch 'origin/pr/2828' into mbedtls-2.7
9b1c248209 Enable MBEDTLS_MEMORY_DEBUG in memory buffer alloc test in all.sh
7eb7f8db8b Remove unnecessary memory buffer alloc unsets
6addfdd190 Disable DTLS proxy tests for MEMORY_BUFFER_ALLOC test
9a461a1cd7 all.sh: restructure memory allocator tests
7aad93c9da Add missing dependency in memory buffer alloc set in all.sh
19aa89ad47 Don't set MBEDTLS_MEMORY_DEBUG through `scripts/config.pl full`
8561115cb8 Add cfg dep MBEDTLS_MEMORY_DEBUG->MBEDTLS_MEMORY_BUFFER_ALLOC_C
167ae43852 Add all.sh run with full config and ASan enabled
f5baaaaf89 Add all.sh run with MBEDTLS_MEMORY_BUFFER_ALLOC_C enabled
e1c62e6641 Update documentation of exceptions for `config.pl full`
c7f97f1c8d Adapt all.sh to removal of buffer allocator from full config
26c333ac01 Disable memory buffer allocator in full config
76ef31116b Check dependencies of MBEDTLS_MEMORY_BACKTRACE in check_config.h
9bf1509ef3 Adapt auth_crypt_tv usage to 2.7
dd91b24764 Add missing dependencies in test_suite_cipher.gcm
d62577fa74 Adapt ChangeLog
311276c871 Add NIST AES GCM test vectors to single-step cipher API test suite

git-subtree-dir: Sources/mbedTLS
git-subtree-split: f8199650a9d49b3982a7b7f3d448899b67b09571
2020-08-18 13:51:43 +03:00
Sergey Abramchuk
464f948769 Merge commit 'f81b84d64d895cc87ecb7e3b4d9b9b2ce73bef4b' into feature/update-dependencies 2020-08-18 13:48:40 +03:00
Sergey Abramchuk
f81b84d64d Squashed 'Sources/OpenVPN3/' changes from 1f92c424e1..407fc5fdb3
3e56f9a644 Finalizing OpenVPN 3 Core library release v3.5.6
a290b87d1a mssparms: do not fail on invalid mssfix values
59f201be90 Finalizing OpenVPN 3 Core library release v3.5.5
bbcf90171f Upgrade OpenSSL to 1.1.1g
a88f2379c3 win/tunutil.hpp: fix TAP adapter name query
abb7857452 Bump openssl version to 1.1.1f
89a3283944 Fix variable name typo in build-openssl
34435cbf65 Support optional HTTP Status Code reason
d5471e1846 Increase OpenSSL version to 1.1.1e
6daf928edb Merge branch 'hotfix/3.4' into released
40f1419b38 Merge branch 'hotfix/3.3' into hotfix/3.4
f225fcd058 Finalizing OpenVPN 3 release v3.3.4
44e8dd8c01 Fix build issues against OpenSSL 1.0.x
65a5e959bc Fix typo in OpenSSL error mapping
042502c932 Additional mappings for OpenSSL errors to OpenVPN error codes
c824c032b1 deps: Update to mbedtls-2.7.13
8b302a01c8 Finalizing OpenVPN 3 release v3.4.2
85bd50a577 Finalizing OpenVPN 3 release v3.3.3

git-subtree-dir: Sources/OpenVPN3
git-subtree-split: 407fc5fdb3bc73cf99dcd85a7fb3c1cbef833f0e
2020-08-18 13:48:40 +03:00
Sergey Abramchuk
ec718ccc57 Revert patches 2020-08-18 13:46:07 +03:00
Sergey Abramchuk
a3f8df48a8 Merge branch 'feature/improve-testing' into develop 2020-08-18 13:42:14 +03:00
Sergey Abramchuk
efaebb7ff1 Move CustomFlow to the OpenVPNAdapterTests 2020-08-18 13:23:40 +03:00
Sergey Abramchuk
cb924a0445 Improve connection testing 2020-08-18 13:23:15 +03:00
Sergey Abramchuk
c6cd9c68d9 Rename name to profileName and remove ca property 2020-08-18 13:03:31 +03:00
Sergey Abramchuk
17e7a8d60f Update configuration tests 2020-08-18 11:42:49 +03:00
Sergey Abramchuk
71de4fe664 Add test resources to the test target 2020-08-18 11:41:15 +03:00
Sergey Abramchuk
d671af614b Add externalPki property representing External PKI profile 2020-08-18 11:12:16 +03:00
Sergey Abramchuk
78b203ec87 Implement evaluation of the configuration 2020-08-18 10:24:25 +03:00
Sergey Abramchuk
ec1477b8a3 Rename OpenVPNProperties to OpenVPNPConfigurationEvaluation 2020-08-18 10:18:04 +03:00
Sergey Abramchuk
f95da0256a Run these test only on macOS 2020-08-18 09:54:27 +03:00
Sergey Abramchuk
dd0e2f809d Add OpenVPNReachabilityTests to the test target 2020-08-18 09:54:10 +03:00
Sergey Abramchuk
cd40d43983 Add profile name property to the VPN profile 2020-08-17 21:32:15 +03:00
Sergey Abramchuk
7c656884a2 Add new properties to the VPN profile and declare profile collection 2020-08-17 21:23:19 +03:00
Sergey Abramchuk
ccc3492009 Test connection without credentials 2020-06-16 13:06:35 +03:00
Sergey Abramchuk
5fe66b144a Use general profile to test configurations 2020-06-16 13:06:22 +03:00
Sergey Abramchuk
f2d598f646 Add a few more static profiles 2020-06-16 12:59:00 +03:00
Sergey Abramchuk
54458439c3 Test connection with ca only and test connection with cert and key 2020-06-16 12:39:50 +03:00
Sergey Abramchuk
de7d4418f1 Rename profiles 2020-06-16 12:33:12 +03:00
Sergey Abramchuk
5b4e7eeb17 Declare additional settings dictionary 2020-06-16 12:03:10 +03:00
Sergey Abramchuk
e6c8bd457a Declare additional static profiles 2020-06-16 11:58:46 +03:00
Sergey Abramchuk
75cca77033 Merge branch 'develop' 2020-06-10 10:48:34 +03:00
Sergey Abramchuk
d683b45480 Update version in the readme 2020-06-10 10:48:21 +03:00
Sergey Abramchuk
fb3604c237 Merge branch 'release/0.6.0' 2020-06-10 10:41:58 +03:00
Sergey Abramchuk
5a5b603c47 Merge tag '0.6.0' into develop 2020-06-10 10:41:58 +03:00
Sergey Abramchuk
0a535eca5a Update changelog 2020-06-10 10:35:14 +03:00
Sergey Abramchuk
a2ea36a673 Update podspec 2020-06-10 10:29:54 +03:00
Sergey Abramchuk
95c413b5e8 Bump version number 2020-06-10 10:28:42 +03:00
Sergey Abramchuk
c6214f0974 Merge branch 'feature/reconnection-issue' into develop 2020-06-10 10:20:36 +03:00
Sergey Abramchuk
d916ec4b96 Add assertion to check if delegate is nil 2020-06-10 08:58:50 +03:00
Sergey Abramchuk
8fa49f5e57 Update readme 2020-06-10 08:50:08 +03:00
Sergey Abramchuk
27c6233e3f Update tests 2020-06-10 08:45:07 +03:00
Sergey Abramchuk
7f32ff342d Add assertion to check packetFlow property 2020-06-10 08:45:01 +03:00
Sergey Abramchuk
b357c50067 Use method argument instead of property to provide packet flow 2020-06-10 08:44:43 +03:00
Sergey Abramchuk
d16a8ddade Update readme 2020-06-09 23:15:56 +03:00
Sergey Abramchuk
6de79ecaf8 Light refactoring of the packetFlow assignment 2020-06-09 23:06:25 +03:00
Sergey Abramchuk
2ec2827e5e Update readme 2020-06-09 21:27:47 +03:00
Sergey Abramchuk
fcb699d7c3 Update tests 2020-06-09 21:10:53 +03:00
Sergey Abramchuk
8941e49792 Disable empty initializer and error should be nullable 2020-06-09 21:10:43 +03:00
Sergey Abramchuk
4a9ebe3e25 Set sockets as NULL during invalidation 2020-06-09 21:03:18 +03:00
Sergey Abramchuk
bdf829e80a Change argument type of the completion handler and add packetFlow parameter to initializer 2020-06-09 21:02:40 +03:00
Sergey Abramchuk
0326b93bea Invalidate sockets instead of setting flow as nil 2020-06-09 19:30:48 +03:00
Sergey Abramchuk
abe0870828 Extract sockets invalidation to the separate method 2020-06-09 19:29:59 +03:00
Sergey Abramchuk
baba768941 Comment the line configuring tun persistent option 2020-05-20 23:29:07 +03:00
Sergey Abramchuk
dcbc7b034b Merge branch 'hotfix/missing-key' 2020-03-19 12:30:33 +03:00
Sergey Abramchuk
af6e1e48b2 Merge tag 'missing-key' into develop 2020-03-19 12:30:33 +03:00
Sergey Abramchuk
5deb73311f Bump version number 2020-03-19 12:29:07 +03:00
Sergey Abramchuk
1efcef1637 Set current project version 2020-03-19 11:28:42 +03:00
Sergey Abramchuk
47725b0c34 Merge tag '0.5.0' into develop 2020-03-11 13:28:32 +03:00
Sergey Abramchuk
b3196ad6aa Merge branch 'release/0.5.0' 2020-03-11 13:28:29 +03:00
Sergey Abramchuk
e6d64ab981 Add changelog file 2020-03-11 13:27:45 +03:00
Sergey Abramchuk
eef09bdb28 Bump version number 2020-03-11 13:17:20 +03:00
Sergey Abramchuk
f077c32fa6 Merge branch 'feature/spm' into develop 2020-03-11 13:12:07 +03:00
Sergey Abramchuk
947ac7a34b Add Swift Package Manager section 2020-03-11 13:11:33 +03:00
Sergey Abramchuk
46543218e6 Update minimum Xcode version 2020-03-11 12:50:22 +03:00
Sergey Abramchuk
14fed5527d Fix incorrect language 2020-03-11 12:41:48 +03:00
Sergey Abramchuk
16069c0127 Merge branch 'feature/network-issue' into feature/spm 2020-03-11 12:04:52 +03:00
Sergey Abramchuk
8a4755d51f Use only prefix to determine protocol family 2020-03-11 11:26:15 +03:00
Sergey Abramchuk
afdb988ae9 Remove runpath search paths from config 2020-03-11 10:06:31 +03:00
Sergey Abramchuk
f2ef611283 Fix incorrect deployment target 2020-03-06 12:48:11 +03:00
Sergey Abramchuk
7294157182 Merge branch 'feature/tests' into feature/spm 2020-03-06 12:31:18 +03:00
Sergey Abramchuk
d75dc24a8c Add OpenVPNAdapterTests target 2020-03-06 12:25:55 +03:00
Sergey Abramchuk
63f8838172 Move OpenVPNAdapter tests to their own subfolder 2020-03-06 12:25:09 +03:00
Sergey Abramchuk
e793320734 Change location of the modulemap and umbrella header 2020-03-06 12:19:17 +03:00
Sergey Abramchuk
aff379ba21 Delete excess ruby scripts 2020-03-06 11:02:46 +03:00
Sergey Abramchuk
02d1895396 Update gitignore 2020-03-06 10:56:07 +03:00
Sergey Abramchuk
05217a5d55 Merge branch 'feature/carthage' into feature/spm 2020-03-06 10:49:05 +03:00
Sergey Abramchuk
3372aca957 Delete excess config files 2020-03-06 10:43:44 +03:00
Sergey Abramchuk
618b086aa6 Add missing headers to the OpenVPNAdapter 2020-03-06 10:38:41 +03:00
Sergey Abramchuk
b4b0ef1aca Configure module map and umbrella header 2020-03-06 10:38:25 +03:00
Sergey Abramchuk
0d2c4e99b5 Delete redundant config files 2020-03-06 09:48:35 +03:00
Sergey Abramchuk
45213a2d8e Configure targets 2020-03-05 15:04:05 +03:00
Sergey Abramchuk
fb9560b7a0 Define config for each target 2020-03-05 14:57:46 +03:00
Sergey Abramchuk
51b3e19450 Generate new xcode project 2020-03-05 13:47:21 +03:00
Sergey Abramchuk
cc2663779f Merge branch 'feature/cocoapods' into feature/spm 2020-03-05 12:52:25 +03:00
Sergey Abramchuk
5129f6ecb2 Fix missing public headers 2020-03-05 12:42:58 +03:00
Sergey Abramchuk
4d794cc279 Fix missing preserve path 2020-03-05 11:15:00 +03:00
Sergey Abramchuk
adcb23702e Update podspec to reflect latest changes of the project structure 2020-03-05 11:10:58 +03:00
Sergey Abramchuk
6b782a9309 Apply patches to openvpn3 dependencies 2020-03-04 11:57:35 +03:00
Sergey Abramchuk
1e77a600a4 Add scripts to apply patches 2020-03-04 11:52:03 +03:00
Sergey Abramchuk
e66d4b04a2 Change order of definitions 2020-03-03 14:24:51 +03:00
Sergey Abramchuk
02b1077795 Delete redundant definitions 2020-03-03 14:21:08 +03:00
Sergey Abramchuk
82d2694a57 Delete redundant symlinks 2020-03-03 14:02:16 +03:00
Sergey Abramchuk
43e011aa12 Move guard header to the OpenVPNClient target 2020-03-03 14:01:36 +03:00
Sergey Abramchuk
8a79798c2c Rename target to OpenVPNClient and create separate folder for it 2020-03-03 13:59:35 +03:00
Sergey Abramchuk
ea77618c28 Define necessary directives for OpenVPNAdapter 2020-03-03 13:46:17 +03:00
Sergey Abramchuk
dd08e51a19 Update configuration of the OpenVPNAdapter target 2020-03-03 13:33:44 +03:00
Sergey Abramchuk
e3266c3792 Rename openvpn header 2020-03-03 13:25:36 +03:00
Sergey Abramchuk
23fcbf55a9 Add guard header for ovpncli 2020-03-03 13:22:45 +03:00
Sergey Abramchuk
d7ca445f35 Create symlinks for the public headers 2020-03-03 12:46:32 +03:00
Sergey Abramchuk
7d53a7f396 Move source files into library folder 2020-03-03 12:46:01 +03:00
Sergey Abramchuk
990326e52f Configure targets for lz4, mbedTLS and OpenVPN3 2020-03-02 14:55:09 +03:00
Sergey Abramchuk
2bd0879a3b Create symlinks for openvpn source files 2020-03-02 14:53:11 +03:00
Sergey Abramchuk
9dd887db5c Create symlinks for public header of lz4 2020-03-02 14:37:31 +03:00
Sergey Abramchuk
86cc97e55f Squashed 'Sources/OpenVPN3/' content from commit 0a6e0b6e54
git-subtree-dir: Sources/OpenVPN3
git-subtree-split: 0a6e0b6e542c2d19de1f416c4caccd899d72831a
2020-02-24 14:43:11 +03:00
Sergey Abramchuk
32f1555929 Merge commit '86cc97e55fe346502462284d2e636a2b3708163e' as 'Sources/OpenVPN3' 2020-02-24 14:43:11 +03:00
Sergey Abramchuk
133b3756e6 Merge commit 'c0cd028912e0be1386fca1fd6bb4e6324047e763' as 'Sources/LZ4' 2020-02-24 14:40:17 +03:00
Sergey Abramchuk
c0cd028912 Squashed 'Sources/LZ4/' content from commit 641b453d9d
git-subtree-dir: Sources/LZ4
git-subtree-split: 641b453d9db536ee020851bfcb1dc39f61006f0a
2020-02-24 14:40:17 +03:00
Sergey Abramchuk
175080ea69 Merge commit '1dd2f4645226bd269f2407d5ed431acc3f66e7a6' as 'Sources/ASIO' 2020-02-24 14:37:39 +03:00
Sergey Abramchuk
1dd2f46452 Squashed 'Sources/ASIO/' content from commit 8d4c8c3ce4
git-subtree-dir: Sources/ASIO
git-subtree-split: 8d4c8c3ce43c866f609d2eda9a43fe5b334620be
2020-02-24 14:37:39 +03:00
Sergey Abramchuk
1a3a83f332 Squashed 'Sources/mbedTLS/' content from commit 432b4b7989
git-subtree-dir: Sources/mbedTLS
git-subtree-split: 432b4b7989445a34940658e45557072e6e782d62
2020-02-24 14:36:19 +03:00
Sergey Abramchuk
c274ea6ecc Merge commit '1a3a83f33224876bfe5e8131542a8e124f4bc89b' as 'Sources/mbedTLS' 2020-02-24 14:36:19 +03:00
Sergey Abramchuk
9b6210faab Update location of a few files 2020-02-24 14:35:44 +03:00
Sergey Abramchuk
1639547f74 Delete Libraries folder 2020-02-24 14:25:35 +03:00
Sergey Abramchuk
4c1704d1a2 Fix incorrect brackets 2019-12-01 21:27:12 +03:00
Sergey Abramchuk
d387eb4f5f Merge tag '0.4.0' into develop 2019-11-03 15:03:06 +03:00
2918 changed files with 202405 additions and 2833 deletions

5
.gitignore vendored
View File

@@ -49,6 +49,11 @@ playground.xcworkspace
Carthage/Build
# Swift PM
.build/
.swiftpm
## macOS generated
# General

15
CHANGELOG.md Normal file
View File

@@ -0,0 +1,15 @@
# Changelog
## 0.7.0
- **Added**: An option to evaluate configuration without creating an instance of `OpenVPNAdapter`.
- **Updated**: Class `OpenVPNProperties` renamed to `OpenVPNConfigurationEvaluation`.
- **Updated**: openvpn3 library to 3.5.6 version, mbedTLS library to 2.7.13 version;
## 0.6.0
- **Updated**: Slightly changed API of the framework.
- **Fixed**: Reading packets issue affecting on connection when network interface is changed.
## 0.5.0
- **Added**: Swift Package Manager support;
- **Updated**: openvpn3 library to 3.5.4 version;
- **Fixed**: Network issue when adapter used in macOS projects.

View File

@@ -1,6 +0,0 @@
#include "Framework.xcconfig"
ONLY_ACTIVE_ARCH = YES
SWIFT_OPTIMIZATION_LEVEL = -Onone
SWIFT_ACTIVE_COMPILATION_CONDITIONS = $(inherited) DEBUG
BITCODE_GENERATION_MODE = marker

View File

@@ -1,16 +0,0 @@
PRODUCT_NAME = OpenVPNAdapter
PRODUCT_BUNDLE_IDENTIFIER = me.ss-abramchuk.openvpn-adapter
INFOPLIST_FILE = Configuration/Info-Framework.plist
MODULEMAP_FILE = Configuration/OpenVPNAdapter.modulemap
DYLIB_CURRENT_VERSION = $(CURRENT_PROJECT_VERSION)
APPLICATION_EXTENSION_API_ONLY = YES
CLANG_CXX_LANGUAGE_STANDARD = gnu++14
CLANG_CXX_LIBRARY = libc++
VENDORS_DIR = $(PROJECT_DIR)/Sources/OpenVPNAdapter/Libraries/Vendors
HEADER_SEARCH_PATHS = "$(VENDORS_DIR)/asio/asio/include" "$(VENDORS_DIR)/lz4/include" "$(VENDORS_DIR)/mbedtls/include" "$(VENDORS_DIR)/openvpn"
LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*] = "$(VENDORS_DIR)/lz4/lib/ios" "$(VENDORS_DIR)/mbedtls/lib/ios"
LIBRARY_SEARCH_PATHS[sdk=iphoneos*] = "$(VENDORS_DIR)/lz4/lib/ios" "$(VENDORS_DIR)/mbedtls/lib/ios"
LIBRARY_SEARCH_PATHS[sdk=macosx*] = "$(VENDORS_DIR)/lz4/lib/macos" "$(VENDORS_DIR)/mbedtls/lib/macos"
OTHER_LDFLAGS = -lmbedtls -lmbedx509 -lmbedcrypto -llz4
OTHER_CPLUSPLUSFLAGS = $(OTHER_CFLAGS) -DUSE_ASIO -DUSE_ASIO_THREADLOCAL -DASIO_STANDALONE -DASIO_NO_DEPRECATED -DASIO_HAS_STD_STRING_VIEW -DHAVE_LZ4 -DUSE_MBEDTLS -DOPENVPN_FORCE_TUN_NULL -DUSE_TUN_BUILDER
GCC_WARN_64_TO_32_BIT_CONVERSION = NO

View File

@@ -0,0 +1 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) XXH_NAMESPACE=LZ4_

View File

@@ -0,0 +1,3 @@
MODULEMAP_FILE = Sources/OpenVPNAdapter/module.modulemap
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) USE_ASIO
GCC_WARN_64_TO_32_BIT_CONVERSION = NO

View File

@@ -0,0 +1,2 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) USE_ASIO USE_ASIO_THREADLOCAL ASIO_STANDALONE ASIO_NO_DEPRECATED ASIO_HAS_STD_STRING_VIEW USE_MBEDTLS HAVE_LZ4 OPENVPN_FORCE_TUN_NULL USE_TUN_BUILDER
GCC_WARN_64_TO_32_BIT_CONVERSION = NO

View File

@@ -1,24 +1,31 @@
SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx
TARGETED_DEVICE_FAMILY = 1,2
HEADER_SEARCH_PATHS = $(inherited) $(SRCROOT)/Sources/OpenVPNAdapter/include $(SRCROOT)/Sources/OpenVPNClient/include $(SRCROOT)/Sources/LZ4/include $(SRCROOT)/Sources/mbedTLS/include $(SRCROOT)/Sources/ASIO/asio/include $(SRCROOT)/Sources/OpenVPN3
CLANG_CXX_LANGUAGE_STANDARD = gnu++14
CLANG_CXX_LIBRARY = libc++
////////////////////////////////////////////////////////////////////////////////
//
// iOS-specific settings
//
IPHONEOS_DEPLOYMENT_TARGET = 9.0
SDKROOT[arch=arm64] = iphoneos
SDKROOT[arch=armv7] = iphoneos
SDKROOT[arch=armv7s] = iphoneos
VALID_ARCHS[sdk=iphoneos*] = arm64 armv7 armv7s
VALID_ARCHS[sdk=iphonesimulator*] = i386 x86_64
LD_RUNPATH_SEARCH_PATHS[sdk=iphoneos*] = @executable_path/Frameworks @loader_path/Frameworks
LD_RUNPATH_SEARCH_PATHS[sdk=iphonesimulator*] = @executable_path/Frameworks @loader_path/Frameworks
////////////////////////////////////////////////////////////////////////////////
//
// macOS-specific settings
//
MACOSX_DEPLOYMENT_TARGET = 10.11
VALID_ARCHS[sdk=macosx*] = i386 x86_64
SDKROOT[arch=i386] = macosx
SDKROOT[arch=x86_64] = macosx
LD_RUNPATH_SEARCH_PATHS[sdk=macosx*] = @executable_path/../Frameworks @loader_path/../Frameworks
VALID_ARCHS[sdk=macosx*] = i386 x86_64

View File

@@ -1,5 +0,0 @@
#include "Framework.xcconfig"
ONLY_ACTIVE_ARCH = NO
SWIFT_OPTIMIZATION_LEVEL = -Owholemodule
BITCODE_GENERATION_MODE = bitcode

View File

@@ -1,5 +0,0 @@
PRODUCT_NAME = OpenVPNAdapterTests
PRODUCT_BUNDLE_IDENTIFIER = me.ss-abramchuk.openvpn-adapter.tests
INFOPLIST_FILE = Configuration/Info-Tests.plist
SWIFT_OPTIMIZATION_LEVEL = -Onone
ONLY_ACTIVE_ARCH = YES

View File

@@ -0,0 +1 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) MBEDTLS_MD4_C MBEDTLS_RELAXED_X509_DATE _FILE_OFFSET_BITS=64

View File

@@ -3,7 +3,7 @@ Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "OpenVPNAdapter"
s.version = "0.4.0"
s.version = "0.7.0"
s.summary = "Objective-C wrapper for OpenVPN library. Compatible with iOS and macOS."
s.description = <<-DESC
OpenVPNAdapter is an Objective-C framework that allows to easily configure and establish VPN connection using OpenVPN protocol.
@@ -35,116 +35,70 @@ Pod::Spec.new do |s|
s.source = { :git => "https://github.com/ss-abramchuk/OpenVPNAdapter.git", :tag => "#{s.version}" }
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
framework_path = "Sources/OpenVPNAdapter"
vendors_path = "#{framework_path}/Libraries/Vendors"
s.source_files = "#{framework_path}/*.{h,m,mm}"
s.public_header_files = "#{framework_path}/*.h"
s.private_header_files = [
"#{framework_path}/*+Internal.h",
"#{framework_path}/OpenVPNReachabilityTracker.h",
"#{framework_path}/OpenVPNClient.h",
"#{framework_path}/OpenVPNNetworkSettingsBuilder.h",
"#{framework_path}/OpenVPNPacket.h",
"#{framework_path}/OpenVPNPacketFlowBridge.h",
"#{framework_path}/NSError+OpenVPNError.h",
"#{framework_path}/NSArray+OpenVPNAdditions.h"
]
s.module_map = "Configuration/OpenVPNAdapter.modulemap"
# ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.ios.frameworks = "Foundation", "NetworkExtension", "SystemConfiguration", "UIKit"
s.osx.frameworks = "Foundation", "NetworkExtension", "SystemConfiguration"
s.libraries = "lz4", "mbedcrypto", "mbedtls", "mbedx509"
# ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.requires_arc = true
s.prefix_header_file = false
adapter_path = "Sources/OpenVPNAdapter"
asio_path = "Sources/ASIO"
lz4_path = "Sources/LZ4"
mbedtls_path = "Sources/mbedTLS"
openvpn_path = "Sources/OpenVPN3"
client_path = "Sources/OpenVPNClient"
s.xcconfig = {
"APPLICATION_EXTENSION_API_ONLY" => "YES",
"CLANG_CXX_LANGUAGE_STANDARD" => "gnu++14",
"CLANG_CXX_LIBRARY" => "libc++",
"GCC_WARN_64_TO_32_BIT_CONVERSION" => "NO",
"CLANG_WARN_DOCUMENTATION_COMMENTS" => "NO"
"CLANG_WARN_DOCUMENTATION_COMMENTS" => "NO",
"HEADER_SEARCH_PATHS" => "\"${PODS_TARGET_SRCROOT}/#{asio_path}/asio/include/**\" \"${PODS_TARGET_SRCROOT}/#{mbedtls_path}/include/**\" \"${PODS_TARGET_SRCROOT}/#{openvpn_path}/**\""
}
# ――― Subspecs ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.subspec "lz4" do |lz4|
lz4_path = "#{vendors_path}/lz4"
s.subspec "OpenVPNAdapter" do |adapter|
adapter.source_files = "#{adapter_path}/library/*.{h,m,mm}", "#{adapter_path}/include/*.h"
adapter.public_header_files = "#{adapter_path}/include/*.h"
lz4.preserve_paths = "#{lz4_path}/include/*.h"
lz4.ios.vendored_libraries = [
"#{lz4_path}/lib/ios/liblz4.a"
]
lz4.osx.vendored_libraries = [
"#{lz4_path}/lib/macos/liblz4.a"
]
lz4.xcconfig = {
"HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{lz4_path}/include/**"
}
adapter.compiler_flags = "-DUSE_ASIO"
end
s.subspec "mbedtls" do |mbedtls|
mbedtls_path = "#{vendors_path}/mbedtls"
mbedtls.preserve_paths = "#{mbedtls_path}/include/**/*.h"
mbedtls.ios.vendored_libraries = [
"#{mbedtls_path}/lib/ios/libmbedcrypto.a",
"#{mbedtls_path}/lib/ios/libmbedtls.a",
"#{mbedtls_path}/lib/ios/libmbedx509.a"
]
mbedtls.osx.vendored_libraries = [
"#{mbedtls_path}/lib/macos/libmbedcrypto.a",
"#{mbedtls_path}/lib/macos/libmbedtls.a",
"#{mbedtls_path}/lib/macos/libmbedx509.a"
]
mbedtls.xcconfig = {
"HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{mbedtls_path}/include/**"
}
end
s.subspec "asio" do |asio|
asio_path = "#{vendors_path}/asio"
s.subspec "ASIO" do |asio|
asio.preserve_paths = "#{asio_path}/asio/include/**/*.{hpp,ipp}"
asio.xcconfig = {
"HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{asio_path}/asio/include/**"
}
end
s.subspec "openvpn" do |openvpn|
openvpn_path = "#{vendors_path}/openvpn"
s.subspec "LZ4" do |lz4|
lz4.source_files = "#{lz4_path}/lib/*.{h,c}",
lz4.private_header_files = "#{lz4_path}/lib/*.{h,c}"
openvpn.source_files = "#{openvpn_path}/client/*.{hpp,cpp}"
openvpn.private_header_files = "#{openvpn_path}/client/*.hpp"
lz4.compiler_flags = "-DXXH_NAMESPACE=LZ4_"
end
openvpn.preserve_paths = "#{openvpn_path}/openvpn/**/*.hpp"
s.subspec "mbedTLS" do |mbedtls|
mbedtls.source_files = "#{mbedtls_path}/library/*.{c}"
mbedtls.preserve_paths = "#{mbedtls_path}/include/**/*.{h}"
openvpn.compiler_flags = "-x objective-c++"
mbedtls.compiler_flags = "-DMBEDTLS_MD4_C", "-DMBEDTLS_RELAXED_X509_DATE", "-D_FILE_OFFSET_BITS=64"
end
openvpn.xcconfig = {
"HEADER_SEARCH_PATHS" => "${PODS_TARGET_SRCROOT}/#{openvpn_path}/**",
"OTHER_CPLUSPLUSFLAGS" => "$(OTHER_CFLAGS) -DUSE_ASIO -DUSE_ASIO_THREADLOCAL -DASIO_STANDALONE -DASIO_NO_DEPRECATED -DASIO_HAS_STD_STRING_VIEW -DHAVE_LZ4 -DUSE_MBEDTLS -DOPENVPN_FORCE_TUN_NULL -DUSE_TUN_BUILDER"
}
s.subspec "OpenVPN3" do |openvpn|
openvpn.preserve_paths = "#{openvpn_path}/openvpn/**/*.hpp", "#{openvpn_path}/client/*.{hpp,cpp}"
end
s.subspec "OpenVPNClient" do |client|
client.source_files = "#{client_path}/library/*.{mm}", "#{client_path}/include/*.{hpp}"
client.private_header_files = "#{client_path}/include/*.{hpp}"
client.compiler_flags = "-x objective-c++", "-DUSE_ASIO", "-DUSE_ASIO_THREADLOCAL", "-DASIO_STANDALONE", "-DASIO_NO_DEPRECATED", "-DASIO_HAS_STD_STRING_VIEW", "-DHAVE_LZ4", "-DUSE_MBEDTLS", "-DOPENVPN_FORCE_TUN_NULL", "-DUSE_TUN_BUILDER"
end
end

View File

@@ -15,7 +15,9 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>0.4.0</string>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "self:/Users/ss.abramchuk/Sources.localized/open-source.localized/openvpn-adapter/OpenVPNAdapter.xcodeproj">
location = "self:">
</FileRef>
</Workspace>
</Workspace>

View File

@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
<dict>
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
<false/>
</dict>
</plist>

View File

@@ -1,100 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9D2ABD81EA20F99007EDF9D"
BuildableName = "OpenVPNAdapter.framework"
BlueprintName = "OpenVPNAdapter macOS"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
codeCoverageEnabled = "YES"
shouldUseLaunchSchemeArgsEnv = "NO">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9D2ABF21EA212A3007EDF9D"
BuildableName = "OpenVPNAdapterTests.xctest"
BlueprintName = "OpenVPNAdapter macOS Tests"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9D2ABD81EA20F99007EDF9D"
BuildableName = "OpenVPNAdapter.framework"
BlueprintName = "OpenVPNAdapter macOS"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9D2ABD81EA20F99007EDF9D"
BuildableName = "OpenVPNAdapter.framework"
BlueprintName = "OpenVPNAdapter macOS"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9D2ABD81EA20F99007EDF9D"
BuildableName = "OpenVPNAdapter.framework"
BlueprintName = "OpenVPNAdapter macOS"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "9999"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -14,9 +14,51 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9BB475B1E71663A00F3F98C"
BlueprintIdentifier = "OpenVPNAdapter::mbedTLS"
BuildableName = "mbedTLS.framework"
BlueprintName = "mbedTLS"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "OpenVPNAdapter::LZ4"
BuildableName = "LZ4.framework"
BlueprintName = "LZ4"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "OpenVPNAdapter::OpenVPNClient"
BuildableName = "OpenVPNClient.framework"
BlueprintName = "OpenVPNClient"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "OpenVPNAdapter::OpenVPNAdapter"
BuildableName = "OpenVPNAdapter.framework"
BlueprintName = "OpenVPNAdapter iOS"
BlueprintName = "OpenVPNAdapter"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
@@ -26,31 +68,24 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
codeCoverageEnabled = "YES"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9BB478D1E71821A00F3F98C"
BlueprintIdentifier = "C97E5FCC24123F2E005C2EBC"
BuildableName = "OpenVPNAdapterTests.xctest"
BlueprintName = "OpenVPNAdapter iOS Tests"
BlueprintName = "OpenVPNAdapterTests"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
<SkippedTests>
<Test
Identifier = "OpenVPNReachabilityTests">
</Test>
</SkippedTests>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9BB475B1E71663A00F3F98C"
BuildableName = "OpenVPNAdapter.framework"
BlueprintName = "OpenVPNAdapter iOS"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@@ -62,17 +97,6 @@
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9BB475B1E71663A00F3F98C"
BuildableName = "OpenVPNAdapter.framework"
BlueprintName = "OpenVPNAdapter iOS"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
@@ -83,9 +107,9 @@
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C9BB475B1E71663A00F3F98C"
BuildableName = "OpenVPNAdapter.framework"
BlueprintName = "OpenVPNAdapter iOS"
BlueprintIdentifier = "OpenVPNAdapter::OpenVPNClient"
BuildableName = "OpenVPNClient.framework"
BlueprintName = "OpenVPNClient"
ReferencedContainer = "container:OpenVPNAdapter.xcodeproj">
</BuildableReference>
</MacroExpansion>

67
Package.swift Normal file
View File

@@ -0,0 +1,67 @@
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "OpenVPNAdapter",
platforms: [
.iOS("9.0"),
.macOS("10.11"),
],
products: [
.library(name: "OpenVPNAdapter", type: .static, targets: ["OpenVPNAdapter"]),
],
targets: [
.target(
name: "OpenVPNAdapter",
dependencies: [
.target(name: "mbedTLS"),
.target(name: "OpenVPNClient")
],
sources: ["library"],
cxxSettings: [
.headerSearchPath("../ASIO/asio/include"),
.headerSearchPath("../OpenVPN3"),
.define("USE_ASIO")
]
),
.target(
name: "LZ4",
sources: ["lib"],
cSettings: [
.define("XXH_NAMESPACE", to: "LZ4_")
]
),
.target(
name: "mbedTLS",
sources: ["library"],
cSettings: [
.define("MBEDTLS_MD4_C"),
.define("MBEDTLS_RELAXED_X509_DATE"),
.define("_FILE_OFFSET_BITS", to: "64"),
]
),
.target(
name: "OpenVPNClient",
dependencies: [
.target(name: "LZ4"),
.target(name: "mbedTLS")
],
sources: ["library"],
cxxSettings: [
.headerSearchPath("../ASIO/asio/include"),
.headerSearchPath("../OpenVPN3"),
.define("USE_ASIO"),
.define("USE_ASIO_THREADLOCAL"),
.define("ASIO_STANDALONE"),
.define("ASIO_NO_DEPRECATED"),
.define("ASIO_HAS_STD_STRING_VIEW"),
.define("USE_MBEDTLS"),
.define("HAVE_LZ4"),
.define("OPENVPN_FORCE_TUN_NULL"),
.define("USE_TUN_BUILDER")
]
)
],
cxxLanguageStandard: .gnucxx14
)

View File

@@ -3,8 +3,10 @@
![Platforms](https://img.shields.io/badge/Platforms-iOS%20%7C%20macOS-lightgrey.svg)
![iOS Versions](https://img.shields.io/badge/iOS-9.0+-yellow.svg)
![macOS Versions](https://img.shields.io/badge/macOS-10.11+-yellow.svg)
![Xcode Version](https://img.shields.io/badge/Xcode-9.0+-yellow.svg)
![Xcode Version](https://img.shields.io/badge/Xcode-11.0+-yellow.svg)
![Carthage Compatible](https://img.shields.io/badge/Carthage-Compatible-4BC51D.svg?style=flat)
![Cocoapods Compatible](https://img.shields.io/badge/Cocoapods-Compatible-4BC51D.svg?style=flat)
![Swift Package Manager Compatible](https://img.shields.io/badge/Swift%20Package%20Manager-Compatible-4BC51D.svg?style=flat)
![License](https://img.shields.io/badge/License-AGPLv3-lightgrey.svg)
## Overview
@@ -16,7 +18,7 @@ The framework is designed to use in conjunction with [`NetworkExtension`](https:
### Requirements
- iOS 9.0+ or macOS 10.11+
- Xcode 9.0+
- Xcode 11.0+
### Carthage
To install OpenVPNAdapter with Carthage, add the following line to your `Cartfile`.
@@ -33,12 +35,15 @@ To install OpenVPNAdapter with Cocoapods, add the following lines to your `Podfi
```ruby
target 'Your Target Name' do
use_frameworks!
pod 'OpenVPNAdapter', :git => 'https://github.com/ss-abramchuk/OpenVPNAdapter.git', :tag => '0.4.0'
pod 'OpenVPNAdapter', :git => 'https://github.com/ss-abramchuk/OpenVPNAdapter.git', :tag => '0.7.0'
end
```
And run `$ pod install`.
### Swift Package Manager
Add `OpenVPNAdapter` package to your project using File > Swift Packages > Add Package Dependency menu. Xcode 11 will automatically retrieve all necessary dependencies. In addition to that you need to add `SystemConfiguration` framework to the Frameworks and Libraries. If you work on iOS project add `UIKit` as well.
## Usage
At first, you need to add a Packet Tunnel Provider extension to the project and configure provision profiles for both the container app and the extension. There are official documentation and many tutorials describing how to do it so we won't dwell on this in detail.
@@ -136,6 +141,11 @@ Packet Tunnel Provider extension uses [`NEPacketTunnelProvider`](https://develop
import NetworkExtension
import OpenVPNAdapter
// Extend NEPacketTunnelFlow to adopt OpenVPNAdapterPacketFlow protocol so that
// `self.packetFlow` could be sent to `completionHandler` callback of OpenVPNAdapterDelegate
// method openVPNAdapter(openVPNAdapter:configureTunnelWithNetworkSettings:completionHandler).
extension NEPacketTunnelFlow: OpenVPNAdapterPacketFlow {}
class PacketTunnelProvider: NEPacketTunnelProvider {
lazy var vpnAdapter: OpenVPNAdapter = {
@@ -177,20 +187,20 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
// Additional parameters as key:value pairs may be provided here
]
// Add this line if you want to keep TUN interface active during pauses or reconnections
configuration.tunPersist = true
// Uncomment this line if you want to keep TUN interface active during pauses or reconnections
// configuration.tunPersist = true
// Apply OpenVPN configuration
let properties: OpenVPNProperties
let evaluation: OpenVPNConfigurationEvaluation
do {
properties = try vpnAdapter.apply(configuration: configuration)
evaluation = try vpnAdapter.apply(configuration: configuration)
} catch {
completionHandler(error)
return
}
// Provide credentials if needed
if !properties.autologin {
if !evaluation.autologin {
// If your VPN configuration requires user credentials you can provide them by
// `protocolConfiguration.username` and `protocolConfiguration.passwordReference`
// properties. It is recommended to use persistent keychain reference to a keychain
@@ -221,13 +231,13 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
// WiFi the adapter still uses cellular data. Changing reachability forces
// reconnection so the adapter will use actual connection.
vpnReachability.startTracking { [weak self] status in
guard status != .notReachable else { return }
guard status == .reachableViaWiFi else { return }
self?.vpnAdapter.reconnect(interval: 5)
}
// Establish connection and wait for .connected event
startHandler = completionHandler
vpnAdapter.connect()
vpnAdapter.connect(using: packetFlow)
}
override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) {
@@ -250,15 +260,13 @@ extension PacketTunnelProvider: OpenVPNAdapterDelegate {
// `OpenVPNAdapterPacketFlow` method signatures are similar to `NEPacketTunnelFlow` so
// you can just extend that class to adopt `OpenVPNAdapterPacketFlow` protocol and
// send `self.packetFlow` to `completionHandler` callback.
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings?, completionHandler: @escaping (OpenVPNAdapterPacketFlow?) -> Void) {
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings?, completionHandler: @escaping (Error?) -> Void) {
// In order to direct all DNS queries first to the VPN DNS servers before the primary DNS servers
// send empty string to NEDNSSettings.matchDomains
networkSettings?.dnsSettings?.matchDomains = [""]
// Specify the network settings for the current tunneling session.
setTunnelNetworkSettings(settings) { (error) in
completionHandler(error == nil ? self.packetFlow : nil)
}
// Set the network settings for the current tunneling session.
setTunnelNetworkSettings(networkSettings, completionHandler: completionHandler)
}
// Process events returned by the OpenVPN library
@@ -317,11 +325,6 @@ extension PacketTunnelProvider: OpenVPNAdapterDelegate {
}
}
// Extend NEPacketTunnelFlow to adopt OpenVPNAdapterPacketFlow protocol so that
// `self.packetFlow` could be sent to `completionHandler` callback of OpenVPNAdapterDelegate
// method openVPNAdapter(openVPNAdapter:configureTunnelWithNetworkSettings:completionHandler).
extension NEPacketTunnelFlow: OpenVPNAdapterPacketFlow {}
```
## Contributing

19
Scripts/apply_patches.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
set -e
. functions.sh
ASIO_SRC_DIR="../Sources/ASIO"
ASIO_PATCH_DIR="../Sources/OpenVPN3/deps/asio/patches"
MBEDTLS_SRC_DIR="../Sources/mbedTLS"
MBEDTLS_PATCH_DIR="../Sources/OpenVPN3/deps/mbedtls/patches"
if [ "$1" = "--reverse" ]; then
reverse_patches ${ASIO_SRC_DIR} ${ASIO_PATCH_DIR}
reverse_patches ${MBEDTLS_SRC_DIR} ${MBEDTLS_PATCH_DIR}
else
apply_patches ${ASIO_SRC_DIR} ${ASIO_PATCH_DIR}
apply_patches ${MBEDTLS_SRC_DIR} ${MBEDTLS_PATCH_DIR}
fi

View File

@@ -1,64 +0,0 @@
# Your OpenVPN username
if ENV["OPENVPN_USERNAME"].nil?
ENV["OPENVPN_USERNAME"] = "Username"
end
# Your OpenVPN password
if ENV["OPENVPN_PASSWORD"].nil?
ENV["OPENVPN_PASSWORD"] = "Password"
end
# Your OpenVPN configuration
if ENV["OPENVPN_CONFIGURATION"].nil?
ENV["OPENVPN_CONFIGURATION"] = <<~END
client
dev tun
proto udp
remote X.X.X.X 1194
remote-random
resolv-retry infinite
nobind
cipher AES-256-CBC
auth SHA512
comp-lzo no
verb 3
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-tun
reneg-sec 0
remote-cert-tls server
auth-user-pass
pull
fast-io
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>
key-direction 1
<tls-auth>
# 2048 bit OpenVPN static key
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
</tls-auth>
END
end
if ENV["OPENVPN_REMOTE_HOST"].nil?
ENV["OPENVPN_REMOTE_HOST"] = "Remote Host Address"
end
if ENV["OPENVPN_REMOTE_PORT"].nil?
ENV["OPENVPN_REMOTE_PORT"] = "Remote Host Port"
end

View File

@@ -1,35 +0,0 @@
environment_file = File.join(ENV["SRCROOT"], "Scripts", "environment.rb")
if File.exist?(environment_file)
require "#{environment_file}"
end
require "erb"
if ENV["OPENVPN_USERNAME"].nil? || ENV["OPENVPN_PASSWORD"].nil? || ENV["OPENVPN_CONFIGURATION"].nil?
puts "warning: VPN profile data is missing, you need to fill VPNProfile.swift manually."
exit(true)
end
template_file = File.join(ENV["SRCROOT"], "Scripts", "vpn_profile_template.erb")
unless File.exist?(template_file)
puts "error: Template file does not exist."
exit(false)
end
output_file = File.join(ENV["SRCROOT"], "Tests", "VPNProfile.swift")
unless File.exist?(output_file)
puts "error: Output file does not exist."
exit(false)
end
OPENVPN_USERNAME = ENV["OPENVPN_USERNAME"]
OPENVPN_PASSWORD = ENV["OPENVPN_PASSWORD"]
OPENVPN_CONFIGURATION = ENV["OPENVPN_CONFIGURATION"]
OPENVPN_REMOTE_HOST = ENV["OPENVPN_REMOTE_HOST"]
OPENVPN_REMOTE_PORT = ENV["OPENVPN_REMOTE_PORT"]
template_content = File.read(template_file)
erb_template = ERB.new(template_content, nil, ">")
result = erb_template.result
File.write(output_file, result)

37
Scripts/functions.sh Normal file
View File

@@ -0,0 +1,37 @@
function apply_patches()
{
DEP_SRC_DIR=$1
DEP_PATCH_DIR=$2
CURRENT_DIR=$(pwd)
pushd ${CURRENT_DIR}
cd /tmp
for file in ${CURRENT_DIR}/${DEP_PATCH_DIR}/*.patch; do
echo Applying patch: $file
git apply --directory ${CURRENT_DIR}/${DEP_SRC_DIR} --unsafe-path $file
done
popd
}
function reverse_patches()
{
DEP_SRC_DIR=$1
DEP_PATCH_DIR=$2
CURRENT_DIR=$(pwd)
pushd ${CURRENT_DIR}
cd /tmp
for file in ${CURRENT_DIR}/${DEP_PATCH_DIR}/*.patch; do
echo Reverse patch: $file
git apply --reverse --directory ${CURRENT_DIR}/${DEP_SRC_DIR} --unsafe-path $file
done
popd
}

View File

@@ -1,25 +0,0 @@
//
// VPNProfile.swift
// OpenVPNAdapter
//
// Created by Sergey Abramchuk on 27/09/2018.
//
// Do not commit changes of this file to the repo!
import Foundation
struct VPNProfile {
static let username: String = "<%= OPENVPN_USERNAME %>"
static let password: String = "<%= OPENVPN_PASSWORD %>"
static let configuration: String = """
<% OPENVPN_CONFIGURATION.each_line do |line| %>
<%= line %>
<% end %>
"""
static let remoteHost: String = "<%= OPENVPN_REMOTE_HOST %>"
static let remotePort: Int = <%= OPENVPN_REMOTE_PORT %>
}

View File

@@ -950,6 +950,8 @@ public:
{
const protocol_type protocol = peer_endpoint.protocol();
impl_.get_service().open(impl_.get_implementation(), protocol, open_ec);
if (!open_ec)
async_connect_post_open(protocol, open_ec);
}
return async_initiate<ConnectHandler, void (asio::error_code)>(

Some files were not shown because too many files have changed in this diff Show More