From 71a068c0ed889a0e2ef41edc0a9e94cf78763005 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 10 Aug 2014 18:56:08 +0400 Subject: [PATCH] Fix nounces incrementing That bug leads to reusing the same nonce. Signed-off-by: Sergey Matveev --- govpn.go | 8 +------- handshake.go | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/govpn.go b/govpn.go index 412deb7..885f520 100644 --- a/govpn.go +++ b/govpn.go @@ -33,10 +33,6 @@ import ( ) const ( - // NonceIncrServer is nonce increment value for server message - NonceIncrServer = 1 - // NonceIncrClient is nonce increment value for client message - NonceIncrClient = 2 NonceSize = 8 AliveTimeout = time.Second * 90 // S20BS is Salsa20's internal blocksize in bytes @@ -108,13 +104,11 @@ func main() { var remote *net.UDPAddr serverMode := false - nonceIncr := uint64(NonceIncrClient) bindTo := "0.0.0.0:0" if len(*bindAddr) > 1 { bindTo = *bindAddr serverMode = true - nonceIncr = uint64(NonceIncrServer) } bind, err := net.ResolveUDPAddr("udp", bindTo) @@ -224,7 +218,7 @@ func main() { if !peer.IsAlive() { continue } - peer.nonceOur = peer.nonceOur + nonceIncr + peer.nonceOur = peer.nonceOur + 2 pktData := ethPkt.Data() binary.PutUvarint(nonce, peer.nonceOur) copy(buf[S20BS:], pktData) diff --git a/handshake.go b/handshake.go index 331e4e6..a3403ea 100644 --- a/handshake.go +++ b/handshake.go @@ -251,7 +251,7 @@ func (h *Handshake) Client(conn *net.UDPConn, key *[32]byte, data []byte) *Peer } // Switch peer - peer := Peer{addr: h.addr, nonceOur: 0, nonceRecv: 0} + peer := Peer{addr: h.addr, nonceOur: 1, nonceRecv: 0} peer.SetAlive() peer.key = KeyFromSecrets(h.sServer[:], h.sClient[:]) fmt.Print("[OK]") -- 2.48.1