]> Cypherpunks.ru repositories - govpn.git/commitdiff
Fix nounces incrementing
authorSergey Matveev <stargrave@stargrave.org>
Sun, 10 Aug 2014 14:56:08 +0000 (18:56 +0400)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 10 Aug 2014 15:23:23 +0000 (19:23 +0400)
That bug leads to reusing the same nonce.

Signed-off-by: Sergey Matveev <stargrave@stargrave.org>
govpn.go
handshake.go

index 412deb763d656410dc0d8b8e1cf2eef4d3a5e646..885f5209a00ef8d609202300342c4876e364cb57 100644 (file)
--- 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)
index 331e4e6e330e8c0cd8b1d006e3694a33792b8594..a3403ea2d978755762e9a04c5aa4d5089353f1ee 100644 (file)
@@ -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]")