Commit Graph

380 Commits

Author SHA1 Message Date
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
Marten Seemann
c9b95abe7e use an unbuffered chan for the client transport parameters
The client reads the transport parameters from the Encrypted Extensions
message. These transport parameters are passed to the session's run
loop's select statement via a channel.
We have to use an unbuffered channel here to make sure that the session
actually processes the transport parameters immediately.
2018-02-08 11:04:27 +08:00
Marten Seemann
cd4bcda458 read and write the stream id limits sent in the TLS handshake 2018-02-06 08:30:57 +08:00
Marten Seemann
1cc209e4fb update mint, and adapt to the new use of the extension handler 2018-02-02 08:18:29 +08:00
Marten Seemann
66fd3b5195 expose the ConnectionState in the Session
The ConnectionState contains basic details about the QUIC connection.
2018-01-11 16:27:42 +07:00
Marten Seemann
99a2853e7d remove non forward-secure dialing
This was broken for a long time, and won't be available when using the
TLS 1.3 handshake.
2018-01-02 23:26:55 +07:00
Marten Seemann
a02a6197c2 fix race condition in the client crypto setup tests 2017-12-26 15:35:00 +07:00
Marten Seemann
14d4e5e9ec update mint
mint recently changed the signature of ExtensionList.Find.
2017-12-22 16:10:37 +07:00
Marten Seemann
23ce5a8554 drop packets for new gQUIC connections that are too small 2017-12-08 12:34:59 +07:00
Marten Seemann
25a6dc9654 implement stateless handling of Initial packets for the TLS server 2017-12-08 08:45:54 +07:00
Marten Seemann
7ba613c3b9 use the mint default cookie protector to encrypt and decrypt cookies 2017-12-07 18:20:22 +07:00
Marten Seemann
80a827f133 fix the crypto setup so that it works with the recent mint changes
mint now supports stateless retries, and requires that the cookie
protector is set in the mint.Config and returns a new alert when a
retry is performed.
2017-12-07 13:49:45 +07:00
Marten Seemann
8c2404edf5 send a reserved version number in the SHLO 2017-12-06 10:20:22 +07:00
Marten Seemann
1a3852aec6 send a reserved version number in the EncryptedExtensions message 2017-12-06 10:20:22 +07:00
Marten Seemann
7487dc22bf Merge pull request #977 from lucas-clemente/fix-971
update validation of version negotiation
2017-12-06 07:02:49 +07:00
Marten Seemann
7c8715616e update validation of version negotiation
The negotiated_version parameter was recently moved from the
client_hello TLS handshake message to the encrypted_extensions.
2017-12-05 10:35:04 +07:00
Marten Seemann
c30064bb51 parse TLS extensions containing the initial_max_stream_id_uni parameter
We're not sending the initial_max_stream_id_uni parameter, which
implicitely sets this value to 0, i.e. the peer is not allowed to open
unidirectional streams.
2017-12-05 09:17:43 +07:00
Marten Seemann
a72efca38d don't require the initial_max_stream_id in the transport parameters
The draft was recently changed to make this value optional.
2017-12-05 08:56:49 +07:00
Jan Rüth
281fec1b2d Make error chan not block for a single write, allowing ParseHandshakeMessage goroutine to gracefully exit 2017-11-22 09:54:03 +01:00
Marten Seemann
683f244054 rename the Cleartext Long Header type to Handshake
This was recently changed in the draft.
2017-11-13 10:55:33 +08:00
Marten Seemann
11364cbd81 fix encoding of the idle timeout for the TLS transport parameters 2017-11-11 19:48:41 +08:00
Marten Seemann
095c29dc2c drop support for QUIC 37 and 38 2017-11-07 00:23:53 +07:00
Marten Seemann
a1a4f35096 send initial version in the CHLO, not the current version
This commit fixes two bugs:
1. In the CHLO, we need to send the initial QUIC version. It will differ
from the current version if version negotiation was performed.
2. The session setup was using the wrong version (current version, and
not the initial version), such that we would have sent the wrong version
in the TLS handshake as well.
2017-11-02 21:51:51 +07:00
Marten Seemann
96f65f922f Merge pull request #927 from lucas-clemente/fix-925
fix client handshake failure when the server supports unknown versions
2017-11-02 21:34:04 +07:00
Marten Seemann
3e6f66da79 rename the packet types according to recent draft changes 2017-11-02 18:31:04 +07:00
Marten Seemann
43c23ff5fa fix client handshake failure when the server supports unknown versions 2017-11-02 17:41:06 +07:00
Marten Seemann
df13a0a970 implement the TLS Cookie extension 2017-11-02 16:45:43 +07:00
Marten Seemann
3f62ea8673 set the Long Header packet type based on the state of the handshake 2017-10-29 14:08:08 +07:00
Marten Seemann
3e39991e1e use the non-blocking of mint to cycle through the handshake 2017-10-27 22:54:40 +07:00
Marten Seemann
fcc380187a Merge pull request #899 from lucas-clemente/fix-898
encrypt unprotected packets with a connection-dependent key
2017-10-27 22:52:04 +07:00
Marten Seemann
4f86995e48 encrypt unprotected packets with a connection-dependent key 2017-10-27 17:35:08 +07:00
Marten Seemann
ddea1d83ab use gomock to mock crypto.AEAD in the crypto setup tests 2017-10-27 17:35:08 +07:00