Commit Graph

1270 Commits

Author SHA1 Message Date
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
Marten Seemann
4a88422d9f add workaround for incorrect public flag values sent by Google servers 2017-01-14 18:52:21 +07:00
Marten Seemann
420f5abcd7 log when certificate or server proof verification fails 2017-01-14 18:52:21 +07:00
Marten Seemann
46678abfa6 error on malformed version negotiation packets 2017-01-14 18:52:21 +07:00
Marten Seemann
d37380b7a5 detect unsupported versions when parsing version negotiation packet 2017-01-14 18:52:21 +07:00
Marten Seemann
5b97f0550c implement a function to find the highest supported version 2017-01-14 18:52:21 +07:00
Marten Seemann
1154d22218 parse version negotiation packets 2017-01-14 18:52:20 +07:00
Marten Seemann
7fa93c56af implement a proper Close method for the Client 2017-01-14 18:52:20 +07:00
Marten Seemann
de168addd5 don’t panic after sending a ConnectionClose 2017-01-14 18:52:20 +07:00
Marten Seemann
2131e8fa6d don’t send more than 3 CHLOs
makes sure that the server allows the client to make progress in the handshake
2017-01-14 18:52:20 +07:00
Marten Seemann
7f2e706908 increase CryptoParameterMaxLength 2017-01-14 18:52:20 +07:00
Marten Seemann
8161e1f4a1 simplify server proof verification function signature 2017-01-14 18:52:20 +07:00
Marten Seemann
6f5b2d308d simplify certificate verification in certManager 2017-01-14 18:52:19 +07:00
Marten Seemann
865aed07d8 verify certificate chain when receiving it, return correct errors 2017-01-14 18:52:19 +07:00
Marten Seemann
41c66f9a60 save parsed certificate chain in certManager 2017-01-14 18:52:19 +07:00