145 Commits
0.3.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
Sergey Abramchuk
f4f98ddf88 Merge branch 'release/0.4.0' 2019-11-03 15:03:04 +03:00
Sergey Abramchuk
b04a285210 Update readme file 2019-11-03 15:02:14 +03:00
Sergey Abramchuk
2d1fdfb019 Update version number in the Podfile 2019-11-03 15:00:03 +03:00
Sergey Abramchuk
ad77627ca9 Bump version number 2019-11-03 14:55:00 +03:00
Sergey Abramchuk
d8a55bc358 Merge branch 'feature/update-dependencies' into develop 2019-11-03 11:16:36 +03:00
Sergey Abramchuk
76e5488aa1 Fix get/set settings test 2019-11-03 11:13:43 +03:00
Sergey Abramchuk
c3ed67b67d Reset tun without any conditions and drop idea to override remote server 2019-11-03 11:05:14 +03:00
Sergey Abramchuk
f9d506ffca Reset packet flow within resetTun method 2019-11-03 11:04:12 +03:00
Sergey Abramchuk
ef93e5adc9 Fix missing symbols for arm archs 2019-11-02 13:13:31 +03:00
Sergey Abramchuk
3db23628cb Disable Catalyst support 2019-11-02 11:26:59 +03:00
Sergey Abramchuk
7331ae5fad Add new properties to the OpenVPNCOnfiguration 2019-11-02 10:29:21 +03:00
Sergey Abramchuk
aa396dad2d Add new OpenVPN events and errors 2019-10-26 10:20:37 +03:00
Sergey Abramchuk
29bd59f78f Merge commit 'f44694ce5f781924b6094c4c18f8bf83a3da7857' into feature/update-dependencies 2019-10-25 20:20:11 +03:00
Sergey Abramchuk
f44694ce5f Squashed 'Sources/OpenVPNAdapter/Libraries/Vendors/asio/' changes from 90f32660cd..8d4c8c3ce4
8d4c8c3ce4 asio version 1.14.0 released
30336a0873 Revision history.
2a1f68845a On Windows, ensure global object destructors are run.
6f55aeecd0 Fix move-based async_accept between sockets with different executor types.
c1c068c6ad The executor is copied, not moved, when the I/O object moves.
37c8d91d21 Add runtime detection of native I/O executors when using polymorphic wrapper.

git-subtree-dir: Sources/OpenVPNAdapter/Libraries/Vendors/asio
git-subtree-split: 8d4c8c3ce43c866f609d2eda9a43fe5b334620be
2019-10-25 20:20:10 +03:00
Sergey Abramchuk
238abab032 Merge commit '688ce110819545502762729feaa505b67e2fe58e' into feature/update-dependencies 2019-10-25 20:14:12 +03:00
Sergey Abramchuk
688ce11081 Squashed 'Sources/OpenVPNAdapter/Libraries/Vendors/openvpn/' changes from 7db7a009b0..29e060ffb3
29e060ffb3 CryptoAlgs: Don't report any digests for ciphers not using them
87d40ed8da ovpncli.cpp: socket_protect implementation for agent-enabled builds
12763bbbb8 win/client/tunsetup.hpp: implement add_bypass_route() method
c445361969 vcxprox: add missing file
0d7143c4bf transport: enable socket_protect call for all platforms
a6cae41285 cliopt.hpp: disable remote list bypass for agent-enabled build
3166957e2e add error codes for better error management at profile parsing time

