/*
NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2023 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
PktTypeTrns PktType = iota
PktTypeExecFat PktType = iota
PktTypeArea PktType = iota
+ PktTypeACK PktType = iota
MaxPathSize = 1<<8 - 1
return
}
- sharedKey := new([32]byte)
- curve25519.ScalarMult(sharedKey, prv, their.ExchPub)
+ sharedKey, err := curve25519.X25519(prv[:], their.ExchPub[:])
+ if err != nil {
+ return
+ }
keyFull := make([]byte, chacha20poly1305.KeySize)
keySize := make([]byte, chacha20poly1305.KeySize)
- blake3.DeriveKey(keyFull, DeriveKeyFullCtx, sharedKey[:])
- blake3.DeriveKey(keySize, DeriveKeySizeCtx, sharedKey[:])
+ blake3.DeriveKey(keyFull, DeriveKeyFullCtx, sharedKey)
+ blake3.DeriveKey(keySize, DeriveKeySizeCtx, sharedKey)
aeadFull, err := chacha20poly1305.New(keyFull)
if err != nil {
return
}
ad := blake3.Sum256(tbsRaw)
if sharedKeyCached == nil {
- key := new([32]byte)
- curve25519.ScalarMult(key, our.ExchPrv, &pktEnc.ExchPub)
+ var key []byte
+ key, err = curve25519.X25519(our.ExchPrv[:], pktEnc.ExchPub[:])
+ if err != nil {
+ return
+ }
sharedKey = key[:]
} else {
sharedKey = sharedKeyCached
if err != nil {
panic(err)
}
- if bytes.Compare(ct[:n], pt[:n]) != 0 {
+ if !bytes.Equal(ct[:n], pt[:n]) {
err = errors.New("wrong pad value")
return
}