diff --git a/handshake/server_config_client.go b/handshake/server_config_client.go index ed4cfe380..174328c80 100644 --- a/handshake/server_config_client.go +++ b/handshake/server_config_client.go @@ -10,6 +10,7 @@ import ( ) type serverConfigClient struct { + raw []byte ID []byte obit []byte expiry time.Time @@ -29,7 +30,7 @@ func parseServerConfig(data []byte) (*serverConfigClient, error) { return nil, errMessageNotServerConfig } - scfg := &serverConfigClient{} + scfg := &serverConfigClient{raw: data} err = scfg.parseValues(tagMap) if err != nil { return nil, err @@ -116,3 +117,7 @@ func (s *serverConfigClient) parseValues(tagMap map[Tag][]byte) error { return nil } + +func (s *serverConfigClient) Get() []byte { + return s.raw +} diff --git a/handshake/server_config_client_test.go b/handshake/server_config_client_test.go index 0367be658..967f06761 100644 --- a/handshake/server_config_client_test.go +++ b/handshake/server_config_client_test.go @@ -22,6 +22,23 @@ var _ = Describe("Server Config", func() { tagMap[TagEXPY] = bytes.Repeat([]byte{0}, 8) }) + It("returns the parsed server config", func() { + tagMap[TagSCID] = []byte{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf} + b := &bytes.Buffer{} + WriteHandshakeMessage(b, TagSCFG, tagMap) + scfg, err := parseServerConfig(b.Bytes()) + Expect(err).ToNot(HaveOccurred()) + Expect(scfg.ID).To(Equal(tagMap[TagSCID])) + }) + + It("saves the raw server config", func() { + b := &bytes.Buffer{} + WriteHandshakeMessage(b, TagSCFG, tagMap) + scfg, err := parseServerConfig(b.Bytes()) + Expect(err).ToNot(HaveOccurred()) + Expect(scfg.raw).To(Equal(b.Bytes())) + }) + Context("parsing the server config", func() { It("rejects a handshake message with the wrong message tag", func() { var serverConfig bytes.Buffer