|
|
|
@ -9,12 +9,9 @@ import (
|
|
|
|
|
"crypto/rand" |
|
|
|
|
"crypto/sha256" |
|
|
|
|
"encoding/binary" |
|
|
|
|
"fmt" |
|
|
|
|
"hash" |
|
|
|
|
"hash/fnv" |
|
|
|
|
"io" |
|
|
|
|
"os" |
|
|
|
|
"strings" |
|
|
|
|
vmessaead "v2ray.com/core/proxy/vmess/aead" |
|
|
|
|
|
|
|
|
|
"golang.org/x/crypto/chacha20poly1305" |
|
|
|
@ -59,26 +56,12 @@ func NewClientSession(idHash protocol.IDHash, ctx context.Context) *ClientSessio
|
|
|
|
|
|
|
|
|
|
session.isAEADRequest = false |
|
|
|
|
|
|
|
|
|
if ctxValueTestsEnabled := ctx.Value(vmess.TestsEnabled); ctxValueTestsEnabled != nil { |
|
|
|
|
testsEnabled := ctxValueTestsEnabled.(string) |
|
|
|
|
if strings.Contains(testsEnabled, "VMessAEAD") { |
|
|
|
|
if ctxValueAlterID := ctx.Value(vmess.AlterID); ctxValueAlterID != nil { |
|
|
|
|
if ctxValueAlterID == 0 { |
|
|
|
|
session.isAEADRequest = true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if vmessexp, vmessexp_found := os.LookupEnv("VMESSAEADEXPERIMENT"); vmessexp_found { |
|
|
|
|
if vmessexp == "y" { |
|
|
|
|
session.isAEADRequest = true |
|
|
|
|
} |
|
|
|
|
if vmessexp == "n" { |
|
|
|
|
session.isAEADRequest = false |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if session.isAEADRequest { |
|
|
|
|
fmt.Println("=======VMESSAEADEXPERIMENT ENABLED========") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
copy(session.requestBodyKey[:], randomBytes[:16]) |
|
|
|
|
copy(session.requestBodyIV[:], randomBytes[16:32]) |
|
|
|
|
session.responseHeader = randomBytes[32] |
|
|
|
|