Commit Graph

111 Commits

Author SHA1 Message Date
Marten Seemann
b63c81f0bf try decrypting undecryptable packets when the encryption level changes
There's no need to do this asynchronously any more when using TLS.
2018-10-26 17:10:00 +07:00
Marten Seemann
387c28d707 when the encryption level changes, reject data on that crypto stream
There are two checks that need to be performed:
1. the crypto stream must not have any more data queued for reading
2. when receiving CRYPTO frames for that crypto stream afterwards, they
must not exceed the highest offset received on that stream
2018-10-26 17:09:52 +07:00
Marten Seemann
19e5feef57 move TLS message header parsing logic to the crypto stream 2018-10-26 16:40:29 +07:00
Marten Seemann
2dbc29a5bd fix error handling in the TLS crypto setup
There are two ways that an error can occur during the handshake:
1. as a return value from qtls.Handshake()
2. when new data is passed to the crypto setup via HandleData()
We need to make sure that the RunHandshake() as well as HandleData()
both return if an error occurs at any step during the handshake.
2018-10-26 16:18:53 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
5102294991 use separate chans to signal handshake events and handshake completion 2018-10-26 16:11:25 +07:00
Marten Seemann
74952a4331 check that every transport parameter is sent at most once 2018-10-24 23:33:37 +07:00
Marten Seemann
c1f55ba910 use tls.Config.ServerName for the passing the hostname around 2018-10-02 14:47:18 -07:00
Marten Seemann
d0bc89fb74 make the idle_timeout transport parameter optional 2018-09-19 13:28:10 -04:00
Marten Seemann
e0e831f1fc implement (un)marshalling of the transport parameters 2018-08-20 15:34:37 +07:00
Marten Seemann
00e1884a88 move reading of stateless reset tokens to the transport parameter struct 2018-08-20 15:34:37 +07:00
Marten Seemann
2c75b795ae move adding of stateless reset tokens to the transport parameter struct 2018-08-20 15:34:37 +07:00
Marten Seemann
1bb9a7e1ac don't require the flow control values in the transport parameters 2018-08-19 10:36:47 +07:00
Marten Seemann
623fcd85b0 move the mint cookie protector to the handshake package
It's duplicate code now, but it reduces the dependency on mint.
2018-08-16 11:50:43 +07:00
Marten Seemann
c840bd4177 allow version negotiation between IETF QUIC and gQUIC, and vice versa 2018-08-15 17:10:05 +07:00
Marten Seemann
77f5d30338 buffer writes to the crypto stream
mint performs a Write for every state change. This results in a lot of
small packets getting sent when using an unbuffered connection. By
buffering, we make sure that packets are filled up properly.
2018-08-13 08:47:29 +07:00
Marten Seemann
f88b7bb175 implement the new Retry mechanism 2018-08-13 08:47:29 +07:00
Marten Seemann
6e299157d4 implement the disable_migration transport parameter and use it 2018-07-02 22:18:28 +07:00
Marten Seemann
d32665af9d remove FHL2 experiment
FHL2 was an experiment in Chrome, run in Q036, which introduced HOL
blocking. This experiment is over, so we can remove the code to send a
PUBLIC_RESET when a peer initiates this experiment.
2018-06-10 17:02:06 +02:00
Marten Seemann
63195fcb68 change the TLS extension code point 2018-06-05 15:11:49 +02:00
Marten Seemann
924bcc5914 add some logging to the client's crypto setup 2018-05-08 14:24:38 +09:00
Marten Seemann
39757c1a1a add some logging to the server's crypto setup 2018-05-08 14:24:38 +09:00
Marten Seemann
f29c37b951 rename the constants for the max stream ids in the transport parameters
No functional change expected.
2018-05-06 12:13:04 +09:00
Lucas Clemente
5907bfa168 Fix KEX test on windows
This makes the code rotate the key if `time.Since(kexCurrentTime) == kexLifetime`, which prevents an issue with low-resolution clocks (e.g. in our appveyor tests).
2018-04-30 11:14:46 +02:00
Marten Seemann
0c014c0aff fix deadlock when receiving two packets with diversification nonces 2018-04-24 21:14:58 +09:00
Marten Seemann
118509cf76 fix flaky key exchange generation test on AppVeyor 2018-04-22 18:36:22 +09:00
Marten Seemann
74ccd194f7 remove the omit_connection_id TLS transport parameter 2018-04-19 13:47:02 +09:00
Marten Seemann
1a035a265c change the type of Connection ID to byte slice 2018-04-18 22:41:24 +09:00
Marten Seemann
948eef3e42 create a logger interface and use it everywhere 2018-04-04 13:03:28 +07:00
Marten Seemann
302d2a1715 don't use trial decryption for IETF QUIC 2018-03-31 14:29:44 +07:00
Marten Seemann
6c1eba5848 generate the diversification nonce when creating the server crypto setup 2018-03-31 14:29:44 +07:00
Marten Seemann
c6526ad927 replace the SetDiversificationNonce crypto setup method by a chan 2018-03-31 14:29:44 +07:00
Marten Seemann
48731221c0 correctly handle errors when creating a new gQUIC key exchange 2018-03-28 05:33:26 +07:00
Marten Seemann
1f9ab3b65f remove unused key exchange function from client crypto setup 2018-03-28 05:31:56 +07:00
Marten Seemann
b40942d39e send stream counts, not stream IDs, in the transport parameters 2018-03-16 17:41:21 +00:00
Marten Seemann
1fffb88553 fix typo in function name 2018-03-16 17:41:21 +00:00
Marten Seemann
0f401b0b37 parse the max_packet_size in the TLS transport parameters 2018-03-10 14:14:09 +07:00
Marten Seemann
a588b9e140 make golint happier 2018-03-02 16:58:19 +07:00
Marten Seemann
be2be3872f Merge pull request #1194 from lucas-clemente/log-transport-params
log the TLS Transport Parameters
2018-02-27 01:03:19 +08:00
Marten Seemann
2ab2baf4bc don't send greased version numbers for gQUIC 2018-02-25 23:19:52 +08:00
Marten Seemann
86e57706df run gofmt -s 2018-02-23 23:38:08 +08:00
Marten Seemann
78da50ee7c log the TLS Transport Parameters 2018-02-23 23:12:30 +08:00
Marten Seemann
81974d30d6 run gosimple in gometalinter 2018-02-23 22:42:32 +08:00
Marten Seemann
c3ec497a2e run unconvert in gometalinter 2018-02-23 22:42:22 +08:00
Marten Seemann
a9797d9341 run structcheck in gometalinter 2018-02-23 22:39:08 +08:00
Marten Seemann
6555907162 run goimports in gometalinter 2018-02-23 22:39:08 +08:00
Marten Seemann
11af98e338 run misspell in gometalinter 2018-02-23 22:39:08 +08:00
Marten Seemann
58b20c6009 make the number of incoming streams configurable, for IETF QUIC 2018-02-23 22:15:31 +08:00
Marten Seemann
86b25dddce Merge pull request #1177 from lucas-clemente/transport-parameters-new-sesssion-ticket
don't accept transport parameters in the NewSessionTicket message
2018-02-18 14:03:31 +08:00
Marten Seemann
f0eb5a60f1 don't accept transport parameters in the NewSessionTicket message
This was recently removed from the WG draft.
2018-02-08 11:09:42 +08:00