Commit Graph

799 Commits

Author SHA1 Message Date
Benjamin Saunders 87326966a9 Draft 17 handshake crypto 2018-12-28 12:18:11 +01:00
Benjamin Saunders b6189e2e06 Use upstream libc repo 2018-12-27 15:21:11 +01:00
Benjamin Saunders 3e8e32a80e Remove redundant/illegal handshake packet frame handling 2018-12-27 15:21:11 +01:00
Benjamin Saunders fd1d798a81 Remove no-longer-necessary state inspection workarounds 2018-12-27 15:21:11 +01:00
Benjamin Saunders 0de976751e Implement spin bit 2018-12-27 15:21:11 +01:00
Benjamin Saunders f2754f02dd Remove unreachable enum case 2018-12-27 15:21:11 +01:00
Benjamin Saunders 9523d98231 Remove dead code
We only decrypt short packets in established connections
2018-12-27 15:21:11 +01:00
Benjamin Saunders 6b43ac7f2e Remote-initiated bidi streams can be stopped immediately 2018-12-27 15:21:11 +01:00
Benjamin Saunders 248d76823a Padded packets are congestion-relevant 2018-12-26 22:07:06 +01:00
Benjamin Saunders bdc9ac76a4 Adopt draft 17 recovery logic 2018-12-26 22:07:06 +01:00
Benjamin Saunders ef688531dc Adopt "ack eliciting" terminology 2018-12-26 22:07:06 +01:00
Benjamin Saunders 2932d4985a Style tweak 2018-12-26 22:07:06 +01:00
Benjamin Saunders 97937a8fed Adopt draft 17 kMaxDatagramSize 2018-12-26 22:07:06 +01:00
Benjamin Saunders fc92cae119 Rename SentPacket::bytes to size 2018-12-26 22:07:06 +01:00
Benjamin Saunders 8debe167fd Draft 17 stateless resets 2018-12-25 12:42:06 +01:00
Benjamin Saunders da00c501fb Retire old remote connection IDs 2018-12-25 12:42:06 +01:00
Benjamin Saunders a550d7148d Always adopt a client's first NEW_CONNECTION_ID
This allows us to process future stateless resets from the client.
2018-12-25 12:42:06 +01:00
Benjamin Saunders 065da0e297 Implement RETIRE_CONNECTION_ID 2018-12-25 12:42:06 +01:00
Benjamin Saunders 4096cdc19c Issue new connection IDs on connection established 2018-12-25 12:42:06 +01:00
Benjamin Saunders a1915edfd8 Extract frame::NewConnectionId struct 2018-12-25 12:42:06 +01:00
Benjamin Saunders b973de2514 Don't leak client connections with bad Initial 2018-12-25 12:42:06 +01:00
Benjamin Saunders e6bc4f97e6 Clientside stateless resets
This will only become useful once we send a new conection ID to the
server, as the client's initial connection ID is not associated with a
reset token due to client transport parameters not being protected.
2018-12-25 12:42:06 +01:00
Benjamin Saunders 80b27f8d43 Fix illegal stateless reset size, looping vulnerability 2018-12-25 12:42:06 +01:00
Benjamin Saunders cb8114f2e9 Extract stateless reset transmit into its own method 2018-12-25 12:42:06 +01:00
Benjamin Saunders 9cdb729a52 Style fixes 2018-12-25 12:42:06 +01:00
Benjamin Saunders f7a33fcc17 Expand use of RESET_TOKEN_SIZE 2018-12-25 12:42:06 +01:00
Benjamin Saunders 6c27427c1c Privatize Retransmits fields 2018-12-25 12:42:06 +01:00
Benjamin Saunders 4fce79f7f3 Isolate header keys from traffic keys
This lets us avoid key copying that would otherwise arise due to the
somewhat differing lifecycles of the two key types, and which crypto
APIs seem to discourage.
2018-12-25 09:56:44 +01:00
Benjamin Saunders 21c5b103f7 Check reserved bits when connected 2018-12-25 09:56:44 +01:00
Benjamin Saunders 9314c88828 Fix underflow on decoding truncated long packets 2018-12-25 09:56:44 +01:00
Benjamin Saunders e3d3344747 Draft 17 header protection ciphers 2018-12-25 09:56:44 +01:00
Benjamin Saunders e2fafe45e2 Update version to draft 17 2018-12-25 09:56:44 +01:00
Benjamin Saunders 3b295dec72 PADDING shouldn't directly elicit ACKs 2018-12-25 09:56:44 +01:00
Benjamin Saunders 4258d22e4c Pad packets as needed for header protection sampling 2018-12-25 09:56:44 +01:00
Benjamin Saunders 28aa2f1f9b Draft 17 header protection 2018-12-25 09:56:44 +01:00
Benjamin Saunders d408867d97 Don't update header keys in 1RTT 2018-12-25 09:56:44 +01:00
Benjamin Saunders 06d3bef4d6 Rename PacketNumberKey to HeaderKey 2018-12-25 09:56:44 +01:00
Benjamin Saunders 72e480be9f Draft 17 key derivation 2018-12-25 09:56:44 +01:00
Benjamin Saunders 0c6d2f9803 Draft 17 flags and packet number encoding 2018-12-25 09:56:44 +01:00
Benjamin Saunders f4862a9d6a Draft 17 frames 2018-12-23 23:55:19 -08:00
Benjamin Saunders 01083617ea Don't retransmit PING 2018-12-23 23:55:19 -08:00
Benjamin Saunders 8d824b1263 impl Display/slog::Value for Directionality 2018-12-23 23:55:19 -08:00
Benjamin Saunders 6ba840281c Naming consistency 2018-12-23 23:52:24 -08:00
Benjamin Saunders 2998b95241 Draft 17 transport parameters 2018-12-23 23:52:24 -08:00
stammw e516160b03 Upgrade orion to 0.11 2018-12-23 14:21:15 -08:00
Benjamin Saunders fb3c317f60 Send/receive ECN bits on linux 2018-12-22 11:48:24 -08:00
Dirkjan Ochtman 70513bb72e Inline Context type back into Endpoint 2018-12-22 11:47:48 -08:00
Dirkjan Ochtman 1fe4235abe Reorder code in endpoint module 2018-12-22 11:47:48 -08:00
Dirkjan Ochtman 4d336d489c Introduce is_drained(), make Connection state private 2018-12-22 11:47:48 -08:00
Dirkjan Ochtman 9e24db7ccb Move core implementation of Endpoint::timeout() into Connection 2018-12-22 11:47:48 -08:00