create ServerConfigs with random OBIT value

fixes #356
This commit is contained in:
Marten Seemann
2016-11-28 19:52:23 +07:00
parent 6602101288
commit 21c6a015de
2 changed files with 22 additions and 6 deletions

View File

@@ -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,

View File

@@ -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()))
})
})