Commit graph

64 commits

Author SHA1 Message Date
Marten Seemann
3266e36811 drop support for gQUIC 2018-10-30 10:20:39 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
302d2a1715 don't use trial decryption for IETF QUIC 2018-03-31 14:29:44 +07:00
Marten Seemann
2fbc994d29 move the unencrypted STREAM frame check from the unpacker to the session 2018-03-31 14:29:44 +07:00
Marten Seemann
21b608daac move frame parsing to the wire package 2018-03-25 18:07:44 +02:00
Marten Seemann
de4157f9ad implement parsing and writing of STREAM_ID_BLOCKED frames 2018-01-04 17:02:14 +07:00
Marten Seemann
5afe35328a implement parsing and writing of MAX_STREAM_ID frames 2018-01-04 17:02:10 +07:00
Marten Seemann
40650d93f0 add an application-defined error type, for RST_STREAM and STOP_SENDING 2017-12-15 16:21:09 +07:00
Marten Seemann
69998c19cb add the offset field to the BLOCKED and STREAM_BLOCKED frames
The value is not yet set, but parsing and writing works.
2017-12-14 19:00:06 +07:00
Marten Seemann
a6e44f3bfc implement parsing and writing of the STOP_SENDING frame 2017-12-13 17:58:50 +07:00
Marten Seemann
d7ceebd644 implement parsing and writing of the new ACK frame 2017-12-08 09:35:55 +07:00
Marten Seemann
11f746a183 implement parsing and writing of the new STREAM frames 2017-12-08 09:20:47 +07:00
Marten Seemann
1a515d1371 implement the new variable integer length frame types 2017-12-08 09:18:54 +07:00
Marten Seemann
759b0d87b1 refactor packet unpacking
This replaces version.UsesMaxDataFrame by versoin.UsesIETFFrameFormat.
That way, we can have two separate code paths in the unpacker to unpack
either gQUIC frames or IETF frames.
2017-12-08 09:18:54 +07:00
Marten Seemann
9f1eb62860 implement the IETF draft BLOCKED and STREAM_BLOCKED frames 2017-11-04 15:22:14 +07:00
Marten Seemann
0f1f1c8d41 implement the MAX_DATA and MAX_STREAM_DATA frames
For gQUIC WINDOW_UPDATEs are converted to MAX_DATA and MAX_STREAM_DATA,
respectively.
2017-11-04 15:22:14 +07:00
Marten Seemann
ccb2e9a2df remove check for CONGESTION_FEEDBACK in the packet unpacker
CONGESTION_FEEDBACK was reserved for future use in gQUIC, but has never
actually been implemented. It won't make it to IETF QUIC, so we don't
need to check for it. Note that we'd still reject a CONGESTION_FEEDBACK
frame, since we're rejecting any unknown frame type.
2017-11-04 15:22:14 +07:00
Marten Seemann
f662822486 use stream 0 for the crypto stream when using TLS 2017-11-04 15:22:07 +07:00
Marten Seemann
aba1dd13ba only use little endian byte order for gQUIC 37 and 38
That way, when adding new non-gQUIC versions, they will use big endian.
2017-11-02 16:46:22 +07:00
Marten Seemann
4f86995e48 encrypt unprotected packets with a connection-dependent key 2017-10-27 17:35:08 +07:00
Marten Seemann
4556ad01e5 use the new packet header for connections using TLS 2017-10-27 16:54:47 +07:00
Marten Seemann
e729701a94 drop support for version 36 2017-09-25 20:07:34 +07:00
Marten Seemann
e603715949 make handshake and crypto internal packages 2017-09-21 11:52:21 +07:00
Marten Seemann
f1ada87dcf make the protocol package internal 2017-08-30 00:19:44 +07:00
Marten Seemann
ed522ebbce make wire an internal package 2017-08-29 23:51:56 +07:00
Marten Seemann
1794636220 more the PublicHeader to the wire package 2017-08-29 23:45:38 +07:00
Marten Seemann
88afad8722 rename package frames to wire 2017-08-29 23:27:15 +07:00
Marten Seemann
3c223b22a2
include peer perspective in nullAEAD
ref #375
2017-04-27 18:05:24 +07:00
Marten Seemann
2903f9b238
return a lambda to for sealing a packet in the CryptoSetup 2017-03-22 16:52:00 +07:00
Marten Seemann
28c115fee1
drop support for QUIC 34
fixes #368
2017-03-19 20:57:28 +07:00
Marten Seemann
0c20f5e9b3
return the encryption level used for Sealing 2017-02-25 08:27:14 +07:00
Marten Seemann
a97faf0bea
reject unencrypted stream data on all streams except stream 1
fixes #440
2017-02-25 08:27:14 +07:00
Marten Seemann
f88cbd801b
store the encryption level in the unpacked packet 2017-02-25 08:27:14 +07:00
Marten Seemann
a972c7a21e
return the encryption level of a packet when decrypting it 2017-02-25 08:27:08 +07:00
Marten Seemann
5bddd84fae
allow inter-frame padding
fixes #416
2017-02-20 17:19:20 +07:00
Lucas Clemente
a4d4506f31 remove entropy from packet unpacker and session 2016-09-01 20:26:31 +02:00
Lucas Clemente
3c2148981f remove entropy from StopWaitingFrame 2016-09-01 20:26:31 +02:00
Lucas Clemente
b032a07f70 remove ackhandlerlegacy and frames.AckFrameLegacy 2016-09-01 20:26:31 +02:00
Marten Seemann
a8764d923e remove version 32 from tests
ref #215
2016-09-01 12:20:18 +02:00
Marten Seemann
8b845fada9 make PublicHeader public 2016-08-04 15:45:11 +07:00
Lucas Clemente
0e05534909 improve main package test coverage
ref #241
2016-08-02 11:49:25 +02:00
Lucas Clemente
daa328460f use in-place decryption when unpacking 2016-07-26 18:33:48 +02:00
Lucas Clemente
d5255a4075 update AEADs to allow in-place encryption and decryption
ref #217
2016-07-26 15:13:15 +02:00
Marten Seemann
ef194015de use wrapped legacy ACK frame
ref #55
2016-07-26 12:30:48 +07:00
Marten Seemann
288cb9e143 rename AckFrame to AckFrameLegacy 2016-06-21 19:51:26 +07:00
Marten Seemann
3ba8ec73d8 don't read private header for QUIC Version >= 34
ref #55
2016-06-11 10:44:09 +07:00
Marten Seemann
581dc8a079 throw a MissingPayload error when unpacking packets with no frames
fixes #175
2016-06-10 10:36:34 +07:00
Lucas Clemente
240946dfde replace version number literals with constants to make grepping easier 2016-06-03 11:09:48 +02:00
Lucas Clemente
8fa3e62de9 implement parsing and writing of GOAWAY frames 2016-05-31 19:22:27 +02:00
Lucas Clemente
dc2a14a5f7 add error code string representation to QuicError.Error 2016-05-17 00:31:18 +02:00