Commit Graph

50 Commits

Author SHA1 Message Date
Lucas Clemente
eb7d812004 extract packet unpacking from session into packet_unpacker 2016-04-21 13:48:41 +02:00
Lucas Clemente
3b2d0efea5 simplify session by moving packet packing to separate class 2016-04-21 13:48:41 +02:00
Marten Seemann
4b0b8def8d move EntropyAccumulator to AckHandler package 2016-04-21 08:41:54 +07:00
Marten Seemann
c5d66fe5ff check ACK entropy before further handling of the ACK frame 2016-04-20 16:46:44 +07:00
Lucas Clemente
83416ab861 remove ack lock message 2016-04-19 15:23:42 +02:00
Marten Seemann
90cb792477 create a QuicError type 2016-04-19 15:54:18 +07:00
Marten Seemann
600d3805a2 send ConnectionCloseFrame as a response to unhandled frames 2016-04-19 15:12:02 +07:00
Marten Seemann
30998cef1f always send ACK frames together with Stream frames 2016-04-19 12:18:13 +07:00
Lucas Clemente
673f91ee63 accept NACKs, WINDOW_UPDATEs and BLOCKEDs, but don't handle them yet 2016-04-18 21:07:00 +02:00
Lucas Clemente
1fb937e7ef protect maps in Stream with mutexes 2016-04-18 17:00:18 +02:00
Lucas Clemente
9cbeb49d49 change AEAD interface to use byte slices, simplifying its usage 2016-04-18 14:37:34 +02:00
Lucas Clemente
dc4e3c73e4 remove Session.SendFrames 2016-04-18 14:10:22 +02:00
Lucas Clemente
e9967e990a use streams in example server 2016-04-18 14:09:29 +02:00
Lucas Clemente
c7bb7acaf8 add Session.NewStream 2016-04-18 14:01:52 +02:00
Lucas Clemente
07e7708506 change StreamCallback to include the session 2016-04-18 14:01:35 +02:00
Lucas Clemente
758fdeb3d3 change CryptoSetup to use streams 2016-04-18 11:03:49 +02:00
Marten Seemann
a0eac5f160 split large StreamFrames into multiple smaller ones before sending 2016-04-17 17:38:21 +07:00
Marten Seemann
a90c9ba173 add a Write method for Streams 2016-04-17 16:53:04 +07:00
Marten Seemann
1097698c4b send entropy in packets, validate entropy in received ACKs 2016-04-17 14:21:36 +07:00
Marten Seemann
922a2975e8 use PacketNumber type in ACK frame parsing, fix linter warnings 2016-04-17 13:58:38 +07:00
Marten Seemann
c69992cae4 parse RST_STREAM frames 2016-04-17 10:47:03 +07:00
Lucas Clemente
7480822230 reduce debug messages 2016-04-16 22:17:36 +02:00
Lucas Clemente
92c48d0976 simplify frame type switch, introduce temporary stream 1 offset variable 2016-04-16 22:10:57 +02:00
Marten Seemann
3eabb4a46c use Stream object in the Session 2016-04-17 00:19:23 +07:00
Marten Seemann
dc07d6144c only accept in-order packets, drop duplicates and out-of-order packets 2016-04-16 19:23:39 +07:00
Marten Seemann
79ba43bbdb move all frames to separate package 2016-04-16 18:34:16 +07:00
Lucas Clemente
91e3ac4f26 rename Handshake to CryptoSetup 2016-04-15 22:27:14 +02:00
Lucas Clemente
20b48c5432 move handshake handling and server config into handshake package 2016-04-15 22:24:42 +02:00
Lucas Clemente
a6549d0cc7 add debug output when sending packets 2016-04-15 20:40:43 +02:00
Marten Seemann
a2c4ebef19 add ConnctionClose frame handling 2016-04-16 01:10:30 +07:00
Marten Seemann
23f0d8d6e9 read the STOP_WAITING frame 2016-04-16 01:03:09 +07:00
Marten Seemann
2b7847a178 pass complete frame (including the type byte) to the ParseFrame() functions 2016-04-16 00:53:39 +07:00
Lucas Clemente
495bb0ef92 handle version Q030 properly 2016-04-15 19:01:14 +02:00
Lucas Clemente
052822aea5 send a body in the example server 2016-04-15 16:49:24 +02:00
Lucas Clemente
3c16e8c9ee introduce stream callback in session, move http2 stuff to main.go 2016-04-15 14:31:31 +02:00
Lucas Clemente
35a40ac6d8 rename GetCERTData to GetCertCompressed 2016-04-15 12:37:23 +02:00
Lucas Clemente
85eceb53bf fix some linter issues 2016-04-15 12:06:43 +02:00
Lucas Clemente
53d6e62c85 add support for PAD frames 2016-04-15 12:05:42 +02:00
Lucas Clemente
50a1f802f9 add basic http2 header reading 2016-04-15 12:01:26 +02:00
Marten Seemann
e223ed73e6 add very basic STOP_WAITING handling, return errors for unknown types 2016-04-15 16:48:54 +07:00
Marten Seemann
a5a7021fed basic ACK frame parsing 2016-04-15 16:43:46 +07:00
Marten Seemann
281706fda8 better check for frame types 2016-04-15 13:08:49 +07:00
Marten Seemann
9e87ee8ed9 detect different types of frames 2016-04-15 12:29:02 +07:00
Lucas Clemente
86b4ffdaaf use chacha20poly1305 instead of AES and include cert in key derivation
Unfortunately QUIC uses non-standard tag sizes with both AES-GCM and
Poly1305. Adopting AES-GCM seems much harder, so I changed it to
Chacha20Poly1305 and only made some slight changes to an existing algo.
This should probably be double-checked at some point.
2016-04-14 23:44:31 +02:00
Lucas Clemente
388fdf7399 decrease debug output 2016-04-14 20:40:20 +02:00
Lucas Clemente
1760bc3227 add key derivation and change AEAD in session, not working right now :( 2016-04-14 20:39:51 +02:00
Lucas Clemente
70531832af don't panic! 🎉 2016-04-14 20:04:04 +02:00
Lucas Clemente
0febba87ba move crypto handshake stuff to its own package 2016-04-14 19:50:04 +02:00
Lucas Clemente
04921c29af introduce ConnectionID type 2016-04-14 19:39:49 +02:00
Lucas Clemente
09879ed4f7 move stuff from example server to new Session and SessionConfig classes 2016-04-14 17:56:31 +02:00