Commit Graph

449 Commits

Author SHA1 Message Date
Marten Seemann
d795250479 drop support for Go 1.20, build on Go 1.22rc1 on CI (#4195)
* drop support for Go 1.20

* ci: udpate CircleCI to Go 1.21

* qtls: remove unnecessary type aliases

* ci: build using Go 1.22rc1
2023-12-27 20:31:58 -08:00
Marten Seemann
d234d62d52 qtls: only attempt 0-RTT resumption for 0-RTT enabled session tickets (#4183) 2023-12-09 06:17:47 -08:00
Marten Seemann
ef800d6f71 handshake: set MinVersion on the Config returned by GetConfigForClient (#4134) 2023-10-26 22:35:07 -07:00
Marten Seemann
d309060cde handshake: clone the tls.Config returned by GetConfigForClient (#4133)
We modify this tls.Config, so we should clone it first. Otherwise, this could
cause conflicts with how the application is using that config.
2023-10-26 22:22:20 -07:00
Marten Seemann
746290b78a never allow 0-RTT when using Dial, even if the session ticket allows it (#4125)
When resuming a TLS session using Dial (and not DialEarly), 0-RTT should
be disabled at the TLS layer, even if the session ticket allows for
0-RTT resumption.

This bug is not critical, since Dial doesn't return an EarlyConnection,
so the client wouldn't be able to actually send 0-RTT data in practice.
2023-10-25 08:20:23 -07:00
Marten Seemann
1affe38703 move MaxTokenAge configuration option to the Transport (#4084) 2023-09-16 05:10:20 -07:00
Marten Seemann
9b82196578 make the logging.Tracer and logging.ConnectionTracer a struct (#4082) 2023-09-16 04:58:51 -07:00
Marten Seemann
862e64c7b9 add a Transport config option for the key used to encrypt tokens (#4066)
* add a Transport config option for the key used to encrypt tokens

* handshake: remove unused error return values
2023-09-15 18:33:57 +07:00
Ameagari
d1f6ea997c save the RTT in non-0-RTT session tickets (#4042)
* also send session ticket when 0-RTT is disabled for go1.21

* allow session ticket without transport parameters

* do not include transport parameters for non-0RTT session ticket

* remove the test assertion because it is not supported for go1.20

* Update internal/handshake/session_ticket.go

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

* add a 0-RTT argument to unmarshaling session tickets

* bump sessionTicketRevision to 4

* check if non-0-RTT session ticket has expected length

* change parameter order

* add test checks

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-09-11 08:05:31 -07:00
Marten Seemann
2797f85fc0 switch from unmaintained golang/mock to go.uber.org/mock (#4050) 2023-08-28 02:23:55 -07:00
Ameagari
6880f88089 save the max_datagram_frame_size transport parameter in the session ticket (#4013)
* Add MaxDatagramFrameSize parameter in session ticket

* fix gofumpt issues

* Update integrationtests/self/zero_rtt_test.go

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

* fix: correct comparsion of max_datagram_frame_size

* test: use constant MaxDatagramFrameSize for session ticket test

* fix grammar

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-08-18 19:16:16 -07:00
Marten Seemann
501cc21c4b expose crypto/tls errors on the TransportError (#4015) 2023-08-18 03:01:49 -07:00
Marten Seemann
bda01bc489 handshake: use the correct hash function for TLS_AES_256_GCM_SHA384 (#4031) 2023-08-15 20:09:01 -07:00
Marten Seemann
1d848392bc ignore QUICConn.SendSessionTicket error if session tickets are disabled (#4030) 2023-08-15 19:53:41 -07:00
elagergren-spideroak
571d3adef4 fix compatibility with API breaking change in Go 1.21 (#4020)
* add Go 1.21 compatibility

Signed-off-by: Eric Lagergren <elagergren@spideroak-inc.com>

* refactor for Go 1.20

Signed-off-by: Eric Lagergren <elagergren@spideroak-inc.com>

---------

Signed-off-by: Eric Lagergren <elagergren@spideroak-inc.com>
2023-08-09 05:22:30 -07:00
Marten Seemann
95ab7bdc9a add tls.ClientHelloInfo.Conn for recursive GetConfigForClient calls (#4016) 2023-08-05 13:00:11 -07:00
Marten Seemann
18d3846d4f set a net.Conn for tls.ClientHelloInfo.Conn used by GetCertificate (#4014) 2023-08-03 20:33:19 -04:00
Marten Seemann
f3a0ce1599 set a net.Conn with the correct addresses on the tls.ClientHelloInfo (#4001) 2023-07-31 13:32:10 -07:00
Marten Seemann
469a6153b6 use a synchronous API for the crypto setup (#3939) 2023-07-21 10:00:42 -07:00
Marten Seemann
0662afba63 stop using math/rand.Seed and Read in tests, bump go.mod version to 1.20 (#3936) 2023-07-01 11:29:41 -07:00
Marten Seemann
3d89e545d3 use the new crypto/tls QUIC Transport (#3860) 2023-07-01 11:15:00 -07:00
Marten Seemann
21388c86bb drop support for draft-29 (#3903) 2023-06-21 04:06:44 -07:00
Marten Seemann
7a0ef5f867 make Config.Allow0RTT a bool, not a callback 2023-05-02 15:56:49 +02:00
Marten Seemann
c9a2f79b1c simplify mockgen usage for private interfaces (#3769) 2023-04-19 07:57:00 -07:00
Marten Seemann
379e7ec848 Merge pull request #3745 from quic-go/aggressive-key-updates
initiate the first key update after sending / receiving 100 packets
2023-04-19 16:28:33 +02:00
Marten Seemann
1f57d4e789 protocol: remove VersionTLS, used during the gQUIC -> TLS 1.3 transition (#3764) 2023-04-19 07:24:34 -07:00
Marten Seemann
b03585160f handshake: initiate the first key update after 100 packets 2023-03-31 18:20:49 +09:00
Marten Seemann
1ebd359b20 handshake: remove unnecessary member variable from updatableAEAD 2023-03-28 22:50:21 +09:00
Marten Seemann
af6c19617c handshake: add benchmark tests for packet sealing, opening and rolling keys 2023-03-28 22:46:57 +09:00
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