From b95c84c4ecdc514fa089216ce315521cee19d385 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 18 Sep 2015 15:01:22 +0300 Subject: [PATCH] Move nonce expectation calculation to common function Signed-off-by: Sergey Matveev --- src/govpn/cmd/govpn-client/tcp.go | 7 ++----- src/govpn/cmd/govpn-server/tcp.go | 7 ++----- src/govpn/peer.go | 5 +++++ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/govpn/cmd/govpn-client/tcp.go b/src/govpn/cmd/govpn-client/tcp.go index 6265eeb..1dd11ec 100644 --- a/src/govpn/cmd/govpn-client/tcp.go +++ b/src/govpn/cmd/govpn-client/tcp.go @@ -20,7 +20,6 @@ package main import ( "bytes" - "encoding/binary" "log" "net" "sync/atomic" @@ -116,8 +115,7 @@ HandshakeCycle: } nonceExpectation := make([]byte, govpn.NonceSize) - binary.BigEndian.PutUint64(nonceExpectation, peer.NonceExpect) - peer.NonceCipher.Encrypt(nonceExpectation, nonceExpectation) + peer.NonceExpectation(nonceExpectation) prev = 0 var i int TransportCycle: @@ -158,8 +156,7 @@ TransportCycle: rehandshaking <- struct{}{} break TransportCycle } - binary.BigEndian.PutUint64(nonceExpectation, peer.NonceExpect) - peer.NonceCipher.Encrypt(nonceExpectation, nonceExpectation) + peer.NonceExpectation(nonceExpectation) copy(buf, buf[i+govpn.NonceSize:prev]) prev = prev - i - govpn.NonceSize goto CheckMore diff --git a/src/govpn/cmd/govpn-server/tcp.go b/src/govpn/cmd/govpn-server/tcp.go index 59ee559..437b500 100644 --- a/src/govpn/cmd/govpn-server/tcp.go +++ b/src/govpn/cmd/govpn-server/tcp.go @@ -20,7 +20,6 @@ package main import ( "bytes" - "encoding/binary" "log" "net" "time" @@ -152,8 +151,7 @@ func handleTCP(conn net.Conn) { } nonceExpectation := make([]byte, govpn.NonceSize) - binary.BigEndian.PutUint64(nonceExpectation, peer.NonceExpect) - peer.NonceCipher.Encrypt(nonceExpectation, nonceExpectation) + peer.NonceExpectation(nonceExpectation) prev = 0 var i int for { @@ -182,8 +180,7 @@ func handleTCP(conn net.Conn) { ) break } - binary.BigEndian.PutUint64(nonceExpectation, peer.NonceExpect) - peer.NonceCipher.Encrypt(nonceExpectation, nonceExpectation) + peer.NonceExpectation(nonceExpectation) copy(buf, buf[i+govpn.NonceSize:prev]) prev = prev - i - govpn.NonceSize goto CheckMore diff --git a/src/govpn/peer.go b/src/govpn/peer.go index 7366ffd..1076e74 100644 --- a/src/govpn/peer.go +++ b/src/govpn/peer.go @@ -118,6 +118,11 @@ func (p *Peer) Zero() { p.BusyR.Unlock() } +func (p *Peer) NonceExpectation(buf []byte) { + binary.BigEndian.PutUint64(buf, p.NonceExpect) + p.NonceCipher.Encrypt(buf, buf) +} + func newPeer(isClient bool, addr string, conn io.Writer, conf *PeerConf, key *[SSize]byte) *Peer { now := time.Now() timeout := conf.Timeout -- 2.44.0