github.com/danielpfeifer02/quic-go-prio-packs@v0.41.0-28/internal/qtls/qtls_test.go (about)

     1  package qtls
     2  
     3  import (
     4  	"crypto/tls"
     5  
     6  	"github.com/danielpfeifer02/quic-go-prio-packs/internal/protocol"
     7  
     8  	. "github.com/onsi/ginkgo/v2"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("interface go crypto/tls", func() {
    13  	It("converts to tls.EncryptionLevel", func() {
    14  		Expect(ToTLSEncryptionLevel(protocol.EncryptionInitial)).To(Equal(tls.QUICEncryptionLevelInitial))
    15  		Expect(ToTLSEncryptionLevel(protocol.EncryptionHandshake)).To(Equal(tls.QUICEncryptionLevelHandshake))
    16  		Expect(ToTLSEncryptionLevel(protocol.Encryption1RTT)).To(Equal(tls.QUICEncryptionLevelApplication))
    17  		Expect(ToTLSEncryptionLevel(protocol.Encryption0RTT)).To(Equal(tls.QUICEncryptionLevelEarly))
    18  	})
    19  
    20  	It("converts from tls.EncryptionLevel", func() {
    21  		Expect(FromTLSEncryptionLevel(tls.QUICEncryptionLevelInitial)).To(Equal(protocol.EncryptionInitial))
    22  		Expect(FromTLSEncryptionLevel(tls.QUICEncryptionLevelHandshake)).To(Equal(protocol.EncryptionHandshake))
    23  		Expect(FromTLSEncryptionLevel(tls.QUICEncryptionLevelApplication)).To(Equal(protocol.Encryption1RTT))
    24  		Expect(FromTLSEncryptionLevel(tls.QUICEncryptionLevelEarly)).To(Equal(protocol.Encryption0RTT))
    25  	})
    26  
    27  	Context("setting up a tls.Config for the client", func() {
    28  		It("sets up a session cache if there's one present on the config", func() {
    29  			csc := tls.NewLRUClientSessionCache(1)
    30  			conf := &tls.QUICConfig{TLSConfig: &tls.Config{ClientSessionCache: csc}}
    31  			SetupConfigForClient(conf, nil, nil)
    32  			Expect(conf.TLSConfig.ClientSessionCache).ToNot(BeNil())
    33  			Expect(conf.TLSConfig.ClientSessionCache).ToNot(Equal(csc))
    34  		})
    35  
    36  		It("doesn't set up a session cache if there's none present on the config", func() {
    37  			conf := &tls.QUICConfig{TLSConfig: &tls.Config{}}
    38  			SetupConfigForClient(conf, nil, nil)
    39  			Expect(conf.TLSConfig.ClientSessionCache).To(BeNil())
    40  		})
    41  	})
    42  
    43  	Context("setting up a tls.Config for the server", func() {
    44  		It("sets the minimum TLS version to TLS 1.3", func() {
    45  			orig := &tls.Config{MinVersion: tls.VersionTLS12}
    46  			conf := &tls.QUICConfig{TLSConfig: orig}
    47  			SetupConfigForServer(conf, false, nil, nil)
    48  			Expect(conf.TLSConfig.MinVersion).To(BeEquivalentTo(tls.VersionTLS13))
    49  			// check that the original config wasn't modified
    50  			Expect(orig.MinVersion).To(BeEquivalentTo(tls.VersionTLS12))
    51  		})
    52  	})
    53  })