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
92dbb57666
Revert CommonPacket name to ControlPacket
2018-09-19 22:04:52 +02:00
Davide De Rosa
856fa9e12e
Take PacketStream out and make public
...
Useful for reuse in TCP streams.
2018-09-19 22:04:52 +02:00
Davide De Rosa
cba6f6f959
Clean up some documentation metadata
...
- Reorder fields in SessionProxy.Configuration*
- Add new classes to .yml
2018-09-19 22:04:52 +02:00
Davide De Rosa
6ffdcec47b
Return optional from String/IPv4 conversion
2018-09-19 22:03:46 +02:00
Davide De Rosa
da2727b003
Apply both IPv4 and IPv6 settings
...
Best choice to cope with "hybrid" environments.
2018-09-15 19:42:43 +02:00
Davide De Rosa
ac3582c0fa
Fix ignored OpenSSL code
2018-09-14 02:04:36 +02:00
Davide De Rosa
b9243c9f0b
Add some more peer-info
...
- IV_PLAT
- IV_UI_VER
- IV_SSL
2018-09-12 15:50:36 +02:00
Davide De Rosa
02a20b5308
Indent TunnelKitProvider.Configuration log
...
Gives more context.
2018-09-12 15:49:41 +02:00
Davide De Rosa
915638b163
Log negotiated parms at info level
...
Useful when debug disabled.
2018-09-12 15:48:47 +02:00
Davide De Rosa
aef7daec51
Fix and clean up redundant nullability specifiers
2018-09-12 15:38:52 +02:00
Davide De Rosa
a3fe740ad9
Assert ambiguity about HMAC key length
2018-09-12 15:21:25 +02:00
Davide De Rosa
d53e7add10
Allow HMAC verify with nil cipher in CryptoCBC
2018-09-12 15:21:25 +02:00
Davide De Rosa
401d999b3d
Expose HMAC digestLength where available
2018-09-12 15:21:25 +02:00
Davide De Rosa
4af0ce8739
Refactor duplicate keep-alive code
2018-09-09 00:52:16 +02:00
Davide De Rosa
3a02557b5e
Override keep-alive with pushed interval
2018-09-09 00:52:16 +02:00
Davide De Rosa
4bf02198d1
Parse ping from PUSH_REPLY
2018-09-09 00:52:16 +02:00
Davide De Rosa
66864da51b
Default to no keep-alive if unset
...
For consistency with other optional flags.
Updates #20
2018-09-08 12:56:40 +02:00
Davide De Rosa
01f65b2a7e
Always shut down on known tunnel error
...
Not recoverable by default (e.g algorithm mismatch).
2018-09-08 00:10:35 +02:00
Davide De Rosa
891c72caa1
Rearrange shutdown code rationally
2018-09-08 00:10:35 +02:00
Davide De Rosa
8adb9871c3
Dispose tunnel if can't try next protocol
...
Return boolean in socketShouldChangeProtocol indicating whether
another protocol is available.
2018-09-08 00:10:35 +02:00
Davide De Rosa
de09d0b5da
Only try upgrade socket on network error
2018-09-08 00:10:35 +02:00
Davide De Rosa
ecbad85b4a
Discard 0 keep-alive interval
2018-09-08 00:06:19 +02:00
Davide De Rosa
582ef4875d
Move default pingInterval to constructor
...
Use CoreConfiguration only within Core.
2018-09-08 00:00:07 +02:00
Davide De Rosa
65468207cb
Transfer keep-alive to SessionProxy
2018-09-07 22:14:57 +02:00
Davide De Rosa
fcfe1f3f68
Add keepAliveSeconds field in AppExtension
2018-09-07 22:13:40 +02:00
Davide De Rosa
e9032e5490
Leave nil if push option parsed but unrecognized
...
For whatever reason. Do not override with .disabled when not
necessarily intended.
2018-09-07 15:22:03 +02:00
Davide De Rosa
e5918d1b05
Override framing with pushed if available
2018-09-07 15:11:44 +02:00
Davide De Rosa
0304c4a5eb
Parse compression framing from PUSH_REPLY
2018-09-07 15:10:19 +02:00
Davide De Rosa
55cdd6227c
Interpret 0 reneg seconds as never
2018-09-07 14:58:56 +02:00
Davide De Rosa
14f5a68c12
Move appGroup out of Configuration
...
Decouple VPN parameters.
2018-09-07 00:25:21 +02:00
Davide De Rosa
1fbfe5b844
Document genericName method
2018-09-06 11:16:48 +02:00
Davide De Rosa
5b638ea5f6
Use different genericName for CBC/GCM
2018-09-06 11:16:14 +02:00
Davide De Rosa
0b28eacf0d
Add more metadata to Cipher/Digest
...
- Ciphers are AES.
- Digests are HMAC.
2018-09-06 10:55:56 +02:00
Davide De Rosa
ce6a41a218
Add more ciphers/digests
...
No-brainer, OpenSSL EVP supports them.
2018-09-06 10:38:18 +02:00
Davide De Rosa
802f7dc0f8
Fix debugLogFormat not copied to builder
2018-09-06 10:34:10 +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
43a5972737
Fix cipher regex in PUSH_REPLY
...
Breaks with NCP enabled when cipher is not last. Trailing comma
was erroneously included in parsed cipher name.
Fixes #11
2018-09-05 03:54:40 +02:00
Davide De Rosa
3aebedf5b8
Encapsulate complex serialization
2018-09-04 15:59:22 +02:00
Davide De Rosa
e121555f82
Add Cipher.embedsDigest to signal digest embedding
...
Currently GCM ciphers do.
2018-09-04 15:57:07 +02:00
Davide De Rosa
3543f7aab3
Omit sensitive data from PUSH_REPLY log
...
Namely auth-token.
2018-09-02 12:48:45 +02:00
Davide De Rosa
201da9b69b
Bump IV_VER to 2.4
...
Enough to claim.
2018-09-02 02:09:20 +02:00
Davide De Rosa
bcc95ad510
Send NCP in peer-info
2018-09-02 02:09:20 +02:00
Davide De Rosa
81eb18619d
Pick cipher from PUSH_REPLY if present
2018-09-02 02:09:20 +02:00
Davide De Rosa
31e694859f
Cache aggregated PushReply object
...
- authToken
- peerId
- cipher
Retain across soft resets.
2018-09-02 02:09:20 +02:00
Davide De Rosa
cff359fceb
Parse pushed cipher if any
2018-09-02 02:09:20 +02:00
Davide De Rosa
e900454504
Share connection completion code
...
Across hard and soft reset.
2018-09-02 02:09:20 +02:00
Davide De Rosa
c930cda065
Consolidate DataPath with new flow
2018-09-02 02:09:20 +02:00