git-subtree-dir: Sources/OpenVPNAdapter/Libraries/Vendors/openvpn
git-subtree-split: 29e060ffb34b8a4067d8d01f6506bdb2d220df02
2019-10-25 20:14:12 +03:00
Sergey Abramchuk
3980fb9be5 Merge commit '8e87aecebf66f50957e35966c547d77a6fb526ab' into feature/update-dependencies 2019-10-12 15:50:03 +03:00
Sergey Abramchuk
8e87aecebf Squashed 'Sources/OpenVPNAdapter/Libraries/Vendors/openvpn/' changes from 275cf80efb..7db7a009b0
7db7a009b0 proto: Client complains about stub compressors
390154d0e4 Update Build instructions for OSX
1b92069834 deps: Update to mbedtls-2.7.12
8cab79540d compression: Extend compression alert to include server pushes
67b4641a99 CompressContext: Add is_any_stub() method
cdf9e7bece compression: Issue an Event if compression is activated
fa38064403 build script: added a new PROF type "auto" that tries to automatically determine the local platform
7ce7b52b7c MTRand: added OPENVPN_INSECURE_RANDOM compile flag that allows MTRand to masquerade as a secure RNG
85e7e49f72 MTRand: added constructor accepting an initialization seed
1fa3229a10 IPv4, IPv6: added #include <openvpn/common/hash.hpp>
48e9217d26 vcxproj: add missing header file
d2a2601b2f Wintun: unmap ring buffers
e320bc63ff openssl: Improve OpenSSLContext fencing against multiple declarations
2f8fe2d318 openssl: Missing inline keyword in a couple of compat functions
32b984c0ff enum_dir: use a function template
725ee04593 VPNServerNetblock::Netblock::to_string(): show prefix_len
409d1c52b8 ManClientInstance::Send::describe_user(): added bool show_userprop parameter
e05fc16b20 string::indent(): try to fix all the corner cases
4e1645ea80 RunContext: mark virtual Stop* async_stop() with override attribute
e8b31c5454 cli: advertise "openurl" as supported SSO method
80b45731eb ICMPv6: added DEST_UNREACH code
679003094d AsioTimerSafe: refactor to allow as drop-in replacement for AsioTimer
f7845578f1 RunContext: check for halt in timer closure
84483eda25 AsioPolySock: add support for socket shutdown
1b3402aec3 tcplinkcommon.hpp: added missing include
2e26c7565c time: added nanotime_t typedef
c3c8ab7f6b string: added additional detail to split() comment
95ce4f22c8 string: added to_delim() method then redefined first_line() method to use it
448218b1e1 string: added add_leading() method
e3b0bf4f5c MSF iterator: allow conversion from ordinary iterator and added exists() method
11412ac50a AsioPolySock: in remote_endpoint_str() method, test for alt_routing_enabled()
9fb4e705f9 Added TimeSkew to skew a time duration by a random flux
7496383002 write_binary_atomic: reduce the length of the temporary filename
b31d9c0191 auth-token-user: increase size limit to 340 chars
c82644c03a Added BufferLineIterator
115cb656b6 RandomAPI: added randbyte() and randbool() methods
4fa8348689 RunContext: ASIO SIGNAL message now shows signal name rather than number
ebfce58513 Added StaticBuffer, a constant-length Buffer for writing that cannot be extended
c8f9cb88a4 string::split(): call reserve() on return vector
f15e566065 read_binary_unix_fast: should return an int (i.e. errno), not a bool
60501b4513 random: factor out rand32_distribute() from RandomAPI::randrange32()
90123495a5 wintun: get device interfaces list only once
ec790df73b wintun: read packets in bulk
0f85d3f729 wintun: use correct io_context when performing initial read
a6151cdeab wintun: use auto-reset events
29acfd95f3 libs: update ASIO to 1.14.0
438a0ef287 Remove outdated and unused android build files
e9df57969f Merge remote-tracking branch 'origin/released'
44725ad094 ssl: Fix building with OpenSSL 1.0.2
efe3f1f635 version: Reset version reference for git master
8c79c06d94 Make tls-crypt/tls-cryptv2 compile with multiple compilation units
4d18aaeb88 Fix LLVM warnings reported during OS X build
8c9496bb4d Use const_cast for SSL_session_reused
33be562a39 Add missing override keywords to openssl/sslctx.hpp
2c5435a000 dcocli: use compile time define for Tun methods instead of hardcoded iproute
7c39088f00 Allow overriding reported HW_ADDR and support IV_PLAT_VER
7bb1ea19ee Move sending IV_UI_VER and IV_SSO to build_peer_info
23959fa705 Add reporting of IV_SSL_VER
63ab5b5e46 Only initialise static member in OpenSSLContext once
ecebb40304 Merge remote-tracking branch 'origin/qa'
52c9702502 wintun: replace volatiles with atomics
d720c7104c appveyor: install Strawberry perl
60a253a7ef appveyor: update to VS2019
48f2b5100b wintun: support for privilege separation
6f266be3d8 wintun: ring buffers support
baa1ce2ccf vcxproj: bump VS version to 2019
98bfd037e3 tun/win: factor out ClientConfig into separate header
aeb5ce0ad7 wintun: open device with SetupAPI
3998d303ce Finalizing the OpenVPN 3 Core library 3.3 release
728733aee7 deps/mbedtls: rebase "enable unsupported critical extensions" patch
43e36ca45a lib-version: update to mbedtls-2.7.11
4dbcd85e50 openssl/cipher.hpp: add missing include <compat.hpp>
69d72ed64f DCOTransport: Fix server side specific trunk handling
ff732e3b5d Fix OpenVPN Core build with OpenSSL 1.1.0
0da42f393f Do not use deprecated OpenSSL 1.1.0 methods
35062c0b60 travis.yml: update environment
47046cf6d2 Merge branch 'qa'
6933c395a4 [OVPN3-423] cliconnect.hpp: fix reconnect on Windows after sleep
462c36c813 random_subnet(): added comment
ac1d447156 IP::Addr::from_byte_string(): fixed bug for IPv6 case
d6eaea3468 string::split(): minor implementation tweaks
ca15b7cdf4 hexstr: added dump_hex() variant accepting void *
0e61a2afd7 SessionIDType::find_weak: added conflict parameter
089aec00b1 DCOTransport: new routing code for trunk links
5befbd430f build: added CAP=1 -- build with libcap
eb85ada21e signals: added trivial signal_name() function
f89013ef92 RunContext: don't try to catch SIGQUIT by default
e0ee540135 SessionIDType: added hash() method
f0e1f8aa42 logging: added basic components for logrotate
fbb0c81f29 UMask: added UMaskDaemon, a umask context object appropriate for daemons
1c7bac90d9 build script: when building with DEBUG=1 on Linux, use -ggdb instead of -g
73cce80e43 OpenSSL: added openssl_reseed_rng() function
25780cf798 OpenSSL: fixed some memory leaks in CipherContextGCM and TokenEncrypt
168dba95f5 OpenSSL: define OPENSSL_SERVER_SNI when OpenSSL version is at least 1.1
84e78d8fed SNI: added OpenVPN client support for SNI (currently OpenSSL only)
310766b270 build: added MTLS_DIST setting
4eaa46a879 MbedTLS: added MBEDTLS_DISABLE_NAME_CONSTRAINTS preprocessor flag
16226d1b05 OpenSSLSign: updated for OpenSSL 1.1
aed0678c96 SSL: added SNI::Metadata, an abstract base class for packaging app-specific SNI metadata in AuthCert
001b731fe2 SNI: create SNI namespace and rename SNIHandlerBase -> SNI::HandlerBase
4bd5869305 README.rst: Make Windows-specific build steps up to date.
ac365ee977 wintun: support for 0.4
9245056a2a wintun: support for 0.3
b73d484950 mbedtls: throw exception on unsupported SSL:Const::PEER_CERT_OPTIONAL option
1d6bae4b5b tcplinkcommon: bubble up real exception error
c18c8bd156 tcpcli: ensure SSL Factory survives as long as TLS link
4192193087 tls: parse and load TLS specific CA
2a19b7fcff win/tuncli.hpp: fix Wintun padding calculation
44cb9f44da appveyor: make ReleaseOpenSSL default configuration
5485de19a2 win/impersonate: refactor impersonate logic
29a655147b win/tunsetup.hpp: remove unneeded parameter
61794b0efd win: link OpenSSL dynamically
e569b84465 win/tuncli.hpp: fix indentation
374c57e708 frame_init.hpp: tweak wintun read buf size
c3c45c9b38 tun: added Error::TUN_HALT for tun_error() signaling
acd7af5e9a RandomAPI: added randrange32() method
c1a7f8cc68 std::clamp() is useful but only available in C++17 and up, so we add our own clamp()
f8c71ef1ce Minor change to Error::INACTIVE_TIMEOUT handler
3202ab5fce OpenSSLSign: renamed OpenSSLPKI::X509Base to OpenSSLPKI::X509 to conform to changes in OpenSSLPKI
8d767febb5 ReachabilityBase: added virtual destructor
6a4826965f MbedTLS: update json_override() prototype
bee0d8d187 SSL: added SSLConst::SEND_CLIENT_CA_LIST server-side flag and implemented for OpenSSL
5eb39c1dea AuthCert: save the SNI name
3b34449d0e SSLAPI: auth_cert() can now be const
a672e91631 SNI server-side: support additional JSON configuration settings
95e761f3cc OpenSSL PKI cleanup
d5eb77c53c AuthCert::Fail cleanup
6e98b9aadc SSLAPI: move PKType from SSLConfigAPI into standalone header to avoid dependency inversion
bbae814864 OpenSSL: added SNI implementation
5def1d23ab OpenSSLContext: in constructor, removed redundant if statement
1a0747e783 OpenSSLContext: in constructor, consolidate sslopt fixed flags
eef9868816 OpenSSLContext::SSL::ssl_handshake_details(): include leaf-cert CN in details
f9631cd90f AuthCert::Fail: use std::string for the reason string (instead of const char *)
a17b77641f OpenSSLPKI::X509: copy constructor doesn't need erase() and define X509::Ptr
78cae5bb52 OpenSSLPKI::DH: copy constructor doesn't need erase()
c0d43a4153 RCPtr: added static_pointer_cast() method
34a3f264f5 [OVPN-314] Add support for signalling SSO support via IV_SSO
7d112eb3e5 cli: enable utf8 console output
980ef1eff8 win/call.hpp: re-encode command output to utf8
fddb440e99 unicode.hpp: customize utf16 conversion routine
4d7c12ac4d [OVPN3-405] Support for non-ASCII profile path on Windows

