Marten Seemann
190d1dcc59
Merge pull request #1595 from lucas-clemente/fix-1529
...
authenticate retries
2018-11-12 18:00:22 +07:00
Marten Seemann
3ffea5d8c4
internalize the qerr package
2018-11-11 12:44:16 +07:00
Marten Seemann
70cb67bd2a
check that the server sends the correct original_connection_id
2018-11-11 11:00:40 +07:00
Marten Seemann
73ca6a06eb
encode the original connection ID into the cookie
2018-11-10 17:12:50 +07:00
Marten Seemann
8c103be876
simplify the crypto setup constructors
2018-11-10 17:01:13 +07:00
Marten Seemann
c2aac727b9
implement the original_connection_id transport parameter
2018-11-10 16:41:11 +07:00
Marten Seemann
6da4ef356f
rename the initial stream limit transport parameters
2018-11-08 16:21:26 +07:00
Marten Seemann
f8612cda2c
renumber the transport parameters
2018-11-08 16:19:45 +07:00
Marten Seemann
c302d8ff81
check the validity of transport parameters when unmarshalling
2018-11-05 15:37:22 +07:00
Marten Seemann
66a72a1199
use varints for numeric transport parameters
2018-11-05 12:33:32 +07:00
Marten Seemann
0fac716274
fix go routine leak in crypto setup test
2018-11-02 16:46:57 +07:00
Marten Seemann
9981026839
split the flow control transport parameters
2018-11-01 13:09:29 +07:00
Marten Seemann
a1acfc3045
rename {Stream,Connection}FlowControlWindow to InitialMax{Stream}Data
2018-10-30 12:52:42 +07:00
Marten Seemann
74c5e9a26c
move the definition of transport parameter IDs
2018-10-30 10:37:33 +07:00
Marten Seemann
3266e36811
drop support for gQUIC
2018-10-30 10:20:39 +07:00
Marten Seemann
1227dc8a24
remove the handshakeCompleteChan from the TLS crypto setup
...
In TLS, we know that the handshake completed when RunHandshake() returns.
2018-10-29 17:33:06 +07:00
Marten Seemann
06f96f4b6e
wait until the Handshake() go routine returned before returning Close()
2018-10-29 15:05:58 +07:00
Marten Seemann
4a326ad00a
implement closing of the TLS crypto setup
...
When the crypto setup is closed, the go rounine running the
qtls.Handshake() needs to return.
2018-10-29 15:05:58 +07:00
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