mirror of
https://github.com/refraction-networking/uquic.git
synced 2025-04-02 19:57:35 +03:00
50 lines
1.3 KiB
Go
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())
|
|
})
|
|
}
|
|
})
|