Commit Graph

461 Commits

Author SHA1 Message Date
Marten Seemann
70cb67bd2a check that the server sends the correct original_connection_id 2018-11-11 11:00:40 +07:00
Marten Seemann
73ca6a06eb encode the original connection ID into the cookie 2018-11-10 17:12:50 +07:00
Marten Seemann
8c103be876 simplify the crypto setup constructors 2018-11-10 17:01:13 +07:00
Marten Seemann
c2aac727b9 implement the original_connection_id transport parameter 2018-11-10 16:41:11 +07:00
Marten Seemann
6da4ef356f rename the initial stream limit transport parameters 2018-11-08 16:21:26 +07:00
Marten Seemann
f8612cda2c renumber the transport parameters 2018-11-08 16:19:45 +07:00
Marten Seemann
c302d8ff81 check the validity of transport parameters when unmarshalling 2018-11-05 15:37:22 +07:00
Marten Seemann
8cdb903a1c Merge pull request #1584 from lucas-clemente/varint-transport-parameters
use varints for numeric transport parameters
2018-11-05 15:30:14 +07:00
Marten Seemann
66a72a1199 use varints for numeric transport parameters 2018-11-05 12:33:32 +07:00
Marten Seemann
022189dfda rename the RST_STREAM frame to RESET_STREAM frame 2018-11-04 12:26:02 +07:00
Marten Seemann
2eed03c747 remove the header parameter for parsing frames
It was only needed for parsing STOP_WAITING frames.
2018-11-03 09:23:22 +07:00
Marten Seemann
dbbbfd955e move tracking of skipped packets to the packet number generator 2018-11-02 17:14:31 +07:00
Marten Seemann
c81cd92daf return the packet number length when peek a new packet number 2018-11-02 17:14:31 +07:00
Marten Seemann
ebbf839fa4 move the packet number generator to the ackhandler package 2018-11-02 17:14:31 +07:00
Marten Seemann
0fac716274 fix go routine leak in crypto setup test 2018-11-02 16:46:57 +07:00
Marten Seemann
257c4732c3 Merge pull request #1566 from lucas-clemente/better-stream-helpers
simplify the streamsMap by using the stream helper functions
2018-11-01 16:22:20 +07:00
Marten Seemann
2bfe8d0b77 Merge pull request #1568 from lucas-clemente/close-frames
implement changes to the CONNECTION_CLOSE frame
2018-11-01 15:51:14 +07:00
Marten Seemann
5768b492d7 introduce a type for unidirctional and bidirectional streams 2018-11-01 15:50:47 +07:00
Marten Seemann
4e87fb4456 Merge pull request #1565 from lucas-clemente/fix-1449
split the flow control transport parameters
2018-11-01 15:50:13 +07:00
Marten Seemann
716e8f2d0a remove the error return value from wire.Header.GetLength
Using an invalid packet number length would error on Header.Write(), so
it's not necessary to check this on GetLength().
2018-11-01 13:49:36 +07:00
Marten Seemann
9981026839 split the flow control transport parameters 2018-11-01 13:09:29 +07:00
Marten Seemann
73ac6b14bf implement changes to the CONNECTION_CLOSE frame 2018-10-31 11:21:51 +07:00
Marten Seemann
14a4464266 implement some stream ID helper functions 2018-10-30 12:52:48 +07:00
Marten Seemann
a1acfc3045 rename {Stream,Connection}FlowControlWindow to InitialMax{Stream}Data 2018-10-30 12:52:42 +07:00
Marten Seemann
74c5e9a26c move the definition of transport parameter IDs 2018-10-30 10:37:33 +07:00
Marten Seemann
3266e36811 drop support for gQUIC 2018-10-30 10:20:39 +07:00
Marten Seemann
1227dc8a24 remove the handshakeCompleteChan from the TLS crypto setup
In TLS, we know that the handshake completed when RunHandshake() returns.
2018-10-29 17:33:06 +07:00
Marten Seemann
06f96f4b6e wait until the Handshake() go routine returned before returning Close() 2018-10-29 15:05:58 +07:00
Marten Seemann
4a326ad00a implement closing of the TLS crypto setup
When the crypto setup is closed, the go rounine running the
qtls.Handshake() needs to return.
2018-10-29 15:05:58 +07:00
Marten Seemann
b63c81f0bf try decrypting undecryptable packets when the encryption level changes
There's no need to do this asynchronously any more when using TLS.
2018-10-26 17:10:00 +07: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
2dbc29a5bd fix error handling in the TLS crypto setup
There are two ways that an error can occur during the handshake:
1. as a return value from qtls.Handshake()
2. when new data is passed to the crypto setup via HandleData()
We need to make sure that the RunHandshake() as well as HandleData()
both return if an error occurs at any step during the handshake.
2018-10-26 16:18:53 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
5102294991 use separate chans to signal handshake events and handshake completion 2018-10-26 16:11:25 +07:00
Marten Seemann
3516780264 change the label and the context of HKDF-Expand-Label
This now uses the draft-14 test vectors from the QUIC WG wiki.
2018-10-26 16:11:25 +07:00
Marten Seemann
99c5d0df25 rename qhkdfExpand to hkdfExpandLabel, add hash parameter 2018-10-26 16:11:25 +07:00
Marten Seemann
454a01b2a0 introduce the IETF QUIC encryption levels 2018-10-26 16:11:25 +07:00
Marten Seemann
d2a52a1433 implement parsing, writing and logging of CRYPTO frames 2018-10-26 16:11:25 +07:00
Marten Seemann
a97536913b Merge pull request #1553 from lucas-clemente/unique-transport-parameters
check that every transport parameter is sent at most once
2018-10-25 10:15:44 +07:00
Marten Seemann
a7f94d89b6 only allow a single retry 2018-10-24 23:48:33 +07:00
Marten Seemann
74952a4331 check that every transport parameter is sent at most once 2018-10-24 23:33:37 +07:00
Marten Seemann
fbc3041e4d add logging for skipped packet numbers 2018-10-14 21:39:18 +01:00
Marten Seemann
225106b58c Merge pull request #1540 from lucas-clemente/packet-packer-tests
improve the packet packer tests
2018-10-09 10:30:24 +02:00
Lucas Clemente
05abe81c50 Merge pull request #1538 from ludweeg/ludweeg/assignOp
simplify `x = x <op> ...` to `x <op>= ...`
2018-10-09 09:59:06 +02:00
Marten Seemann
b000c32796 use a mock sealing manager in the packet packer tests 2018-10-06 06:49:37 +02:00
ludweeg
8ff3bf8ca6 simplify x = x <op> ... to x <op>= ... 2018-10-06 01:59:45 +03:00
Marten Seemann
c1f55ba910 use tls.Config.ServerName for the passing the hostname around 2018-10-02 14:47:18 -07:00
Marten Seemann
41808516c8 merge ACK and ACK_ECN into a single frame 2018-09-27 12:11:52 -06:00
Marten Seemann
1f9b59693c Merge pull request #1522 from lucas-clemente/hkdf
remove dependency on mint for HKDF
2018-09-20 14:13:51 -04:00