Commit Graph

303 Commits

Author SHA1 Message Date
Marten Seemann
8cde4ab638 refactor how session tickets are sent
Previously, RunHandshake() would send the session tickets. Now, the
session initiates the sending of the session ticket. This simplifies the
setup a bit, and it will make it possible to include the RTT estimate in
the session ticket without accessing the RTTStats concurrently.
2020-02-10 17:42:09 +07:00
Marten Seemann
3e32a693ad introduce a marshaling format for data saved in the session ticket 2020-02-10 18:02:45 +08:00
Marten Seemann
182a25d2b9 don't use ASN.1 for marshalling data for the session ticket 2020-02-08 21:42:11 +01:00
Marten Seemann
69ab66ba82 save the RTT along the session ticket and use it on resumed connections 2020-02-08 21:42:11 +01:00
Marten Seemann
5893e1ec28 add a workaround for the ChaCha20 bug 2020-01-31 12:19:58 +07:00
Marten Seemann
539097fc6e return a quic.ConnectionState from Session.ConnectionState() 2020-01-30 09:21:09 +07:00
Marten Seemann
d7948d627a drop 0-RTT keys when the server rejects 0-RTT 2020-01-30 09:12:31 +07:00
Marten Seemann
4fa5cfdca9 simplify generation of mocks for internal types 2020-01-26 13:24:35 +07:00
Marten Seemann
20e222b399 Merge pull request #2305 from lucas-clemente/update-retry-key
update Retry key and nonce to the values used in draft-25
2020-01-24 20:13:21 +07:00
Marten Seemann
3446946217 add a unit test using the test vector from the draft 2020-01-24 10:20:23 +07:00
Marten Seemann
52f9811046 update Retry key and nonce to the values used in draft-25 2020-01-22 10:51:32 +07:00
Marten Seemann
6f347233e2 update the name of the disable_active_migration transport parameter 2020-01-21 15:05:12 +07:00
Marten Seemann
5a566f2176 Merge pull request #2226 from lucas-clemente/retry-integrity
implement the retry integrity tag
2020-01-17 17:19:15 +07:00
Marten Seemann
3e469db631 protect the AEAD calculating the integrity tag by a mutex 2020-01-17 14:01:12 +07:00
Marten Seemann
9ea9c7947f implement calculation of the retry integrity tag 2020-01-17 13:42:57 +07:00
Marten Seemann
080b61d271 only save transport parameters to session ticket when using 0-RTT 2020-01-17 10:50:27 +07:00
Marten Seemann
4ab4b8004a Merge pull request #2274 from lucas-clemente/log-0-rtt-key-install
log when 0-RTT keys become available
2020-01-06 17:43:14 +07:00
Marten Seemann
a1840b3221 fix unmarshaling of transport parameters from session tickets 2020-01-02 15:12:32 +08:00
Marten Seemann
81831049c9 log when 0-RTT keys become available 2020-01-02 15:10:43 +08:00
Marten Seemann
052508e8c2 add a version to marshaled transport parameters in the session ticket 2020-01-01 18:04:02 +04:00
Marten Seemann
22abcfe6fb drop 0-RTT write keys when receiving the 1-RTT keys 2020-01-01 18:04:02 +04:00
Marten Seemann
44aa12850e restore the server's transport parameters from the session ticket 2020-01-01 18:04:02 +04:00
Marten Seemann
1f8a47af02 implement a ClientSessionCache that can save application data 2020-01-01 18:04:02 +04:00
Marten Seemann
9b0a4a8813 move unmarshaling of the transport parameters to the crypto setup 2020-01-01 18:04:01 +04:00
Marten Seemann
c5f74595ca receive 0-RTT sealers and openers from qtls when using 0-RTT 2019-12-30 18:39:21 +04:00
Marten Seemann
a9f4195fd0 check that transport params didn't change when accepting 2019-12-30 18:39:21 +04:00
Marten Seemann
ed0f426943 implement marshalling of transport parameters for the session ticket
When using 0-RTT, the client will reuse the transport parameters from
the last session. The server therefore needs to make sure that the
transport parameters haven't been changed in the mean time. To do so, it
encodes the transport parameters into the session ticket.
2019-12-30 18:39:21 +04:00
Marten Seemann
0b65a0c75e don't drop Handshake keys when receiving an ACK for a 0-RTT packet 2019-12-30 18:39:21 +04:00
Marten Seemann
355156ac4e Merge pull request #2225 from lucas-clemente/handshake-done
implement the HANDSHAKE_DONE mechanism
2019-12-18 10:07:43 +04:00
Marten Seemann
27549c5665 use the minimum of the two peers' max_idle_timeouts 2019-12-11 14:04:33 +04:00
Marten Seemann
12922bdec9 drop Handshake keys when receiving HANDSHAKE_DONE (as a client) 2019-12-06 10:29:48 +07:00
Marten Seemann
f7fd5d2848 drop Handshake keys as soon as the handshake completes (as a server) 2019-12-06 10:29:48 +07:00
Marten Seemann
d771650640 implement marshaling and unmarshaling of the preferred_address 2019-11-30 19:56:05 +07:00
Marten Seemann
7fbf5397df fix activeConnectionIDLimitParameterID variable name 2019-11-27 13:17:05 +07:00
Marten Seemann
d0a3eaa8a3 improve logging of handshake messages 2019-11-25 09:09:34 +07:00
Marten Seemann
92b898e811 Merge pull request #2218 from lucas-clemente/pto-per-pn-space
change PTO to be per packet number space
2019-11-22 18:35:05 +08:00
Marten Seemann
d6add122d8 update the label used for the key update derivation 2019-11-16 17:51:35 +08:00
Marten Seemann
3db60534cf use a sentinel error when a sealer is not yet available 2019-11-12 11:27:30 +07:00
Marten Seemann
d00828b762 make it possible to get the PTO with and without max_ack_delay 2019-11-12 11:27:30 +07:00
Marten Seemann
37600e049d implement the active_connection_id_limit transport parameter 2019-11-05 10:59:21 +07:00
Marten Seemann
f61f251fce implement correct dropping of Initial keys 2019-11-04 13:33:17 +07:00
Marten Seemann
cc9fa055a6 rename the sealer to longHeaderSealer for consistency 2019-11-04 11:31:20 +07:00
Marten Seemann
416fe8364e remove unused return value from session constructor 2019-10-27 15:35:34 +07:00
Marten Seemann
4834159210 use the TRANSPORT_PARAMETER_ERROR 2019-10-25 06:47:26 +07:00
Marten Seemann
efe65b5491 fix putting of a nil ClientSessionState into a qtls.ClientSessionCache 2019-10-13 05:09:59 -07:00
Marten Seemann
6b22f36d82 add the stylecheck linter 2019-09-17 13:50:19 +07:00
Marten Seemann
ab2b26a5cb add the unparam linter 2019-09-17 13:44:05 +07:00
Marten Seemann
57a9ed3379 Merge pull request #2134 from lucas-clemente/draft-23-test-vectors
update the Initial salt to draft-23
2019-09-17 08:06:33 +07:00
Marten Seemann
807dd67927 improve memory alignment of frequently used structs 2019-09-13 13:37:41 +07:00
Marten Seemann
1d6359543d update the Initial salt to draft-23 2019-09-12 10:06:36 +07:00