forked from quic-go/quic-go
@@ -28,6 +28,12 @@ func NewServerConfig(kex crypto.KeyExchange, signer crypto.Signer) (*ServerConfi
|
||||
if _, err = rand.Read(stkSecret); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
obit := make([]byte, 8)
|
||||
if _, err = rand.Read(obit); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
stkSource, err := crypto.NewStkSource(stkSecret)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -35,7 +41,7 @@ func NewServerConfig(kex crypto.KeyExchange, signer crypto.Signer) (*ServerConfi
|
||||
|
||||
return &ServerConfig{
|
||||
ID: id,
|
||||
obit: []byte{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7},
|
||||
obit: obit,
|
||||
kex: kex,
|
||||
signer: signer,
|
||||
stkSource: stkSource,
|
||||
|
||||
@@ -12,23 +12,33 @@ import (
|
||||
var _ = Describe("ServerConfig", func() {
|
||||
var (
|
||||
kex crypto.KeyExchange
|
||||
scfg *ServerConfig
|
||||
)
|
||||
|
||||
BeforeEach(func() {
|
||||
var err error
|
||||
kex, err = crypto.NewCurve25519KEX()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
scfg, err = NewServerConfig(kex, nil)
|
||||
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, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff})
|
||||
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()))
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user