require and generate source address tokens in crypto setup

fixes #121
This commit is contained in:
Lucas Clemente
2016-05-24 11:20:06 +02:00
parent e2254f1bbd
commit fa2e34d360
8 changed files with 172 additions and 40 deletions

View File

@@ -10,9 +10,10 @@ import (
// ServerConfig is a server config
type ServerConfig struct {
kex crypto.KeyExchange
signer crypto.Signer
ID []byte
kex crypto.KeyExchange
signer crypto.Signer
ID []byte
stkSource crypto.StkSource
}
// NewServerConfig creates a new server config
@@ -22,10 +23,21 @@ func NewServerConfig(kex crypto.KeyExchange, signer crypto.Signer) (*ServerConfi
if err != nil {
return nil, err
}
stkSecret := make([]byte, 32)
if _, err = io.ReadFull(rand.Reader, stkSecret); err != nil {
return nil, err
}
stkSource, err := crypto.NewStkSource(stkSecret)
if err != nil {
return nil, err
}
return &ServerConfig{
kex: kex,
signer: signer,
ID: id,
kex: kex,
signer: signer,
ID: id,
stkSource: stkSource,
}, nil
}