Commit Graph

1284 Commits

Author SHA1 Message Date
Marten Seemann
cc97a2fba4 print request body in example client 2017-01-14 18:58:47 +07:00
Marten Seemann
6dd297379b set EndStream header in HeadersFrame 2017-01-14 18:58:47 +07:00
Marten Seemann
db09de621c detect version downgrade attacks in the client crypto setup 2017-01-14 18:58:47 +07:00
Marten Seemann
b52204322f don’t modify version slice when finding the highest supported version
will be needed for detecting version downgrade attacks
2017-01-14 18:58:47 +07:00
Marten Seemann
1854279bb5 reject requests with an invalid request method 2017-01-14 18:58:46 +07:00
Marten Seemann
feec325083 validate HTTP headers and request scheme in RoundTripper 2017-01-14 18:58:46 +07:00
Marten Seemann
1061bd4492 reject requests with missing URL or Header in the RoundTripper 2017-01-14 18:58:46 +07:00
Marten Seemann
53706049c7 read connection parameters when receiving a SHLO 2017-01-14 18:58:46 +07:00
Marten Seemann
a587af079d improve the connection parameters manager for the client 2017-01-14 18:58:46 +07:00
Marten Seemann
64c4bede3e remove unnecessary loop from connection parameters manager 2017-01-14 18:58:45 +07:00
Marten Seemann
128bad04e5 add option to disable compresson to QuicRoundTripper 2017-01-14 18:58:45 +07:00
Marten Seemann
d028624f77 implement compressed requests and responses 2017-01-14 18:58:45 +07:00
Marten Seemann
edb34b1765 close the quic client on protocol errors in h2quic client 2017-01-14 18:58:45 +07:00
Marten Seemann
44271a8ec8 fix mutexes for writing requests in h2quic client 2017-01-14 18:58:45 +07:00
Marten Seemann
9790418eb7 only close the client once 2017-01-14 18:58:44 +07:00
Marten Seemann
ad7de3c99d fix flaky client test 2017-01-14 18:58:44 +07:00
Marten Seemann
6ece13f9ab add a better example client 2017-01-14 18:58:44 +07:00
Marten Seemann
40a6577dc3 implement a basic QUIC RoundTripper 2017-01-14 18:58:44 +07:00
Marten Seemann
c547ced3ce correctly read the hostname from a http.Request 2017-01-14 18:58:44 +07:00
Marten Seemann
14135798c0 compose a http.Response in h2quic client 2017-01-14 18:58:44 +07:00
Marten Seemann
0401b12f8a handle the header stream in the h2quic client 2017-01-14 18:58:43 +07:00
Marten Seemann
08c267431b implement closing the quic client with an error 2017-01-14 18:58:43 +07:00
Marten Seemann
c42262c2b3 implement a h2quic client that can send H2 requests 2017-01-14 18:58:43 +07:00
Marten Seemann
b9f9c2e429 save correct hostname in quic Client 2017-01-14 18:58:43 +07:00
Marten Seemann
3458514744 add a method to open new Streams to the client 2017-01-14 18:58:43 +07:00
Marten Seemann
a8bbe66d5c use a better mockStream in h2quic tests 2017-01-14 18:58:40 +07:00
Marten Seemann
a7afd72795 add a callback that is called when the crypto level changes 2017-01-14 18:54:18 +07:00
Marten Seemann
4130c3de32 send priority in H2 request headers
is required by Google’s QUIC implementation
2017-01-14 18:54:18 +07:00
Marten Seemann
dc05de3312 add a callback to client that is called after the version is negotiated 2017-01-14 18:54:18 +07:00
Marten Seemann
2377b3a111 fix detection when the QUIC version is negotiated 2017-01-14 18:54:18 +07:00
Marten Seemann
099e01f410 implement a basic request writer 2017-01-14 18:54:18 +07:00
Marten Seemann
16da08a440 add client functionality to the streamsMap 2017-01-14 18:54:15 +07:00
Marten Seemann
6cb48aad71 send correct version number in PublicHeader 2017-01-14 18:52:25 +07:00
Marten Seemann
a0bdf79b5b create an aeadChanged channel in the client crypto setup 2017-01-14 18:52:25 +07:00
Marten Seemann
9fc9522539 implement a HandshakeComplete method in the client crypto setup 2017-01-14 18:52:24 +07:00
Marten Seemann
f72fbc57a9 send connection parameters in CHLO 2017-01-14 18:52:24 +07:00
Marten Seemann
1ad3a85f5c fix flaky client tests 2017-01-14 18:52:24 +07:00
Marten Seemann
05c870ff6f ignore delayed version negotiation packets 2017-01-14 18:52:24 +07:00
Marten Seemann
1a830dbdb7 implement basic version negotiation 2017-01-14 18:52:24 +07:00
Marten Seemann
4b112c325a add tests for the Client 2017-01-14 18:52:23 +07:00
Marten Seemann
dde5ce465c enforce presence of version list in SHLO 2017-01-14 18:52:23 +07:00
Marten Seemann
2589a6eff9 reject unencrypted SHLOs 2017-01-14 18:52:23 +07:00
Marten Seemann
e19416a43b use server nonce in key derivation for initial encryption, if available 2017-01-14 18:52:23 +07:00
Marten Seemann
b8e11d6e67 improve tests for key derivation 2017-01-14 18:52:23 +07:00
Marten Seemann
fdd0fdf90d send KEXS and AEAD value in full client hello 2017-01-14 18:52:22 +07:00
Marten Seemann
63f2faec85 send common certificate sets in the client hello 2017-01-14 18:52:22 +07:00
Marten Seemann
44303fcd4b don’t panic if the certificate chain contains cached entries 2017-01-14 18:52:22 +07:00
Marten Seemann
a3dcac8239 implement certificate decompressing using common certificate sets 2017-01-14 18:52:22 +07:00
Marten Seemann
86da7dce81 send leaf certificate hash (XLCT) in client hello 2017-01-14 18:52:22 +07:00
Marten Seemann
11cb69d2ce optimize reading of diversification nonces from the PublicHeader 2017-01-14 18:52:22 +07:00