From ed18e8602da78f0702fffacddf65e9027bb8c0db Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Wed, 11 Jul 2018 08:23:26 +0800 Subject: [PATCH] vmess: chacha20-poly1305 supported --- proxy/vmess/client.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/proxy/vmess/client.go b/proxy/vmess/client.go index a2dc9b9..ee9755c 100644 --- a/proxy/vmess/client.go +++ b/proxy/vmess/client.go @@ -238,9 +238,11 @@ func (c *Conn) Write(b []byte) (n int, err error) { c.dataWriter = AEADWriter(c.Conn, aead, c.reqBodyIV[:]) case SecurityChacha20Poly1305: - h := md5.New() - h.Write(c.reqBodyKey[:]) - key := h.Sum(h.Sum(nil)) + key := make([]byte, 32) + t := md5.Sum(c.reqBodyKey[:]) + copy(key, t[:]) + t = md5.Sum(key[:16]) + copy(key[16:], t[:]) aead, _ := chacha20poly1305.New(key) c.dataWriter = AEADWriter(c.Conn, aead, c.reqBodyIV[:]) } @@ -271,9 +273,11 @@ func (c *Conn) Read(b []byte) (n int, err error) { c.dataReader = AEADReader(c.Conn, aead, c.respBodyIV[:]) case SecurityChacha20Poly1305: - h := md5.New() - h.Write(c.respBodyKey[:]) - key := h.Sum(h.Sum(nil)) + key := make([]byte, 32) + t := md5.Sum(c.respBodyKey[:]) + copy(key, t[:]) + t = md5.Sum(key[:16]) + copy(key[16:], t[:]) aead, _ := chacha20poly1305.New(key) c.dataReader = AEADReader(c.Conn, aead, c.respBodyIV[:]) }