Commit Graph

126 Commits

Author SHA1 Message Date
Davide De Rosa 9da7fa9667 Split Core into Core+OpenVPN
Two Obj-C modules:

- __TunnelKitCore
- __TunnelKitOpenVPN

Seems the only way to do it in multiple module maps.

Move OpenVPN specifics out of CoreConfiguration.
2019-05-19 12:22:32 +02:00
Davide De Rosa 4295e63c98 Read relevant routing table 2019-05-03 15:14:25 +02:00
Davide De Rosa edd15f661e Bump version 2019-05-01 11:14:38 +02:00
Davide De Rosa 295d5fa713 Bump minor version
Makes sense, lot of fixes.
2019-04-28 16:23:38 +02:00
Davide De Rosa 31d9019f1a Read system-wide DNS servers
Add libresolv to podspec.
2019-04-25 16:36:16 +02:00
Davide De Rosa 1b8647bcac Convert PacketSteram to Obj-C
For better TCP efficiency.
2019-04-25 12:42:29 +02:00
Davide De Rosa 65f6f8938c Bump version 2019-04-17 16:16:52 +02:00
Davide De Rosa 14567ac50f Bump version 2019-04-09 20:35:25 +02:00
Davide De Rosa 9f358d6326 Accept nil cipher/digest in AppExtension
Reorganize code for clarity.
2019-04-07 08:35:40 +02:00
Davide De Rosa 4dc9539260 Rename OptionsError to ConfigurationError 2019-04-04 18:51:06 +02:00
Davide De Rosa a2250686b6 Merge OptionsBundle into Configuration
FIXME: issues with non-optional .cipher and .compressionFraming

Because:

- No pushed cipher (nil) is NOT .aes128cbc
- No pushed framing (nil) is NOT .disabled

Breaks conditions on pushed cipher/framing via PUSH_REPLY.
2019-04-04 18:51:06 +02:00
Davide De Rosa b48575a13a Split tests related to options parsing 2019-04-03 13:22:55 +02:00
Davide De Rosa 42232804ca Rename file to public entity 2019-04-03 13:19:47 +02:00
Davide De Rosa b9b9c4db60 Parse basic options in OptionsBundle
- Handle isEncrypted inside CryptoContainer
- Rename ParsingError to OptionsError

Reuse OptionsBundle in ConfigurationParser.
2019-04-03 13:19:16 +02:00
Davide De Rosa bc0fb71064 Bump minor version 2019-04-03 12:20:53 +02:00
Davide De Rosa 22f80735ca Strip certificate preamble
Fixes #78
2019-04-02 00:55:58 +02:00
Davide De Rosa 670c4c31ba Bump version 2019-04-02 00:40:50 +02:00
Davide De Rosa 559bb6607c Add and test PKCS#8 decryption
Fixes #80
2019-04-02 00:34:23 +02:00
Davide De Rosa 47b80d5361 Refactor to decrypt generic key 2019-04-02 00:31:54 +02:00
Davide De Rosa 5120bcae0a Migrate to Swift 5 2019-03-30 23:18:45 +01:00
Davide De Rosa 182a5fa02f Bump version 2019-03-26 00:37:35 +01:00
Davide De Rosa e5393f81b8 Test decrypt .pem with encrypted private key 2019-03-25 18:45:01 +01:00
Davide De Rosa 6245b5d28d Bump version 2019-03-20 17:57:48 +01:00
Davide De Rosa 0eb0e3e478 Parse compression from several places
- PUSH_REPLY
- .ovpn configuration
- TunnelKitProvider
2019-03-19 15:14:29 +01:00
Davide De Rosa 5cc32b1060 Wrap minilzo into dynamic Obj-C plugin
Handle library errors to some extent.
2019-03-19 15:12:46 +01:00
Davide De Rosa 3621b5dab2 Bump minor version 2019-03-18 22:51:20 +01:00
Davide De Rosa 147cbb8376 Bump version and update CHANGELOG 2019-03-08 13:37:09 +01:00
Davide De Rosa c05a4798ce Bump version 2019-02-28 17:20:13 +01:00
Davide De Rosa e4dc6ea2ea Bump version 2019-02-25 11:16:27 +01:00
Davide De Rosa 0e891a1029 Fix OpenSSL version in pod and podspec
And bump spec to 1.4.1
2019-02-23 23:19:06 +01:00
Davide De Rosa 0302803d3e Test configuration parser 2018-11-10 10:58:06 +01:00
Davide De Rosa 40fd2c7ede Parse configuration from .ovpn file 2018-11-10 10:58:06 +01:00
Davide De Rosa f91db4cbf1 Move EndpointProtocol/SocketType to Core 2018-11-10 10:48:17 +01:00
Davide De Rosa 0800c943a8 Add shortcut extension for creating regexes
Also expose enumeration methods for internal reuse.
2018-11-10 10:47:58 +01:00
Davide De Rosa a6bd33ae83 Bump minor version 2018-11-10 10:41:42 +01:00
Davide De Rosa 3a6efaecc6 Reuse tests for macOS target 2018-11-05 18:37:15 +01:00
Davide De Rosa d5b292c61d Bump version 2018-11-05 15:48:27 +01:00
Davide De Rosa ca77858bf0 Move CryptoContainer to Core 2018-10-25 18:34:02 +02:00
Davide De Rosa 60ac9fc672 Bump minor version 2018-10-25 18:33:44 +02:00
Davide De Rosa 617a72fbea Bump version and fix latest CHANGELOG 2018-10-24 21:06:04 +02:00
Davide De Rosa bbaa60c3bd Bump version and update CHANGELOG 2018-10-22 15:47:36 +02:00
Davide De Rosa 29ec39f151 Bump minor version 2018-10-19 17:25:11 +02:00
Davide De Rosa fbd3f977d5 Parse static key from file 2018-10-19 17:22:26 +02:00
Davide De Rosa 55e0aa5c5a Implement and test crypt serializer 2018-10-19 17:06:26 +02:00
Davide De Rosa 3ec4a7d292 Implement AES-CTR encryption 2018-10-19 16:56:20 +02:00
Davide De Rosa 66735ec118 Prepare API to enable TLS wrapping
Extensible TLSWrap parameter.
2018-10-19 16:11:35 +02:00
Davide De Rosa 5c8c361fce Add StaticKey class for static OpenVPN keys 2018-10-19 16:11:35 +02:00
Davide De Rosa eb8a8b38c2 Restore PIA HARD_RESET code 2018-10-18 12:45:32 +02:00
Davide De Rosa 872e20a95a Add function to compute MD5 from certificate 2018-10-18 12:32:22 +02:00
Davide De Rosa 11e9160acb Bump version again 2018-10-10 22:23:26 +02:00
Davide De Rosa 20d6d6747e Bump version
Take from command line, not file (unused after `1d3071b`).
2018-10-10 18:59:50 +02:00
Davide De Rosa ab050c6c00 Upgrade/fix demo project
- Target
- Pods
- Entitlements
- Swift 4.2
- License headers
2018-10-06 16:22:02 +02:00
Davide De Rosa b0ff73df59 Add Gemfile to lock CocoaPods
Skip 1.5, has a few issues.
2018-09-26 11:52:39 +02:00
Davide De Rosa b348e456a5 Upgrade OpenSSL-Apple to raise iOS target to 11 2018-09-26 11:30:04 +02:00
Davide De Rosa 657cb566cd Automate version/build numbers 2018-09-24 10:26:43 +02:00
Davide De Rosa b2dba4822a Upgrade to Swift 4.2 (Xcode 10) 2018-09-22 10:11:19 +02:00
Davide De Rosa 44fc38e8ef Rename encryption headers for consistency
The shared prefix makes it easier to associate them with
implementation files.
2018-09-20 09:03:33 +02:00
Davide De Rosa 595cae3563 Add strategy for control channel serialization 2018-09-19 22:04:52 +02:00
Davide De Rosa 19ce7de819 Encapsulate control state into ControlChannel
First step: variables + mutating funcs.
2018-09-19 22:04:52 +02:00
Davide De Rosa d80c0b5460 Move in/out states to a generic struct 2018-09-19 22:04:52 +02:00
Davide De Rosa 2bd9484a43 Move ControlPacket serialization to Obj-C
Additionally, make sessionId non-optional in control packets. They
must have it, therefore treat a missing sessionId as a programming
error instead.

