vmess: chacha20-poly1305 supported

This commit is contained in:
nadoo 2018-07-11 08:23:26 +08:00
parent 5ebbf7ffe8
commit ed18e8602d

View File

@ -238,9 +238,11 @@ func (c *Conn) Write(b []byte) (n int, err error) {
c.dataWriter = AEADWriter(c.Conn, aead, c.reqBodyIV[:]) c.dataWriter = AEADWriter(c.Conn, aead, c.reqBodyIV[:])
case SecurityChacha20Poly1305: case SecurityChacha20Poly1305:
h := md5.New() key := make([]byte, 32)
h.Write(c.reqBodyKey[:]) t := md5.Sum(c.reqBodyKey[:])
key := h.Sum(h.Sum(nil)) copy(key, t[:])
t = md5.Sum(key[:16])
copy(key[16:], t[:])
aead, _ := chacha20poly1305.New(key) aead, _ := chacha20poly1305.New(key)
c.dataWriter = AEADWriter(c.Conn, aead, c.reqBodyIV[:]) 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[:]) c.dataReader = AEADReader(c.Conn, aead, c.respBodyIV[:])
case SecurityChacha20Poly1305: case SecurityChacha20Poly1305:
h := md5.New() key := make([]byte, 32)
h.Write(c.respBodyKey[:]) t := md5.Sum(c.respBodyKey[:])
key := h.Sum(h.Sum(nil)) copy(key, t[:])
t = md5.Sum(key[:16])
copy(key[16:], t[:])
aead, _ := chacha20poly1305.New(key) aead, _ := chacha20poly1305.New(key)
c.dataReader = AEADReader(c.Conn, aead, c.respBodyIV[:]) c.dataReader = AEADReader(c.Conn, aead, c.respBodyIV[:])
} }