From 57b144bdef1fb49b944691095000e8a309b1b96a Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Mon, 18 Apr 2016 12:38:41 +0200 Subject: [PATCH] fix pending cryptosetup tests --- handshake/crypto_setup_test.go | 42 +++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/handshake/crypto_setup_test.go b/handshake/crypto_setup_test.go index 5da936ad0..7fc47dc56 100644 --- a/handshake/crypto_setup_test.go +++ b/handshake/crypto_setup_test.go @@ -65,6 +65,23 @@ func mockKeyDerivation(forwardSecure bool, sharedSecret, nonces []byte, connID p return &mockAEAD{forwardSecure: forwardSecure}, nil } +type mockStream struct { + dataToRead bytes.Buffer + dataWritten bytes.Buffer +} + +func (s *mockStream) Read(p []byte) (int, error) { + return s.dataToRead.Read(p) +} + +func (s *mockStream) ReadByte() (byte, error) { + return s.dataToRead.ReadByte() +} + +func (s *mockStream) Write(p []byte) (int, error) { + return s.dataWritten.Write(p) +} + var _ = Describe("Crypto setup", func() { var ( kex *mockKEX @@ -72,15 +89,17 @@ var _ = Describe("Crypto setup", func() { scfg *ServerConfig cs *CryptoSetup buf *bytes.Buffer + stream *mockStream ) BeforeEach(func() { + stream = &mockStream{} buf = &bytes.Buffer{} kex = &mockKEX{} signer = &mockSigner{} scfg = NewServerConfig(kex, signer) v := protocol.SupportedVersions[len(protocol.SupportedVersions)-1] - cs = NewCryptoSetup(protocol.ConnectionID(42), v, scfg, nil) + cs = NewCryptoSetup(protocol.ConnectionID(42), v, scfg, stream) cs.keyDerivation = mockKeyDerivation }) @@ -123,18 +142,19 @@ var _ = Describe("Crypto setup", func() { Expect(cs.forwardSecureAEAD).ToNot(BeNil()) }) - PIt("recognizes SCID", func() { - // WriteHandshakeMessage(buf, TagCHLO, map[Tag][]byte{TagSCID: scfg.ID}) - // response, err := cs.HandleCryptoMessage(buf.Bytes()) - // Expect(err).ToNot(HaveOccurred()) - // Expect(response).To(HavePrefix("SHLO")) + It("handles long handshake", func() { + WriteHandshakeMessage(&stream.dataToRead, TagCHLO, map[Tag][]byte{}) + WriteHandshakeMessage(&stream.dataToRead, TagCHLO, map[Tag][]byte{TagSCID: scfg.ID}) + cs.HandleCryptoStream() + Expect(stream.dataWritten.Bytes()).To(HavePrefix("REJ")) + Expect(stream.dataWritten.Bytes()).To(ContainSubstring("SHLO")) }) - PIt("recognizes missing SCID", func() { - // WriteHandshakeMessage(buf, TagCHLO, map[Tag][]byte{}) - // response, err := cs.HandleCryptoMessage(buf.Bytes()) - // Expect(err).ToNot(HaveOccurred()) - // Expect(response).To(HavePrefix("REJ")) + It("handles 0-RTT handshake", func() { + WriteHandshakeMessage(&stream.dataToRead, TagCHLO, map[Tag][]byte{TagSCID: scfg.ID}) + cs.HandleCryptoStream() + Expect(stream.dataWritten.Bytes()).To(HavePrefix("SHLO")) + Expect(stream.dataWritten.Bytes()).ToNot(ContainSubstring("REJ")) }) })