Commit Graph

93 Commits

Author SHA1 Message Date
Lucas Clemente
a2ef4d2dc8 change supported version to slice, since the order matters for the SHLO 2016-04-16 00:27:03 +02:00
Lucas Clemente
13c0445bb4 randomly generate the server config ID and check whether it matches 2016-04-16 00:09:50 +02:00
Lucas Clemente
06a4201d65 extract version negotiation into a separate function 2016-04-15 22:50:22 +02:00
Lucas Clemente
be33164dbf reduce debug logs 2016-04-15 22:43:46 +02:00
Lucas Clemente
c3a5b846cb pull some stuff from main.go into server.go 2016-04-15 22:40:53 +02:00
Lucas Clemente
14d3b03b44 more consistent filenames 2016-04-15 22:28:45 +02: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
30d5766598 improve version tests 2016-04-15 20:40:43 +02:00
Lucas Clemente
3e58bcfc69 change certificate to be valid for quic.clemente.io 2016-04-15 20:40:43 +02:00
Lucas Clemente
7acb3365d5 use dictionary to compress certificates 2016-04-15 20:40:43 +02:00
Lucas Clemente
a6549d0cc7 add debug output when sending packets 2016-04-15 20:40:43 +02:00
Lucas Clemente
24d2878a06 Merge pull request #6 from lucas-clemente/frames
Frames
2016-04-15 20:35:10 +02:00
Marten Seemann
a2c4ebef19 add ConnctionClose frame handling 2016-04-16 01:10:30 +07:00
Marten Seemann
4e5102216a add tests for ACK frame parsing 2016-04-16 01:03:24 +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
b6c9c9b6a4 introduce protocol/version.go and remove big endian functions 2016-04-15 18:46:39 +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
ec509fb98f add key derivation test 2016-04-15 12:44:31 +02:00
Lucas Clemente
35a40ac6d8 rename GetCERTData to GetCertCompressed 2016-04-15 12:37:23 +02:00
Lucas Clemente
bc88949ffb add a server config test 2016-04-15 12:34:01 +02:00
Lucas Clemente
2e1da961c5 add editorconfig 2016-04-15 12:13:33 +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
be7d3004b3 Merge pull request #5 from lucas-clemente/frames
Frames
2016-04-15 16:52:04 +07: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
8da53885fc split STREAM and ACK frames in seperate files 2016-04-15 12:34:23 +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
Lucas Clemente
49ccd0bb01 don't accept 0-byte connection IDs since we are a server 2016-04-14 17:56:31 +02:00
Marten Seemann
c0edd24a2e remove readNBytes func 2016-04-14 17:55:28 +07:00
Lucas Clemente
3d767401d0 introduce PacketNumber type & protocol package 2016-04-14 10:29:21 +02:00
Lucas Clemente
c6b3ce72eb Merge pull request #4 from lucas-clemente/aes-gcm
implement AES-GCM as AEAD
2016-04-14 10:10:05 +02:00
Lucas Clemente
8b7e2744da implement AES-GCM as AEAD 2016-04-14 09:56:43 +02:00
marten-seemann
3588f24ad4 Merge pull request #3 from marten-seemann/master
use Utils function to read / write data from the packet public header
2016-04-14 14:55:50 +07:00
Marten Seemann
55c6a51b45 send Version Negotiation Packet if the client uses the wrong QUIC version 2016-04-14 14:29:25 +07:00
Marten Seemann
703aad12c0 make WritePublicHeader set the VersionFlag and the ResetFlag 2016-04-14 14:28:16 +07:00
Marten Seemann
5b78f1613c add function to read and write uint32 big endians, use it for the QuicVersion 2016-04-14 13:35:25 +07:00