Reuse routines for acks to make PacketMacros the only point of
packets serialization.
2018-09-19 22:04:52 +02:00
Davide De Rosa 7aa4a0cc04 Fix a few annoyances with C headers
Do not compile headers, FFS.
2018-09-07 00:30:53 +02:00
Davide De Rosa d6b80ea449 Implement Codable in public entities
Also rename CompressionFraming for being an extension of
SessionProxy.
2018-09-06 10:34:10 +02:00
Davide De Rosa b050110e60 Bridge CompressionFraming to Swift
Avoid exposing __TunnelKitNative module for using it.
2018-08-31 01:40:58 +02:00
Davide De Rosa de6b22349e Test IPv4 <-> String conversions 2018-08-31 01:06:38 +02:00
Davide De Rosa b0758412a0 Add PUSH_REPLY unit tests 2018-08-30 18:04:12 +02:00
Davide De Rosa 68810d9497 Add description to framing enum 2018-08-30 13:59:47 +02:00
Davide De Rosa 209889b9d2 Make compression framing an enum option
- Disabled: no framing (default)
- CompLZO: NO_COMPRESS
- Compress: NO_COMPRESS_SWAP
2018-08-30 12:43:36 +02:00
Davide De Rosa dee2956406 Rename Certificate to CryptoContainer
Makes more sense as it holds certs and keys. Can be other formats
than PEM in the future.
2018-08-28 12:55:27 +02:00
Davide De Rosa 8e70567c83 Remove forgotten stale certificates 2018-08-28 12:53:14 +02:00
Davide De Rosa 2459fe1bfd Move a few classes inside SessionProxy
- Authenticator
- EncryptionBridge (formerly EncryptionProxy)
- PushReply
- SessionKey

They only make sense there. Content unchanged.
2018-08-23 18:51:36 +02:00
Davide De Rosa 8a9e99e6a9 Wrap SessionProxy configuration in a builder 2018-08-23 18:51:36 +02:00
Davide De Rosa 897e824340 Enforce use of non-preset CA certificates 2018-08-23 12:11:55 +02:00
Davide De Rosa dfac465c1d Drop support for PIA HARD_RESET patch 2018-08-23 12:11:55 +02:00
Davide De Rosa 4d03df7066 Finish up renaming in headers and prefixes 2018-08-23 12:10:56 +02:00
Davide De Rosa fe665e8ad5 Rename library to TunnelKit 2018-08-23 12:10:41 +02:00