Commit graph

420 commits

Author SHA1 Message Date
Marten Seemann
56a6d8d35b
ci: update golangci-lint to v1.52.2, update Go version (#3740)
* ci: update golangci-lint to v1.52.2, update Go version

* run gofumpt
2023-03-27 22:55:26 -07:00
Marten Seemann
41ddaa0262
attach the QUIC version to context returned by ClientHelloInfo.Context (#3721) 2023-03-26 22:26:14 +09:00
zoltan-kiss-cujo
b7384a4404
quicv2: fix TLS extension type (#3710)
* quicv2: fix TLS extension type

* Update internal/handshake/tls_extension_handler.go

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-02-15 14:17:31 -08:00
Marten Seemann
0ac5d1c149
reduce the size of messageChan channel in the crypto setup (#3664) 2023-02-13 13:55:49 -08:00
Marten Seemann
04c3fd0756
deprecate quicvarint.Write in favor of quicvarint.Append (#3690) 2023-02-13 02:52:25 -08:00
Marten Seemann
3d9380ec3c
reject invalid active_connection_id_limit transport parameter values (#3687) 2023-02-01 17:03:19 -08:00
Marten Seemann
58cedf7a4f
rename module, adjust import paths to quic-go/quic-go (#3680) 2023-01-21 19:53:57 -08:00
Marten Seemann
b52d34008f
add Allow0RTT opt in the quic.Config to control 0-RTT on the server side (#3635) 2023-01-04 16:18:11 -08:00
Marten Seemann
421893b1c4
only call tls.CipherSuiteName if logging is on, reducing allocations (#3632)
tls.CipherSuiteName calls tls.CipherSuites, which in turn allocates a
large slice of values. We only need the name when we're logging, and
doing so, reduces the amount of allocations (and therefore garbage
created) during a QUIC handshake by roughly 5%.
2023-01-03 13:21:17 -08:00
Marten Seemann
7fbcbf7ac6
update QUIC v2 support to draft-ietf-quic-v2-08 (#3631) 2023-01-04 07:07:06 +13:00
Marten Seemann
d2512193da
qerr: include role (remote / local) in error string representations (#3629) 2022-12-08 19:58:52 +13:00
Marten Seemann
870fbe7ab0 migrate to Ginkgo v2 2022-10-11 16:38:44 +04:00
Marten Seemann
7023b52e13
speed up marshaling of transport parameters (#3531)
The speedup comes from multiple sources:
1. We now preallocate a byte slice, instead of appending multiple times.
2. Marshaling into a byte slice is faster than using a bytes.Buffer.
3. quicvarint.Write allocates, while quicvarint.Append doesn't.
2022-08-29 23:05:52 +03:00
Marten Seemann
1aced95d41 use an array instead of a byte slice for Connection IDs 2022-08-29 11:30:31 +03:00
Benedikt Spies
7da024da5a
Disable anti-amplification limit by address validation token (#3326) 2022-08-20 08:02:17 -07:00
Marten Seemann
f2fa98c0dd implement a more intuitive address validation API 2022-08-12 13:13:29 +03:00
Marten Seemann
43bde14cf7 implement generic Min and Max functions 2022-08-10 14:59:05 +02:00
Marten Seemann
f10d4bd8f7 add key derivation paths for QUIC v2 2022-05-25 16:12:09 +02:00
Marten Seemann
c225299c84 handle TLS errors that occur before the ClientHello has been written 2022-05-20 12:27:00 +02:00
Marten Seemann
12d50e6810 tighten typing of channel in the crypto setup 2022-05-20 12:27:00 +02:00
Marten Seemann
0c6b3dfa93 run the updated version of gofumpt 2022-04-02 20:18:37 +01:00
Marten Seemann
f51cc93770 drop support for QUIC draft version 32 and 34 2021-07-06 09:50:10 -07:00
Marten Seemann
22112b7b66 use HkdfExtract from x/crypto
This means we don't have to expose it in qtls any more.
2021-05-30 20:26:55 -07:00
Marten Seemann
540c6ec074
Merge pull request #3174 from lucas-clemente/use-tls-cipher-suite-name
use tls.CipherSuiteName, instead of wrapping it in the qtls package
2021-05-29 11:45:39 -07:00
Marten Seemann
599d181316 use tls.CipherSuiteName, instead of wrapping it in the qtls package 2021-05-10 20:41:21 -07:00
Marten Seemann
05af55b0c9 use a pre-generated test vectors to test hkdfExpandLabel
The only reason we were using qtls.HkdfExpandLabel was to test our own
implementation of HKDF-Expand-Label. By using a pre-generated test
vector, we won't have to expose this function from qtls any more.
2021-05-10 20:41:05 -07:00
Marten Seemann
6b771df453 add support for QUIC v1 2021-05-01 10:05:29 +07:00
Marten Seemann
592fb9cad9 introduce a dedicated qerr.TransportError and qerr.ApplicationError 2021-05-01 09:38:48 +07:00
Marten Seemann
31ac5ca60d allow 0-RTT when the server's connection receive limit is increased 2021-03-17 18:53:54 +08:00
Marten Seemann
3588cddd43 allow 0-RTT resumption if the server's stream limit was increased 2021-03-11 21:37:40 +08:00
Marten Seemann
bd172b2a5a fix retry key and nonce for draft-34 2021-03-03 23:01:42 +08:00
Marten Seemann
ac16ee565b
Merge pull request #3049 from lucas-clemente/mockgen-source-mode
update gomock to v1.5.0, use mockgen source mode
2021-03-02 21:27:48 +08:00
Marten Seemann
110f949441 trace dropping of 0-RTT keys 2021-03-01 10:37:31 +08:00
Marten Seemann
efe6d02bef use mockgen source mode 2021-02-20 09:59:44 +08:00
Marten Seemann
383f1a6e89 update gomock to v1.5.0 2021-02-20 09:33:43 +08:00
Marten Seemann
9dba8141ba use the updated TLS extension code point for draft-34 2021-02-11 09:46:00 +08:00
Marten Seemann
f01a2c6b96 use the updated salt for draft-34 2021-02-11 09:46:00 +08:00
Marten Seemann
f9226887b4 rename ReadVarint / WriteVarInt / VarIntLen to Read / Write / Len 2021-01-02 00:15:07 +08:00
Marten Seemann
11c5045065 move varint encoding / decoding to a separate package
... which is not internal.
2021-01-01 11:46:45 +08:00
Marten Seemann
95334202c5 fix decoding of packet numbers in different packet number spaces
When QUIC abandoned the "stream 0" design, it introduced separate
packet number spaces for packets with different encryption levels.
Packet number compression now also works per packet number space.
The current code doesn't lead to any problems if the peer starts sending
with packet number 0, as we only exchange a few packets in the Initial
and the Handshake packet number space and there's nothing to compress.
It might lead to problems if the peer starts with a large packet number
in one space (which is allowed by the spec), and then starts with a
small packet number in another packet number space.
2020-12-03 23:35:27 +07:00
Marten Seemann
c968b18a21 select the H3 ALPN based on the QUIC version in use (for the H3 server) 2020-10-29 13:44:23 +07:00
Marten Seemann
8752576f26 run gofumpt, enable the gofumpt linter 2020-10-26 09:33:35 +07:00
Marten Seemann
471e82f883
Merge pull request #2807 from lucas-clemente/fix-post-handshake-message-error-handling
fix error handling when receiving post handshake messages
2020-10-06 20:23:53 +07:00
Marten Seemann
145e7b10d0
Merge pull request #2811 from lucas-clemente/fix-first-key-update
allow the first key update immediately after handshake confirmation
2020-10-06 20:23:19 +07:00
Marten Seemann
55a07c34ee add the exhaustive linter 2020-10-05 13:47:57 +07:00
Marten Seemann
1c38acd8c9 allow the first key update immediately after handshake confirmation 2020-09-30 14:12:07 +07:00
Marten Seemann
b9090d71ae rename cryptoSetup.DropHandshakeKeys() to SetHandshakeConfirmed() 2020-09-30 12:14:16 +07:00
Marten Seemann
6ad29e721e fix error handling when receiving post handshake messages 2020-09-28 14:02:46 +07:00
Marten Seemann
ebe051b2cc
Merge pull request #2805 from lucas-clemente/improve-crypto-error-string
include the error code in the string for CRYPTO_ERRORs
2020-09-26 17:54:17 +07:00
Marten Seemann
c92b0379cf
Merge pull request #2804 from lucas-clemente/check-quic-transport-parameter-extension
fail the handshake if the quic_transport_parameter extension is missing
2020-09-26 17:53:51 +07:00