diff --git a/internal/handshake/interface.go b/internal/handshake/interface.go index 29a5a6f8..2c6d32b4 100644 --- a/internal/handshake/interface.go +++ b/internal/handshake/interface.go @@ -24,7 +24,7 @@ type Sealer interface { // A tlsExtensionHandler sends and received the QUIC TLS extension. type tlsExtensionHandler interface { GetExtensions(msgType uint8) []qtls.Extension - ReceivedExtensions(msgType uint8, exts []qtls.Extension) error + ReceivedExtensions(msgType uint8, exts []qtls.Extension) TransportParameters() <-chan []byte } diff --git a/internal/handshake/tls_extension_handler.go b/internal/handshake/tls_extension_handler.go index c2e6829c..73dba9b2 100644 --- a/internal/handshake/tls_extension_handler.go +++ b/internal/handshake/tls_extension_handler.go @@ -34,10 +34,10 @@ func (h *extensionHandler) GetExtensions(msgType uint8) []qtls.Extension { }} } -func (h *extensionHandler) ReceivedExtensions(msgType uint8, exts []qtls.Extension) error { +func (h *extensionHandler) ReceivedExtensions(msgType uint8, exts []qtls.Extension) { if (h.perspective == protocol.PerspectiveClient && messageType(msgType) != typeEncryptedExtensions) || (h.perspective == protocol.PerspectiveServer && messageType(msgType) != typeClientHello) { - return nil + return } var data []byte @@ -49,7 +49,6 @@ func (h *extensionHandler) ReceivedExtensions(msgType uint8, exts []qtls.Extensi } h.paramsChan <- data - return nil } func (h *extensionHandler) TransportParameters() <-chan []byte { diff --git a/internal/handshake/tls_extension_handler_test.go b/internal/handshake/tls_extension_handler_test.go index c17f1260..acbca466 100644 --- a/internal/handshake/tls_extension_handler_test.go +++ b/internal/handshake/tls_extension_handler_test.go @@ -52,7 +52,7 @@ var _ = Describe("TLS Extension Handler, for the server", func() { It("sends the extension on the channel", func() { go func() { defer GinkgoRecover() - Expect(handlerServer.ReceivedExtensions(uint8(typeClientHello), chExts)).To(Succeed()) + handlerServer.ReceivedExtensions(uint8(typeClientHello), chExts) }() var data []byte @@ -63,7 +63,7 @@ var _ = Describe("TLS Extension Handler, for the server", func() { It("sends nil on the channel if the extension is missing", func() { go func() { defer GinkgoRecover() - Expect(handlerServer.ReceivedExtensions(uint8(typeClientHello), nil)).To(Succeed()) + handlerServer.ReceivedExtensions(uint8(typeClientHello), nil) }() var data []byte @@ -75,7 +75,7 @@ var _ = Describe("TLS Extension Handler, for the server", func() { go func() { defer GinkgoRecover() exts := []qtls.Extension{{Type: 0x1337, Data: []byte("invalid")}} - Expect(handlerServer.ReceivedExtensions(uint8(typeClientHello), exts)).To(Succeed()) + handlerServer.ReceivedExtensions(uint8(typeClientHello), exts) }() var data []byte @@ -86,7 +86,7 @@ var _ = Describe("TLS Extension Handler, for the server", func() { It("ignores extensions that are not sent with the ClientHello", func() { go func() { defer GinkgoRecover() - Expect(handlerServer.ReceivedExtensions(uint8(typeFinished), chExts)).To(Succeed()) + handlerServer.ReceivedExtensions(uint8(typeFinished), chExts) }() Consistently(handlerServer.TransportParameters()).ShouldNot(Receive()) @@ -121,7 +121,7 @@ var _ = Describe("TLS Extension Handler, for the server", func() { It("sends the extension on the channel", func() { go func() { defer GinkgoRecover() - Expect(handlerClient.ReceivedExtensions(uint8(typeEncryptedExtensions), chExts)).To(Succeed()) + handlerClient.ReceivedExtensions(uint8(typeEncryptedExtensions), chExts) }() var data []byte @@ -132,7 +132,7 @@ var _ = Describe("TLS Extension Handler, for the server", func() { It("sends nil on the channel if the extension is missing", func() { go func() { defer GinkgoRecover() - Expect(handlerClient.ReceivedExtensions(uint8(typeEncryptedExtensions), nil)).To(Succeed()) + handlerClient.ReceivedExtensions(uint8(typeEncryptedExtensions), nil) }() var data []byte @@ -144,7 +144,7 @@ var _ = Describe("TLS Extension Handler, for the server", func() { go func() { defer GinkgoRecover() exts := []qtls.Extension{{Type: 0x1337, Data: []byte("invalid")}} - Expect(handlerClient.ReceivedExtensions(uint8(typeEncryptedExtensions), exts)).To(Succeed()) + handlerClient.ReceivedExtensions(uint8(typeEncryptedExtensions), exts) }() var data []byte @@ -155,7 +155,7 @@ var _ = Describe("TLS Extension Handler, for the server", func() { It("ignores extensions that are not sent with the EncryptedExtensions", func() { go func() { defer GinkgoRecover() - Expect(handlerClient.ReceivedExtensions(uint8(typeFinished), chExts)).To(Succeed()) + handlerClient.ReceivedExtensions(uint8(typeFinished), chExts) }() Consistently(handlerClient.TransportParameters()).ShouldNot(Receive()) diff --git a/vendor/github.com/marten-seemann/qtls/13.go b/vendor/github.com/marten-seemann/qtls/13.go index 90ae05d8..d16cfc15 100644 --- a/vendor/github.com/marten-seemann/qtls/13.go +++ b/vendor/github.com/marten-seemann/qtls/13.go @@ -862,16 +862,15 @@ func getCertsFromEntries(certEntries []certificateEntry) [][]byte { return certs } -func (hs *clientHandshakeState) processEncryptedExtensions(ee *encryptedExtensionsMsg) error { +func (hs *clientHandshakeState) processEncryptedExtensions(ee *encryptedExtensionsMsg) { c := hs.c if ee.alpnProtocol != "" { c.clientProtocol = ee.alpnProtocol c.clientProtocolFallback = false } if hs.c.config.ReceivedExtensions != nil { - return hs.c.config.ReceivedExtensions(typeEncryptedExtensions, ee.additionalExtensions) + hs.c.config.ReceivedExtensions(typeEncryptedExtensions, ee.additionalExtensions) } - return nil } func verifyPeerHandshakeSignature( @@ -1037,9 +1036,7 @@ func (hs *clientHandshakeState) doTLS13Handshake() error { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(encryptedExtensions, msg) } - if err := hs.processEncryptedExtensions(encryptedExtensions); err != nil { - return err - } + hs.processEncryptedExtensions(encryptedExtensions) hs.keySchedule.write(encryptedExtensions.marshal()) // PSKs are not supported, so receive Certificate message. diff --git a/vendor/github.com/marten-seemann/qtls/common.go b/vendor/github.com/marten-seemann/qtls/common.go index a8eee83d..7e4ae22e 100644 --- a/vendor/github.com/marten-seemann/qtls/common.go +++ b/vendor/github.com/marten-seemann/qtls/common.go @@ -631,7 +631,7 @@ type Config struct { // Currently only implemented for the ClientHello message (sent by the // client) and for the EncryptedExtensions message (sent by the server). // Only valid for TLS 1.3. - ReceivedExtensions func(handshakeMessageType uint8, exts []Extension) error + ReceivedExtensions func(handshakeMessageType uint8, exts []Extension) serverInitOnce sync.Once // guards calling (*Config).serverInit diff --git a/vendor/github.com/marten-seemann/qtls/handshake_server.go b/vendor/github.com/marten-seemann/qtls/handshake_server.go index 38004fe7..e34c2221 100644 --- a/vendor/github.com/marten-seemann/qtls/handshake_server.go +++ b/vendor/github.com/marten-seemann/qtls/handshake_server.go @@ -261,10 +261,7 @@ Curves: hs.hello.compressionMethod = compressionNone } else { if hs.c.config.ReceivedExtensions != nil { - if err := hs.c.config.ReceivedExtensions(typeClientHello, hs.clientHello.additionalExtensions); err != nil { - c.sendAlert(alertInternalError) - return false, err - } + hs.c.config.ReceivedExtensions(typeClientHello, hs.clientHello.additionalExtensions) } hs.hello = new(serverHelloMsg) hs.hello13Enc = new(encryptedExtensionsMsg) diff --git a/vendor/vendor.json b/vendor/vendor.json index 9a41e95d..551b1317 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -45,9 +45,9 @@ "revisionTime": "2018-11-11T22:04:28Z" }, { - "checksumSHA1": "9D0GoLWn+P00plU66qfLxFB1kNg=", + "checksumSHA1": "Nj31pb7U27uPwTQ6z0DTgbgF9eg=", "path": "github.com/marten-seemann/qtls", - "revision": "646330209b76bfdcdc054a863468f473e9d0a7af", + "revision": "591c71538704125b0b189f4cd3c0e61485dd6ef7", "revisionTime": "2019-01-10T16:28:36Z" }, {