Marten Seemann
a3878d99c9
drop old keys 3 PTOs after a key update
2019-06-30 17:36:09 +07:00
Marten Seemann
a2a4a216de
introduce an absolute key phase, use it for key updates
2019-06-30 17:36:09 +07:00
Marten Seemann
5a9c593463
rename the KeyPhase to KeyPhaseBit
2019-06-30 17:36:09 +07:00
Marten Seemann
7ba70cc8c2
Merge pull request #1973 from lucas-clemente/pto-rtt-stats
...
move calculation of the PTO to the RTTStats
2019-06-30 17:33:28 +07:00
Marten Seemann
b40991c400
Merge pull request #1971 from lucas-clemente/skip-multiplex-test-on-linux
...
skip the multiplex test on linux, add a better explanation
2019-06-30 17:32:27 +07:00
Marten Seemann
82563d4419
Merge pull request #1970 from lucas-clemente/fix-proxy-test-race
...
fix race condition in proxy tests
2019-06-30 17:31:43 +07:00
Marten Seemann
6f3fd68cd9
Merge pull request #1767 from lucas-clemente/unpacking-side-channel
...
fix timing side channel when receiving packets with invalid reserved bits
2019-06-30 16:06:37 +07:00
Marten Seemann
7b9b711a77
fix timing side channel when reading headers with invalid reserved bits
2019-06-30 15:57:03 +07:00
Marten Seemann
66abcdfc5c
move calculation of the PTO to the rttStats
...
The PTO value is needed at various places in the protocol. Calculating
it on the rttStats struct will allow us to pass around this struct.
2019-06-29 14:57:24 +07:00
Marten Seemann
4366eac105
don't include the exponential backoff in the PTO calculation
...
According to the spec, the PTO is defined without the backoff. The
backoff is applied when setting the PTO alarm.
2019-06-29 14:02:05 +07:00
Marten Seemann
b5764f22a2
save the max_ack_delay in the rttStats
2019-06-29 13:40:56 +07:00
Marten Seemann
79513e81eb
skip the multiplex test on linux, add a better explanation
2019-06-29 11:52:23 +07:00
Marten Seemann
0f3b0cfcc4
fix race condition in proxy tests
2019-06-29 11:11:45 +07:00
Marten Seemann
4fe0f6752c
fix typos in error messages when parsing Version Negotiation packets
2019-06-29 11:00:57 +07:00
Marten Seemann
0333f424bb
Merge pull request #1959 from lucas-clemente/optimize-crypto-packet-sending
...
optimize sending of crypto packets
2019-06-29 00:03:12 +08:00
Marten Seemann
185082d5b0
Merge pull request #1962 from lucas-clemente/remove-hostname-from-addr
...
remove unused utils.HostnameFromAddr function
2019-06-29 00:02:08 +08:00
Marten Seemann
da0b52ce10
Merge pull request #1961 from lucas-clemente/initiate-key-updates
...
initiate key updates
2019-06-28 23:49:56 +08:00
Marten Seemann
5458aedacc
Merge pull request #1958 from lucas-clemente/remove-stray-error-check
...
remove stray error check in packet packer
2019-06-28 23:49:32 +08:00
Marten Seemann
2f09e1774c
remove unused utils.HostnameFromAddr function
2019-06-28 22:49:00 +07:00
Marten Seemann
eef45be73b
Merge pull request #1964 from lucas-clemente/fix-flaky-cancelation-test
...
fix flaky cancelation integration test
2019-06-28 23:48:05 +08:00
Marten Seemann
437b01b7df
fix flaky cancelation integration test
2019-06-28 22:37:24 +07:00
Marten Seemann
6461c69045
add an integration test that performs frequent key updates
2019-06-27 10:54:58 +08:00
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
c3142f9dc3
only try packing crypto packets before the handshake is confirmed
2019-06-25 14:31:34 +08:00
Marten Seemann
acba7d4e77
return ErrKeysDropped when sealer keys were already dropped
2019-06-25 13:38:11 +08:00
Marten Seemann
d6d1286d91
remove stray error check in packet packer
2019-06-23 14:00:26 +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