mirror of
https://github.com/daeuniverse/dae.git
synced 2024-12-22 16:34:40 +07:00
optimize(vmess): auto choose cipher instead of aes-128-gcm (#232)
This commit is contained in:
parent
a3566ea081
commit
87895034f4
26
component/outbound/dialer/v2ray/cipher.go
Normal file
26
component/outbound/dialer/v2ray/cipher.go
Normal file
@ -0,0 +1,26 @@
|
||||
package v2ray
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
|
||||
"golang.org/x/sys/cpu"
|
||||
)
|
||||
|
||||
var (
|
||||
hasGCMAsmAMD64 = cpu.X86.HasAES && cpu.X86.HasPCLMULQDQ
|
||||
hasGCMAsmARM64 = cpu.ARM64.HasAES && cpu.ARM64.HasPMULL
|
||||
// Keep in sync with crypto/aes/cipher_s390x.go.
|
||||
hasGCMAsmS390X = cpu.S390X.HasAES && cpu.S390X.HasAESCBC && cpu.S390X.HasAESCTR &&
|
||||
(cpu.S390X.HasGHASH || cpu.S390X.HasAESGCM)
|
||||
|
||||
hasAESGCMHardwareSupport = runtime.GOARCH == "amd64" && hasGCMAsmAMD64 ||
|
||||
runtime.GOARCH == "arm64" && hasGCMAsmARM64 ||
|
||||
runtime.GOARCH == "s390x" && hasGCMAsmS390X
|
||||
)
|
||||
|
||||
func getAutoCipher() string {
|
||||
if hasAESGCMHardwareSupport {
|
||||
return "aes-128-gcm"
|
||||
}
|
||||
return "chacha20-ietf-poly1305"
|
||||
}
|
@ -175,7 +175,7 @@ func (s *V2Ray) Dialer(option *dialer.GlobalOption, iOption dialer.InstanceOptio
|
||||
|
||||
if d, err = protocol.NewDialer(s.Protocol, d, protocol.Header{
|
||||
ProxyAddress: net.JoinHostPort(s.Add, s.Port),
|
||||
Cipher: "aes-128-gcm",
|
||||
Cipher: getAutoCipher(),
|
||||
Password: s.ID,
|
||||
IsClient: true,
|
||||
//Flags: protocol.Flags_VMess_UsePacketAddr,
|
||||
|
Loading…
Reference in New Issue
Block a user