36 Commits

Author SHA1 Message Date
gr1ffon
4ba42a8456 replace repo 2025-11-14 04:04:40 +03:00
Marten Seemann
57e46f8a4c split SNI and ECH extensions in the ClientHello (#5107)
* create a new type for crypto stream used for Initial data

This currently the exact same implementation as the other
streams, thus no functional change is expected.

* handshake: implement a function to find the SNI and the ECH extension

* move the SNI parsing logic to the quic package

* implement splitting logic

* generalize cutting logic

* introduce QUIC_GO_DISABLE_CLIENTHELLO_SCRAMBLING

* improve testing
2025-05-05 13:04:10 +02:00
Marten Seemann
d7b8447e0e fix dequeuing logic for tiny CRYPTO frames (#5104)
For very small sizes, cryptoStream.PopCryptoStream could
have returned CRYPTO frames larger than the requested size.

Instead, it should return a nil frame.
2025-05-01 18:35:11 +02:00
Marten Seemann
3ffe961079 migrate the crypto stream tests away from Ginkgo (#4837) 2025-01-06 16:17:50 +08:00
Marten Seemann
931166bb8e remove unneeded cryptoStream interface (#4617) 2024-08-03 17:16:02 -07:00
Marten Seemann
bb4eb8597c reduce allocations when handling crypto data (#4615) 2024-08-02 21:01:53 -07:00
Marten Seemann
dc0369cad4 remove TLS post-handshake message reassembly logic (#4073)
Go 1.21.1 was released, which fixed the bug that made this workaround
necessary.
2023-09-06 21:27:03 -07:00
Marten Seemann
5c5db8cc59 reassemble post-handshake TLS messages before passing them to crypto/tls (#4038) 2023-08-18 17:16:57 -07:00
Marten Seemann
3d89e545d3 use the new crypto/tls QUIC Transport (#3860) 2023-07-01 11:15:00 -07:00
Marten Seemann
f36690ae9c protocol: remove VersionWhatever, previously used for testing (#3763) 2023-04-19 06:19:27 -07: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
870fbe7ab0 migrate to Ginkgo v2 2022-10-11 16:38:44 +04:00
Marten Seemann
592fb9cad9 introduce a dedicated qerr.TransportError and qerr.ApplicationError 2021-05-01 09:38:48 +07:00
Marten Seemann
8752576f26 run gofumpt, enable the gofumpt linter 2020-10-26 09:33:35 +07:00
Marten Seemann
df06ee5e37 use the correct error code for crypto stream errors 2020-05-14 17:12:07 +07:00
Marten Seemann
8cde4ab638 refactor how session tickets are sent
Previously, RunHandshake() would send the session tickets. Now, the
session initiates the sending of the session ticket. This simplifies the
setup a bit, and it will make it possible to include the RTT estimate in
the session ticket without accessing the RTTStats concurrently.
2020-02-10 17:42:09 +07:00
Marten Seemann
949a65d490 Merge pull request #2235 from lucas-clemente/crypto-buffer-exceeded
use the CRYPTO_BUFFER_EXCEEDED error for crypto stream overflows
2019-11-24 21:06:21 +07:00
Marten Seemann
aefd4f83ea use the correct error code when checking for encryption level boundaries 2019-11-23 12:05:18 +07:00
Marten Seemann
50e7d69865 use the CRYPTO_BUFFER_EXCEEDED error for crypto stream overflows 2019-11-23 11:48:11 +07:00
Marten Seemann
e622207822 assemble ackhandler.Frames, not wire.Frames, when packing a packet 2019-08-31 17:34:54 +07:00
Marten Seemann
e7ed5e3c92 implement the crypto stream for post-handshake crypto messages 2019-02-06 22:51:44 +08:00
Marten Seemann
387c28d707 when the encryption level changes, reject data on that crypto stream
There are two checks that need to be performed:
1. the crypto stream must not have any more data queued for reading
2. when receiving CRYPTO frames for that crypto stream afterwards, they
must not exceed the highest offset received on that stream
2018-10-26 17:09:52 +07:00
Marten Seemann
19e5feef57 move TLS message header parsing logic to the crypto stream 2018-10-26 16:40:29 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
dbada7ad02 store stream data, not STREAM frames, in the streamFrameSorter 2018-08-26 08:59:48 +07:00
Marten Seemann
04147d86da rename the cryptoStreamI interface to cryptoStream 2018-08-11 12:45:43 +07:00
Marten Seemann
d330fda94c also use the onHasStreamData callback for the crypto stream 2018-01-09 17:17:16 +07:00
Marten Seemann
a5d3eaea61 rename the scheduleSending callback to onHasStreamData in the stream
This callback also takes the stream ID, which will later be used to
create a queue of streams that have data for writing available.
2018-01-02 23:24:44 +07:00
Marten Seemann
fc8fafd15e pass a callback containing the callbacks to the stream 2017-12-20 11:49:05 +07:00
Marten Seemann
d2e31c04ab generate the streamI mock in the quic package
By doing so, we can mock private methods of the stream, so they cannot
be type-asserted by users of quic-go.
2017-12-20 10:42:07 +07:00
Marten Seemann
e926b0805a split the stream into a receive and a send stream 2017-12-20 10:05:02 +07:00
Marten Seemann
73ab97aa95 simplify the stream by directly popping STREAM frames from it 2017-12-12 18:48:08 +07:00
Marten Seemann
cd5e7ae177 remove unneeded function from the crypto stream interface 2017-12-12 18:30:08 +07:00
Lucas Clemente
0febba87ba move crypto handshake stuff to its own package 2016-04-14 19:50:04 +02:00
Lucas Clemente
120d255f38 implement writing of crypto messages 2016-04-10 16:33:55 +02:00
Lucas Clemente
4df279dd81 implement parsing of sample CHLO crypto stream 2016-04-08 19:28:46 +02:00