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