Commit Graph

483 Commits

Author SHA1 Message Date
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
Marten Seemann
de3e1a3de5 log the cipher suite 2019-09-07 11:47:21 +07:00
Marten Seemann
fa89ec345a add support for ChaCha20 header protection 2019-09-07 11:36:50 +07:00
Marten Seemann
33b74fca79 use the new qtls SetWriteKey and SetReadKey interface 2019-09-07 11:36:06 +07:00
Marten Seemann
63c079e234 move header protection to a separate struct 2019-09-07 11:32:48 +07:00
Marten Seemann
d689f9a392 Merge pull request #2098 from lucas-clemente/fix-crypto-setup-close-deadlock
fix deadlock when the crypto setup is closed while qtls writes messages
2019-09-01 11:17:42 +07:00
Marten Seemann
e224768e46 fix deadlock when the crypto setup is closed while qtls writes messages 2019-08-31 11:59:44 +07:00
Marten Seemann
2329d0e21e handle negative max_ack_delay values in the transport parameters 2019-08-25 16:15:34 +07:00
Marten Seemann
fcc34357dc Merge pull request #2078 from lucas-clemente/speed-up-header-encryption
speed up header encryption / decryption
2019-08-24 08:28:19 +07:00
Marten Seemann
fd62eb67ee speed up updatableAEAD.Overhead() 2019-08-20 13:47:36 +07:00
Marten Seemann
a57b9c70aa speed up header encryption / decryption 2019-08-20 13:36:40 +07:00
Marten Seemann
481cf25910 grease transport parameters 2019-08-19 13:56:26 +07:00
Marten Seemann
bb48c9b31a pass the time a packet was received to the short header opener
This saves us one time.Now() syscall per received 1-RTT packet.
2019-08-11 13:33:02 +07:00
Marten Seemann
382094ba68 add unit tests for session resumption 2019-08-03 16:54:58 +07:00
Marten Seemann
511acf1371 use a GoMock ClientSessionCache in the handshake tests 2019-08-03 15:29:01 +07:00
Marten Seemann
649f3b42b3 update the initial salt for draft-22 2019-07-16 18:08:36 +07:00
Marten Seemann
c52a28cec1 explicitly trigger sending of session tickets 2019-07-05 20:53:25 +07:00
Marten Seemann
57c9b63ec9 Merge pull request #1991 from lucas-clemente/receive-encryption-level-on-key-change
receive the encryption level for key updates from qtls
2019-07-05 20:49:24 +07:00
Marten Seemann
6bf42558f3 receive the encryption level for key updates from qtls 2019-07-05 10:36:53 +07:00
Marten Seemann
2ab01f14cf fix flaky key drop test on AppVeyor 2019-07-02 13:21:51 +07:00
Marten Seemann
a3878d99c9 drop old keys 3 PTOs after a key update 2019-06-30 17:36:09 +07:00