Mathias Hall-Andersen
6311aa3402
WIP: TUN IO worker
...
Also removed the type parameters from the handshake device.
2019-09-18 15:31:10 +02:00
Mathias Hall-Andersen
dfe4a22920
WIP: Work on handshake worker
2019-09-16 22:33:46 +02:00
Mathias Hall-Andersen
32c030367c
WIP: Handshake queue and workers
2019-09-15 21:10:23 +02:00
Mathias Hall-Andersen
f46762183a
Sent staged packets when key-pair confirmed
2019-09-15 15:15:15 +02:00
Mathias Hall-Andersen
b31becda71
Begin work on the pure Wireguard implemenation
...
Start joining the handshake device and router device in the top-level Wireguard implemenation.
2019-09-14 12:43:09 +02:00
Mathias Hall-Andersen
c3ad827197
Test for confirmation of key using staged packet
2019-09-11 16:36:38 +02:00
Mathias Hall-Andersen
de48bec958
Simplified router tests
2019-09-11 16:28:32 +02:00
Mathias Hall-Andersen
02d9bdcc96
Full inbound/outbound router test
2019-09-10 21:42:21 +02:00
Mathias Hall-Andersen
e371d39052
Begin work on full router interaction unittest
2019-09-08 12:59:35 +02:00
Mathias Hall-Andersen
eae915b2e8
Fixed outbound unittest
2019-09-07 19:19:51 +02:00
Mathias Hall-Andersen
7b61ee4c2d
Write inbound packets to TUN device
2019-09-07 18:38:19 +02:00
Mathias Hall-Andersen
8551e03ee3
Added outbound benchmark
...
Decent performance (~1.5Gb/s on old XPS laptop from 2014),
biggest bottleneck seems to be the heap allocator,
swapping with jemalloc yields 2x performance.
2019-09-05 19:58:12 +02:00
Mathias Hall-Andersen
b45d49201d
Output test number and parameters to debug
2019-09-04 21:44:11 +02:00
Mathias Hall-Andersen
af9c76452f
More extensive outbound test
2019-09-04 21:42:10 +02:00
Mathias Hall-Andersen
310be99fa6
Expanded outbound test
2019-09-04 19:22:47 +02:00
Mathias Hall-Andersen
6d11da441b
Simply passing of JobBuffer ownership
2019-09-04 19:08:13 +02:00
Mathias Hall-Andersen
f55014ef8f
Wake workers when submitting work
2019-09-02 23:32:07 +02:00
Mathias Hall-Andersen
62d71a7a67
Reconsider inorder queueing
2019-09-02 20:22:47 +02:00
Mathias Hall-Andersen
929eadb651
Outbound cryptkey routing
2019-09-01 17:16:01 +02:00
Mathias Hall-Andersen
d16521f4c7
Added Bind trait to router
2019-08-31 21:00:10 +02:00
Mathias Hall-Andersen
46d76b80c6
Reduce number of type parameters in router
...
Merge multiple related type parameters into trait,
allowing for easier refactoring and better maintainability.
2019-08-31 20:25:16 +02:00
Mathias Hall-Andersen
c823af1a9c
Explicitly clear t0 in KDF macro
2019-08-31 15:52:41 +02:00
Mathias Hall-Andersen
7e5852ec26
Fix race condition on response processing
2019-08-31 15:46:18 +02:00
Mathias Hall-Andersen
51179f5433
Better management of key material
2019-08-31 15:03:14 +02:00
Mathias Hall-Andersen
0520b28ac2
Move to RustCrypto AEAD crate for handshake
2019-08-30 19:46:00 +02:00
Mathias Hall-Andersen
6785aa4cb5
Join with worker threads on device drop
2019-08-28 16:27:26 +02:00
Mathias Hall-Andersen
8e1a2cabd3
Renamed confirmed -> initator on keypair
...
Done to reflect that the property is immutable,
unlike the "confirmed" field on the decryption state.
2019-08-28 12:14:32 +02:00
Mathias Hall-Andersen
10e6436e6b
Start worker threads for device
2019-08-28 11:52:08 +02:00
Mathias Hall-Andersen
a1b50aca26
Add confirm_key stub
2019-08-27 22:30:24 +02:00
Mathias Hall-Andersen
40533b9ffd
Use confirmation status from keypair in dec-state
2019-08-27 22:21:31 +02:00
Mathias Hall-Andersen
e5f515098a
Work on inbound/outbound consume code
2019-08-27 22:20:22 +02:00
Mathias Hall-Andersen
cdbcd55eda
Added sealing/opening to the router worker
2019-08-27 21:17:55 +02:00
Mathias Hall-Andersen
e28a9274d0
Removed unused sub-module
2019-08-27 11:37:20 +02:00
Mathias Hall-Andersen
3eb7f5e423
Removed unused sub-module
2019-08-27 11:36:33 +02:00
Mathias Hall-Andersen
a80e64014c
Unbox callback closures
...
Accepted the more verbose type signatures and added a callback to
request new key-material.
2019-08-27 11:28:20 +02:00
Mathias Hall-Andersen
e16151419d
Work on callback structure for cryptkey router
2019-08-26 15:01:47 +02:00
Mathias Hall-Andersen
5f3c4d2e27
Update the blake2 crate to fix bug upstream
...
Included basic sanity check for the HKDF macroes, to avoid regression in future.
2019-08-26 15:00:14 +02:00
Mathias Hall-Andersen
2272e5250f
Move to hjul crate
...
Moved timer code into seperate crate (`hjul').
2019-08-24 23:41:05 +02:00
Mathias Hall-Andersen
e88ed5d02d
Allow DoS mitigation to take any endpoint impl.
2019-08-23 11:43:29 +02:00
Mathias Hall-Andersen
9528d19cc9
Derieve clone for timer (handle)
2019-08-22 15:46:34 +02:00
Mathias Hall-Andersen
543efad980
Added benchmarks for timer code
2019-08-22 15:29:02 +02:00
Mathias Hall-Andersen
c5aba7183d
Initial version of timer framework
2019-08-22 14:59:15 +02:00
Mathias Hall-Andersen
9cef264581
Ensure peer threads are stopped on drop
2019-08-20 21:19:53 +02:00
Mathias Hall-Andersen
f4da998812
Removed platform mod
2019-08-20 14:34:41 +02:00
Mathias Hall-Andersen
7e727d120b
Restructure and job stealing work queue
2019-08-20 14:33:11 +02:00
Mathias Hall-Andersen
31ef3e2871
Implemented keypair_confirm
2019-08-18 15:44:20 +02:00
Mathias Hall-Andersen
78ab1a93e6
Remove peer from cryptkey router on drop
2019-08-17 16:31:08 +02:00
Mathias Hall-Andersen
5aeea9b619
Begin drafting cross-platform interface
2019-08-16 22:00:48 +02:00
Mathias Hall-Andersen
726163b7f1
Layout work on router
2019-08-16 12:33:10 +02:00
Mathias Hall-Andersen
657a1ccb44
Implement add_keypair semantics
2019-08-13 19:42:05 +02:00
Mathias Hall-Andersen
723a1b8e85
Port replay filter and sketch router state
2019-08-12 21:04:19 +02:00
Mathias Hall-Andersen
0e16901261
Work on sketching router interface
2019-08-10 17:09:02 +02:00
Mathias Hall-Andersen
a50079552a
Kill GC thread on Ratelimiter drop
2019-08-10 16:01:56 +02:00
Mathias Hall-Andersen
b33381331f
Concurrent rate limiter
...
The new rate limiter allows multiple simultaneous .allow calls.
Also delegated GC to tokio.
2019-08-07 22:51:58 +02:00
Mathias Hall-Andersen
f7f1088123
Added initiation flood protection
2019-08-07 11:29:39 +02:00
Mathias Hall-Andersen
a12e6e139c
Add rate limiter check to handshake messages.
2019-08-06 13:02:13 +02:00
Mathias Hall-Andersen
8f488882be
Prepare for resuse of message buffers for response
2019-08-05 22:08:18 +02:00
Mathias Hall-Andersen
c62aca70a3
Multiple mac2 can be checked concurrently
2019-08-05 21:51:16 +02:00
Mathias Hall-Andersen
abc8cacf44
Checking of mac2 fields on initiation & response
...
In addition, moved the rng out.
This will allow allocating one instance per worker,
rather than every call.
2019-08-05 21:37:31 +02:00
Mathias Hall-Andersen
baebac5bec
Validate mac2 field
2019-08-03 14:45:45 +02:00
Mathias Hall-Andersen
fe0c1532d9
Added property-based test for full DoS interaction
2019-08-03 14:36:14 +02:00
Mathias Hall-Andersen
2bdcda067c
Remove rust-crypto, move to libsodium bindings
2019-08-02 17:18:37 +02:00
Mathias Hall-Andersen
d6e40f9ea6
Unit test for mac1 validation
2019-08-01 13:56:42 +02:00
Mathias Hall-Andersen
0f92468f69
Successfully validate mac1 field
2019-08-01 13:25:50 +02:00
Mathias Hall-Andersen
ab98d9dced
Make unit tests pass
2019-08-01 11:12:30 +02:00
Mathias Hall-Andersen
1cfd5aea1a
Move to nested handshake message structure
...
Having the nested structure:
Handshake Message:
Noise part (zerocopy message)
MAC footer part (zerocopy message)
Greatly simplifies processing the MAC fields,
since the MAC footer covers the noise part, which can
be accessed as bytes using AsBytes.
2019-07-30 15:28:11 +02:00
Mathias Hall-Andersen
f46f36ad29
Begin work on MAC field processing
2019-07-29 12:45:10 +02:00
Mathias Hall-Andersen
2c81abbe79
Restructured for wireguard-rs
2019-07-28 17:09:27 +02:00
Mathias Hall-Andersen
59190dff33
Added ability to remove peer from device
2019-07-26 22:36:24 +02:00
Mathias Hall-Andersen
97e5e1eacc
Only impl. fmt for messages in test
2019-07-26 18:45:20 +02:00
Mathias Hall-Andersen
5efb318171
Move parser code to zerocopy
2019-07-26 15:46:24 +02:00
Mathias Hall-Andersen
43b56dfb58
Formatting
2019-07-25 22:04:35 +02:00
Mathias Hall-Andersen
27f8fd8e34
Fixed GenericArray version
2019-07-25 21:43:25 +02:00
Mathias Hall-Andersen
409ba51750
Added opaque identity to output
2019-07-25 18:23:30 +02:00
Mathias Hall-Andersen
d2c4ad17fe
Avoid race-condition when allocating a new identity
2019-07-25 13:06:11 +02:00
Mathias Hall-Andersen
db8328bb3b
Fix TAI64 epoch
2019-07-24 18:50:05 +02:00
Mathias Hall-Andersen
95080c870f
Tested full handshake
2019-07-24 18:47:33 +02:00
Mathias Hall-Andersen
c77697b8ed
Finish handshake exchange
2019-07-22 23:40:04 +02:00
Mathias Hall-Andersen
e0e95d9679
Begin creation of response
2019-07-18 19:52:23 +02:00
Mathias Hall-Andersen
14e9647afd
Begin processing of initation
2019-07-18 13:20:03 +02:00
Mathias Hall-Andersen
4817ca7906
Better seperation and introduction of timestamp
2019-07-17 16:28:21 +02:00
Mathias Hall-Andersen
55418344ae
Use precomputed static-static
2019-07-16 23:41:52 +02:00
Mathias Hall-Andersen
5a5d09bb41
Create initiation message
2019-07-16 23:37:25 +02:00
Mathias Hall-Andersen
abf502f73c
Test precomputed values
...
Sanity check
2019-07-14 19:04:59 +02:00
Mathias Hall-Andersen
7805fd9f59
Begin work on creating initiation
2019-07-13 23:15:01 +02:00
Mathias Hall-Andersen
dfed3b448f
Add peers and psks to device
2019-07-12 14:49:53 +02:00
Mathias Hall-Andersen
0c05104e8b
Add unit tests
2019-07-11 21:53:44 +02:00
Mathias Hall-Andersen
9154c997fa
Encoding / decoding of messages
2019-07-10 18:22:48 +02:00