45 lines
1.4 KiB
Go
45 lines
1.4 KiB
Go
package handshake
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/lucas-clemente/quic-go/crypto"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("ServerConfig", func() {
|
|
var (
|
|
kex crypto.KeyExchange
|
|
)
|
|
|
|
BeforeEach(func() {
|
|
var err error
|
|
kex, err = crypto.NewCurve25519KEX()
|
|
Expect(err).NotTo(HaveOccurred())
|
|
})
|
|
|
|
It("generates a random ID and OBIT", func() {
|
|
scfg1, err := NewServerConfig(kex, nil)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
scfg2, err := NewServerConfig(kex, nil)
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(scfg1.ID).ToNot(Equal(scfg2.ID))
|
|
Expect(scfg1.obit).ToNot(Equal(scfg2.obit))
|
|
})
|
|
|
|
It("gets the proper binary representation", func() {
|
|
scfg, err := NewServerConfig(kex, nil)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
expected := bytes.NewBuffer([]byte{0x53, 0x43, 0x46, 0x47, 0x6, 0x0, 0x0, 0x0, 0x41, 0x45, 0x41, 0x44, 0x4, 0x0, 0x0, 0x0, 0x53, 0x43, 0x49, 0x44, 0x14, 0x0, 0x0, 0x0, 0x50, 0x55, 0x42, 0x53, 0x37, 0x0, 0x0, 0x0, 0x4b, 0x45, 0x58, 0x53, 0x3b, 0x0, 0x0, 0x0, 0x4f, 0x42, 0x49, 0x54, 0x43, 0x0, 0x0, 0x0, 0x45, 0x58, 0x50, 0x59, 0x4b, 0x0, 0x0, 0x0, 0x41, 0x45, 0x53, 0x47})
|
|
expected.Write(scfg.ID)
|
|
expected.Write([]byte{0x20, 0x0, 0x0})
|
|
expected.Write(kex.PublicKey())
|
|
expected.Write([]byte{0x43, 0x32, 0x35, 0x35})
|
|
expected.Write(scfg.obit)
|
|
expected.Write([]byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff})
|
|
Expect(scfg.Get()).To(Equal(expected.Bytes()))
|
|
})
|
|
})
|