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
Marten Seemann
d98a11bb35
save version numbers such that can be written in big endian
...
This makes the version number representation consistent with the IETF
draft.
2017-10-27 17:24:24 +07:00
Marten Seemann
9825ddb43a
simplify the interaction with mint
2017-10-25 09:13:47 +07:00
Marten Seemann
282b423f7d
pass the crypto stream to the crypto setup constructor
...
The crypto stream is opened during the session setup. Passing it to the
crypto setup directly helps simplify the constructor.
2017-10-25 09:13:47 +07:00
jbenoist
12d4e031bf
fix 0-RTT by moving cookie generation to server config
2017-10-24 13:27:50 +07:00
Marten Seemann
f3e9bf4332
remove the params negotiator
2017-10-20 18:08:21 +07:00
Marten Seemann
925a52f032
don't apply a limit to the number of outgoing streams
2017-10-20 17:35:30 +07:00
Marten Seemann
480db80da1
remove the receive flow control window from the params negotiator
...
The receive windows are not negotiated, they are just announced to the
peer.
2017-10-20 17:35:30 +07:00
Marten Seemann
f5acb690d3
simplify the maximum stream limit
2017-10-20 17:35:30 +07:00
Marten Seemann
daff6256b9
don't negotiate the maximum incoming streams value
...
The maximum number of incoming streams doesn't need to be negotiated. It
is a value that is only announced by the peer, and has to be respected.
Furthermore, Chrome doesn't seem to care about the MSPC value anymore
(since MIDS was introduced), so there's no need to send this in the
handshake any more.
2017-10-20 17:35:30 +07:00
Marten Seemann
0e1a8a5f8c
move the max flow control increments out of the params negotiator
...
The params negotiator was just keeping track of the value set in the
quic.Config. The max flow control increments are not subject to
negotiation, but an independent implementation decision of every peer.
2017-10-04 07:16:16 -07:00
Marten Seemann
6874ff7b41
Merge pull request #866 from lucas-clemente/fix-856
...
handle version negotiation in the TLS handshake
2017-10-03 11:26:53 -07:00
Marten Seemann
4eec7433d9
enforce a minimum value of the remote idle timeout
...
This prevents a DoS where a peer could send us a really small remote
idle timeout, and we would continuously send it PING frames.
2017-10-03 11:06:31 -07:00
Marten Seemann
0ffb64b5d7
rename the IdleConnectionStateLifetime to RemoteIdleTimeout
2017-10-03 10:48:08 -07:00
Marten Seemann
a8b603b7bf
don't negotiate the idle timeout
...
The idle timeout doesn't need to be negotiated, simply announcing it to
the peer is sufficient. We now close the session if there's no incoming
network activity for the duration of the local idle timeout, and we
send a PING frame after half the remote idle timeout (if keep alives are
enabled).
2017-10-02 18:16:27 -07:00
Marten Seemann
a136ceffeb
implement the validation of the version negotiation for the client
2017-10-02 13:51:38 +07:00
Marten Seemann
e01eb322e4
implement the validation of the version negotiation for the server
2017-10-02 13:16:01 +07:00
Marten Seemann
a2988bce8d
send versions in ClientHello and EncryptedExtensions TLS parameters
...
It only sends the right values now, but doesn't yet perform any
validation.
2017-10-02 12:50:17 +07:00
Marten Seemann
6f3d3919df
use separate constructors for client and server for the TLS crypto setup
2017-10-02 11:11:42 +07:00
Marten Seemann
474b036474
Merge pull request #858 from lucas-clemente/omit-instead-of-truncate-connection-id
...
rename connection ID truncation to connection ID omission
2017-09-30 20:40:12 +07:00
Marten Seemann
9cb7480050
rename connection ID truncation to connection ID omission
2017-09-29 22:52:54 +07:00
Marten Seemann
dc6d1b6822
send the maximum packet size in the TLS transport parameters
2017-09-29 22:08:12 +07:00
Marten Seemann
4cbdced106
send the transport parameters in the TLS handshake
2017-09-29 17:35:22 +07:00
Marten Seemann
c95f2054a8
rename the ConnectionParametersManager to ParamsNegotiator
2017-09-28 18:15:33 +07:00
Marten Seemann
ebb4150e63
separate connection parameters negotiation and gQUIC handshake parsing
2017-09-28 18:15:32 +07:00
Marten Seemann
95901cdee4
initialize the connection parameters manager in the crypto setup
2017-09-28 18:15:32 +07:00
Marten Seemann
e729701a94
drop support for version 36
2017-09-25 20:07:34 +07:00
Marten Seemann
2e9bc93b0c
use the mockAEAD as nullAEAD in the crypto setup tests
2017-09-25 20:06:29 +07:00
Marten Seemann
8dbd60a095
drop support for QUIC 35
2017-09-25 19:55:25 +07:00
Marten Seemann
14fae7b6d3
rename the STKGenerator to CookieGenerator
2017-09-22 18:58:03 +07:00
Marten Seemann
e603715949
make handshake and crypto internal packages
2017-09-21 11:52:21 +07:00