X-Git-Url: http://www.git.cypherpunks.ru/?p=nncp.git;a=blobdiff_plain;f=src%2Fpkt.go;fp=src%2Fpkt.go;h=2a161f721c6a3e955ef57ba1b06b44ce022408b7;hp=38e4659a0030f0d153e889d822ea83745abc6bf7;hb=d43bf3ccf16f9894e24fafbd8e88f3a2254c6052;hpb=a13dfe188901835b627b02e1fc25638f5c9f68d5 diff --git a/src/pkt.go b/src/pkt.go index 38e4659..2a161f7 100644 --- a/src/pkt.go +++ b/src/pkt.go @@ -250,12 +250,14 @@ func PktEncWrite( 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 @@ -403,8 +405,11 @@ func PktEncRead( } 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