git-subtree-dir: Sources/OpenVPNAdapter/Libraries/Vendors/openvpn
git-subtree-split: 7db7a009b0b4eca0fc3733c99c50aff7f7c2556f
2019-10-12 15:50:02 +03:00
Sergey Abramchuk
828011bbd3 Update mbedTLS library 2019-10-12 15:24:52 +03:00
Sergey Abramchuk
a6e3758c68 Add macOS generated items to the gitignore 2019-10-12 13:00:26 +03:00
Sergey Abramchuk
fb23b2a92e Define TUNNEL_CONFIGURATION_TIMEOUT macro 2019-09-26 13:21:24 +03:00
Sergey Abramchuk
7faa96b809 OpenVPNClient should be responsible for copying of config 2019-09-26 13:17:06 +03:00
Sergey Abramchuk
8d167952b1 Reset tunnel depending on tunPersist settings 2019-09-26 13:01:20 +03:00
Sergey Abramchuk
d1f794ae57 Expose tunPersist setting 2019-09-26 10:35:53 +03:00
Sergey Abramchuk
96cf2d1804 Merge tag '0.3.0' into develop
no message
2019-06-29 10:39:58 +03:00
2932 changed files with 206626 additions and 4516 deletions

35
.gitignore vendored
View File

@@ -48,3 +48,38 @@ playground.xcworkspace
# Carthage/Checkouts
Carthage/Build
# Swift PM
.build/
.swiftpm
## macOS generated
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

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.3.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.3.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.3.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,17 +187,20 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
// Additional parameters as key:value pairs may be provided here
]
// 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
@@ -218,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) {
@@ -247,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
@@ -314,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

@@ -1,4 +1,4 @@
asio version 1.13.0
Released Tuesday, 12 March 2019.
asio version 1.14.0
Released Sunday, 14 April 2019.
See doc/index.html for API documentation and a tutorial.

View File

@@ -1,4 +1,4 @@
AC_INIT(asio, [1.13.0])
AC_INIT(asio, [1.14.0])
AC_CONFIG_SRCDIR(include/asio.hpp)
AM_MAINTAINER_MODE
AM_INIT_AUTOMAKE([tar-ustar])

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