Marten Seemann
2ab01f14cf
fix flaky key drop test on AppVeyor
2019-07-02 13:21:51 +07:00
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
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
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
acba7d4e77
return ErrKeysDropped when sealer keys were already dropped
2019-06-25 13:38:11 +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
a8633a952c
introduce a type for the stream number
2019-06-05 17:45:17 +08:00
Marten Seemann
979ab75b3b
require ALPN during the TLS handshake
2019-06-02 14:58:37 +08:00
Marten Seemann
74ddf326c1
Merge pull request #1943 from lucas-clemente/new-tokens
...
send NEW_TOKEN frames
2019-06-02 14:42:25 +08:00
Marten Seemann
314df9229c
Merge pull request #1941 from lucas-clemente/post-handshake-errors
...
add error handling for post-handshake crypto messages
2019-06-02 14:26:05 +08:00
Marten Seemann
34543848f0
send a NEW_TOKEN from after completing the handshake (as a server)
2019-06-02 14:18:27 +08:00
Marten Seemann
7c7bcede6c
rename handshake.TokenGenerator.NewToken to NewRetryToken
2019-06-02 14:14:05 +08:00
Marten Seemann
17634d2fe5
error when receiving a post-handshake message with wrong encryption level
2019-06-02 14:10:51 +08:00
Marten Seemann
d4da26bdbd
fix flaky token generator test on CI
2019-06-02 13:57:51 +08:00
Marten Seemann
6888eb8593
return an error when handling the NewSessionTicket failed
2019-06-01 13:01:49 +08:00
Marten Seemann
4e709efa2f
Merge pull request #1939 from lucas-clemente/crypto-setup-error-signaling
...
improve error handling in the crypto setup
2019-05-31 19:30:43 +08:00
Marten Seemann
e361d3c5cd
use a callback to signal completion of the handshake
2019-05-31 19:13:41 +08:00
Marten Seemann
4fd6a7cc99
use a struct to pass callbacks from the session to the crypto setup
2019-05-31 19:00:10 +08:00
Marten Seemann
3b4e552582
Merge pull request #1936 from lucas-clemente/token-timestamp
...
use a high resolution timestamp in the token
2019-05-31 18:57:51 +08:00
Marten Seemann
743868159f
use a callback to pass handshake errors to the session
2019-05-31 18:35:37 +08:00
Marten Seemann
ed69ae2ce0
Merge pull request #1940 from lucas-clemente/unexpected-handshake-messages
...
fix crash when receiving unexpected handshake messages
2019-05-31 18:14:29 +08:00
Marten Seemann
002b36abf5
use a high resolution timestamp in the token
2019-05-31 18:13:11 +08:00
Marten Seemann
aa9ab41560
Merge pull request #1937 from lucas-clemente/fix-hrr-race
...
fix race condition in crypto setup when sending a HelloRetryRequest
2019-05-31 18:09:08 +08:00
Marten Seemann
6899eb3c86
Merge pull request #1938 from lucas-clemente/remove-unused-connection-state
...
remove unused handshake.ConnectionState struct definition
2019-05-31 18:08:03 +08:00
Marten Seemann
73bd91a093
fix crash when receiving unexpected handshake message
2019-05-31 18:04:44 +08:00
Marten Seemann
5d4a47a3f3
return a crypto error when receiving unexpected handshake messages
2019-05-31 17:57:07 +08:00
Marten Seemann
2f6ab5aa5f
remove unused handshake.ConnectionState struct definition
2019-05-31 15:00:34 +08:00
Marten Seemann
0be4ee197f
fix race condition in crypto setup when sending a HelloRetryRequest
2019-05-31 01:57:58 +08:00
Marten Seemann
1d6707325f
name the quic.Cookie to quic.Token
2019-05-30 22:13:06 +08:00
Marten Seemann
a4989c3d9c
drop Initial and Handshake keys when receiving the first 1-RTT ACK
2019-05-30 14:19:26 +08:00
Marten Seemann
4042a8258c
simplify writing of varint transport parameters
2019-05-08 12:53:19 +09:00
Marten Seemann
f847c5422d
implement parsing and writing of the max_ack_delay transport parameter
2019-05-08 12:43:29 +09:00
Marten Seemann
9ffbd662c1
fix race condition when accessing the encryption level in crypto setup
2019-04-02 00:13:22 +09:00