/*
GoVPN -- simple secure free software virtual private network daemon
-Copyright (C) 2014-2016 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2014-2017 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
"sync"
"time"
- "github.com/dchest/blake2b"
+ "golang.org/x/crypto/blake2b"
)
const (
mc.cache[pid].ts = pc.TimeSync
} else {
log.Println("Adding key", pid)
+ mac, err := blake2b.New256(pid[:])
+ if err != nil {
+ panic(err)
+ }
mc.cache[pid] = &MACAndTimeSync{
- mac: blake2b.NewMAC(8, pid[:]),
+ mac: mac,
ts: pc.TimeSync,
}
}
mt.l.Lock()
mt.mac.Reset()
mt.mac.Write(buf)
- mt.mac.Sum(buf[:0])
+ sum := mt.mac.Sum(nil)
mt.l.Unlock()
- if subtle.ConstantTimeCompare(buf, data[len(data)-8:]) == 1 {
+ if subtle.ConstantTimeCompare(sum[len(sum)-8:], data[len(data)-8:]) == 1 {
ppid := PeerId(pid)
mc.l.RUnlock()
return &ppid