From 17c5147aa43b50381f2a7ac57608b3e3056cbfda Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Tue, 8 Nov 2016 16:32:13 +0700 Subject: [PATCH] add version to inchoate CHLO --- handshake/crypto_setup_client.go | 5 +++++ handshake/crypto_setup_client_test.go | 2 ++ 2 files changed, 7 insertions(+) diff --git a/handshake/crypto_setup_client.go b/handshake/crypto_setup_client.go index c85690264..688f3b000 100644 --- a/handshake/crypto_setup_client.go +++ b/handshake/crypto_setup_client.go @@ -2,6 +2,7 @@ package handshake import ( "bytes" + "encoding/binary" "io" "github.com/lucas-clemente/quic-go/crypto" @@ -82,6 +83,10 @@ func (h *cryptoSetupClient) getInchoateCHLOValues() map[Tag][]byte { tags[TagPDMD] = []byte("X509") tags[TagPAD] = bytes.Repeat([]byte("0"), protocol.ClientHelloMinimumSize) + versionTag := make([]byte, 4, 4) + binary.LittleEndian.PutUint32(versionTag, protocol.VersionNumberToTag(h.version)) + tags[TagVER] = versionTag + return tags } diff --git a/handshake/crypto_setup_client_test.go b/handshake/crypto_setup_client_test.go index c00996f78..5b8e54b74 100644 --- a/handshake/crypto_setup_client_test.go +++ b/handshake/crypto_setup_client_test.go @@ -12,6 +12,7 @@ var _ = Describe("Crypto setup", func() { BeforeEach(func() { cs = cryptoSetupClient{ cryptoStream: &mockStream{}, + version: protocol.Version36, } }) @@ -20,6 +21,7 @@ var _ = Describe("Crypto setup", func() { tags := cs.getInchoateCHLOValues() Expect(tags).To(HaveKey(TagSNI)) Expect(tags[TagPDMD]).To(Equal([]byte("X509"))) + Expect(tags[TagVER]).To(Equal([]byte("Q036"))) }) It("is longer than the miminum client hello size", func() {