- if _, err := rand.Read(h.sServer[:]); err != nil {
- panic("Can not read random for handshake shared key")
+ if _, err = io.ReadFull(Rand, h.sServer[:]); err != nil {
+ log.Fatalln("Error reading random for S:", err)
+ }
+ var encRs []byte
+ if h.Conf.Noise && !h.Conf.Encless {
+ encRs = make([]byte, h.Conf.MTU-len(encPub)-8)
+ } else if h.Conf.Encless {
+ encRs = make([]byte, h.Conf.MTU-8)
+ } else {
+ encRs = make([]byte, RSize+SSize)
+ }
+ copy(encRs, append(h.rServer[:], h.sServer[:]...))
+ if h.Conf.Encless {
+ encRs, err = EnclessEncode(h.key, h.rNonce, encRs)
+ if err != nil {
+ panic(err)
+ }
+ } else {
+ chacha20.XORKeyStream(encRs, encRs, h.rNonce, h.key)