Commit Graph

2620 Commits

Author SHA1 Message Date
Benjamin Saunders b55615a42d Update interop ALPN ID 2018-12-29 03:07:22 -08:00
Benjamin Saunders d3c92e1231 Per-space CRYPTO streams 2018-12-29 03:07:22 -08:00
Benjamin Saunders 94ed615d55 Remove obsolete sample_offset adjustment
This is handled via padding in the current draft.
2018-12-29 03:07:22 -08:00
Benjamin Saunders f541730858 Fix PartialEncode computing wrong payload length
This could lead to an invalid sample_offset being computed.
2018-12-29 03:07:22 -08:00
Benjamin Saunders 9892b12493 More direct condition for setting payload field
This checks the value we actually care about, rather than an implied
value, avoiding potential confusion when 0-RTT is later introduced.
2018-12-29 03:07:22 -08:00
Benjamin Saunders 3b8f05daa9 Discard Initial keys even if client Handshake is retransmitted 2018-12-29 03:07:22 -08:00
Benjamin Saunders 05f9334206 Employ helper function in test 2018-12-29 03:07:22 -08:00
Benjamin Saunders f3efac1b22 Fix inconsistent in-flight packet accounting
This mostly arose from Connection::bytes_in_flight being incorrectly
overloaded to determine whether ack eliciting packets were in flight.
2018-12-29 03:07:22 -08:00
Benjamin Saunders 8f81fc1fe4 Don't pad server Initials 2018-12-29 03:07:22 -08:00
Benjamin Saunders 72bb33c05e Draft 17 Retry header encoding 2018-12-28 12:18:11 +01:00
Benjamin Saunders 75ecbf63b0 Remove unnecessary type variables
These were only ever instantiated to their default values, and hence
were unnecessary complexity.
2018-12-28 12:18:11 +01:00
Benjamin Saunders 175b033036 Test initial close by server 2018-12-28 12:18:11 +01:00
Benjamin Saunders 036a23f3ce Use correct header for pre-handshake closes 2018-12-28 12:18:11 +01:00
Benjamin Saunders 9a0cc83558 Remove some unnecessary visibility 2018-12-28 12:18:11 +01:00
Benjamin Saunders 530f3afc87 Test idle timeout 2018-12-28 12:18:11 +01:00
Benjamin Saunders 17b2e778c1 Style tweaks 2018-12-28 12:18:11 +01:00
Benjamin Saunders c23d6a4afb Fix closing before connection begins 2018-12-28 12:18:11 +01:00
Benjamin Saunders 2abb99e5ed Remove parse_initial
Redundant to process_early_payload
2018-12-28 12:18:11 +01:00
Benjamin Saunders c380251903 Fold make_close/make_probe into next_packet 2018-12-28 12:18:11 +01:00
Benjamin Saunders d93e8cbb80 Allow server 1-RTT to be pipelined with handshake
This saves a round-trip before a server application can begin
transmitting. Users who don't want to transmit to clients who may not
be able to receive data should enable stateless retries.
2018-12-28 12:18:11 +01:00
Benjamin Saunders 65956481b0 Improve diagnostics 2018-12-28 12:18:11 +01:00
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