/*
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
if err != nil {
panic(err)
}
+ sum := make([]byte, mac.Size())
nonces := make(chan *[NonceSize]byte, NonceBucketSize*3)
go func() {
for {
buf := new([NonceSize]byte)
binary.BigEndian.PutUint64(buf[:], i)
mac.Write(buf[:])
- mac.Sum(buf[:0])
+ sum = mac.Sum(nil)
+ for index := 0; index < NonceSize; index++ {
+ buf[index] = sum[index]
+ }
nonces <- buf
mac.Reset()
i += 2