Marten Seemann
fbaa941ea1
protocol: rename VersionNumber to Version ( #4295 )
2024-01-31 21:57:33 -08:00
Marten Seemann
4407c60f04
handshake: unexport Set{Read,Write}Key methods on the cryptoSetup ( #4254 )
...
No functional change expected.
These methods were exported since they were passed to the old qtls API.
2024-01-19 20:44:09 -08:00
Marten Seemann
1083d1fb8f
handshake: remove unneeded mutex in cryptoSetup ( #4227 )
2024-01-01 23:52:08 -08:00
Marten Seemann
d6e3f3229f
qtls: remove unneeded type alias for the tls.QUICEncryptionLevel ( #4220 )
...
* qtls: remove unneeded type alias for the tls.QUICEncryptionLevel
* handshake: make cryptoSetup.WriteRecord private
2023-12-28 18:59:56 -08:00
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
9b82196578
make the logging.Tracer and logging.ConnectionTracer a struct ( #4082 )
2023-09-16 04:58:51 -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
501cc21c4b
expose crypto/tls errors on the TransportError ( #4015 )
2023-08-18 03:01:49 -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
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
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
Marten Seemann
0ac5d1c149
reduce the size of messageChan channel in the crypto setup ( #3664 )
2023-02-13 13:55:49 -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
d2512193da
qerr: include role (remote / local) in error string representations ( #3629 )
2022-12-08 19:58:52 +13: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
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
599d181316
use tls.CipherSuiteName, instead of wrapping it in the qtls package
2021-05-10 20:41:21 -07:00
Marten Seemann
592fb9cad9
introduce a dedicated qerr.TransportError and qerr.ApplicationError
2021-05-01 09:38:48 +07: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
110f949441
trace dropping of 0-RTT keys
2021-03-01 10:37:31 +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
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
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
Marten Seemann
98c437e98e
fail the handshake if the quic_transport_parameter extension is missing
2020-09-25 17:11:22 +07:00