]> Sergey Matveev's repositories - vors.git/blob - internal/noise.go
Prepare for next version
[vors.git] / internal / noise.go
1 package internal
2
3 import (
4         "bytes"
5         "io"
6         "net"
7
8         "github.com/flynn/noise"
9 )
10
11 const NoisePrologue = "VoRS v3"
12
13 var NoiseCipherSuite = noise.NewCipherSuite(
14         noise.DH25519,
15         noise.CipherChaChaPoly,
16         noise.HashBLAKE2s,
17 )
18
19 func PktRead(conn net.Conn) (buf []byte, err error) {
20         buf = make([]byte, 2)
21         _, err = io.ReadFull(conn, buf[:2])
22         if err != nil {
23                 return
24         }
25         buf = make([]byte, int(buf[0])<<8|int(buf[1]))
26         _, err = io.ReadFull(conn, buf)
27         return
28 }
29
30 func PktWrite(conn net.Conn, buf []byte) (err error) {
31         _, err = io.Copy(conn, bytes.NewReader(append([]byte{
32                 byte((len(buf) & 0xFF00) >> 8),
33                 byte((len(buf) & 0x00FF) >> 0),
34         }, buf...)))
35         return
36 }