Commit Graph

3615 Commits

Author SHA1 Message Date
Marten Seemann
0f16e08e14 introduce an environment variable to set the key update interval
QUIC_GO_KEY_UPDATE_INTERVAL determines the maximum number of packets
that are sent or received using a key. The default value should be safe
for use in production, but setting it to a lower value is useful for
integration and interop testing.
2019-06-27 10:54:58 +08:00
Marten Seemann
a09c045324 initiate a key update after sending / receiving 100000 packets 2019-06-27 10:54:54 +08:00
Marten Seemann
73d5d83a1d pass the largest acked 1-RTT packet number to the crypto setup 2019-06-27 07:42:19 +08:00
Marten Seemann
1e148c20c5 Merge pull request #1956 from lucas-clemente/key-updates
implement TLS key updates
2019-06-22 20:11:52 +08:00
Marten Seemann
00a02415bf add a Changelog entry for key updates 2019-06-22 20:01:49 +08:00
Marten Seemann
4e1f18e833 avoid unnecessary initializations of heaper protectors on key updates 2019-06-22 20:01:18 +08:00
Marten Seemann
ca8b7ddeef add logging to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
55b88be009 check that the peer doesn't update keys too quickly 2019-06-22 20:01:18 +08:00
Marten Seemann
1ef54db63f check that the peer starts with key phase 0 after the handshake 2019-06-22 20:01:18 +08:00
Marten Seemann
c522bcc683 return a defined error when the AEAD cannot open a packet 2019-06-22 20:01:18 +08:00
Marten Seemann
1fb970cbac perform a key update when receiving a packet with a different key phase 2019-06-22 20:01:18 +08:00
Marten Seemann
e74ede678f move opening / sealing to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
305e37cd15 move header encryption / decryption to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
d3ca8db521 refactor initialization of AEADs 2019-06-22 20:01:18 +08:00
Marten Seemann
0dd5a0b91f introduce a separate AEAD for short header crypto 2019-06-22 20:01:18 +08:00
Marten Seemann
598628d05b use separate opener interfaces for long and short header packets 2019-06-22 20:01:18 +08:00
Marten Seemann
b2d3ef691e use separate sealer interfaces for long and short header packets 2019-06-22 20:01:18 +08:00
Marten Seemann
c503769bcd use separate functions per encryption level to get sealers 2019-06-22 20:01:18 +08:00
Marten Seemann
d4d3f09ee3 use separate functions per encryption level to get openers 2019-06-22 20:01:18 +08:00
Marten Seemann
14a31d49a0 add a type for the key phase and use it for header parsing and writing 2019-06-22 20:01:18 +08:00
Marten Seemann
4de3a09ec4 Merge pull request #1952 from lucas-clemente/contexts
add contexts to all blocking functions
2019-06-22 19:52:47 +08:00
Marten Seemann
ea9f72ba23 add an integration test that cancels OpenStreamSync 2019-06-22 19:37:22 +08:00
Marten Seemann
2b8cece60a add a context to Session.Open{Uni}StreamSync 2019-06-22 19:37:21 +08:00
Marten Seemann
e63a991950 add an integration test that cancels AcceptStream 2019-06-22 19:37:12 +08:00
Marten Seemann
5550ba2c3b add a context to Session.Accept{Uni}Stream 2019-06-22 19:37:11 +08:00
Marten Seemann
f74082b2fb use chan instead of sync.Cond to signal that new streams can be accepted 2019-06-22 19:36:54 +08:00
Marten Seemann
12bce1caaa add a context to Listener.Accept 2019-06-22 19:36:52 +08:00
Marten Seemann
8dbe1684be Merge pull request #1957 from lucas-clemente/remove-get-packet-number-length
remove unused function GetPacketNumberLength
2019-06-22 18:38:49 +08:00
Marten Seemann
d495b4bada remove unused function GetPacketNumberLength 2019-06-21 20:13:59 +08:00
Marten Seemann
119286b05a Merge pull request #1908 from lucas-clemente/quic-trace
add quic-trace support
2019-06-21 13:38:14 +08:00
Marten Seemann
439c5eae87 add a Changelog entry for quic-trace 2019-06-21 12:51:39 +08:00
Marten Seemann
880886a139 record the congestion state for tracing before processing the ACK frame 2019-06-20 22:58:01 +08:00
Marten Seemann
c6b8ed9322 update quic-trace to handle CRYPTO frames 2019-06-20 22:58:01 +08:00
Marten Seemann
fcb0d6cfdc record InSlowStart and InRecovery 2019-06-20 22:58:01 +08:00
Marten Seemann
73f83ca4bb add a tracing option to the example server 2019-06-20 22:58:01 +08:00
Marten Seemann
7c7b1ba9c7 add tracing for lost packets 2019-06-20 22:58:01 +08:00
Marten Seemann
22cbb344af move the TransportState struct to the quictrace package
Prevents an import loop when passing the tracer to the ackhandler.
2019-06-20 22:58:01 +08:00
Marten Seemann
267d11ee66 add tracing for sent and received packets 2019-06-20 22:58:01 +08:00
Marten Seemann
8926531f7e add the quic-trace protobuf 2019-06-20 22:57:57 +08:00
Marten Seemann
4500a84010 Merge pull request #1953 from lucas-clemente/varint-error-codes
use varints for error codes
2019-06-20 21:56:02 +08:00
Marten Seemann
1f4e63aff6 document the range of valid values for error codes 2019-06-14 17:40:51 +08:00
Marten Seemann
147181786a use a varint for the error code in the RESET_STREAM frame 2019-06-14 17:38:27 +08:00
Marten Seemann
453aa23553 use a varint for the error code in the CONNECTION_CLOSE frame 2019-06-14 17:35:40 +08:00
Marten Seemann
2225bfd9a2 Merge pull request #1951 from lucas-clemente/fix-echo-example
fix ALPN in echo example
2019-06-09 23:07:30 +08:00
Marten Seemann
375b609610 fix ALPN in echo example 2019-06-07 16:27:37 +08:00
Marten Seemann
d0b5cc1133 Merge pull request #1950 from lucas-clemente/openstreamsync-in-order
return OpenStreamSync calls in the order they were called
2019-06-07 13:00:18 +08:00
Marten Seemann
061b92ea5c return OpenStreamSync calls in the order they were called 2019-06-06 17:43:38 +08:00
Marten Seemann
e7f20d427b Merge pull request #1948 from lucas-clemente/stream-num
refactor the stream maps
2019-06-05 23:46:36 +08:00
Marten Seemann
857e4ae9a9 use stream numbers, not stream ids, in the stream maps 2019-06-05 20:01:51 +08:00
Marten Seemann
a8633a952c introduce a type for the stream number 2019-06-05 17:45:17 +08:00