uquic/internal/qtls/cipher_suite_test.go
Gaukas Wang 05c12945b8
fix: build error after sync
Signed-off-by: Gaukas Wang <i@gaukas.wang>
2024-04-23 23:20:14 -06:00

50 lines
1.3 KiB
Go

package qtls
import (
"fmt"
"net"
"github.com/refraction-networking/uquic/internal/testdata"
tls "github.com/refraction-networking/utls"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("Setting the Cipher Suite", func() {
for _, cs := range []uint16{tls.TLS_AES_128_GCM_SHA256, tls.TLS_CHACHA20_POLY1305_SHA256, tls.TLS_AES_256_GCM_SHA384} {
cs := cs
It(fmt.Sprintf("selects %s", tls.CipherSuiteName(cs)), func() {
reset := SetCipherSuite(cs)
defer reset()
ln, err := tls.Listen("tcp4", "localhost:0", testdata.GetTLSConfig())
Expect(err).ToNot(HaveOccurred())
defer ln.Close()
done := make(chan struct{})
go func() {
defer GinkgoRecover()
defer close(done)
conn, err := ln.Accept()
Expect(err).ToNot(HaveOccurred())
_, err = conn.Read(make([]byte, 10))
Expect(err).ToNot(HaveOccurred())
Expect(conn.(*tls.Conn).ConnectionState().CipherSuite).To(Equal(cs))
}()
conn, err := tls.Dial(
"tcp4",
fmt.Sprintf("localhost:%d", ln.Addr().(*net.TCPAddr).Port),
&tls.Config{RootCAs: testdata.GetRootCA()},
)
Expect(err).ToNot(HaveOccurred())
_, err = conn.Write([]byte("foobar"))
Expect(err).ToNot(HaveOccurred())
Expect(conn.ConnectionState().CipherSuite).To(Equal(cs))
Expect(conn.Close()).To(Succeed())
Eventually(done).Should(BeClosed())
})
}
})