فهرست منبع

Optimize cipherSuites setting loader

RPRX 4 سال پیش
والد
کامیت
ff9bb2d8df
2فایلهای تغییر یافته به همراه16 افزوده شده و 24 حذف شده
  1. 8 12
      transport/internet/tls/config.go
  2. 8 12
      transport/internet/xtls/config.go

+ 8 - 12
transport/internet/tls/config.go

@@ -234,22 +234,18 @@ func (c *Config) GetTLSConfig(opts ...Option) *tls.Config {
 		config.MaxVersion = tls.VersionTLS13
 	}
 
-	var cipherSuites []uint16
 	if len(c.CipherSuites) > 0 {
-		cipherSuitesArray := strings.Split(c.CipherSuites, ":")
-		if len(cipherSuitesArray) > 0 {
-			all := tls.CipherSuites()
-			for _, suite := range cipherSuitesArray {
-				for _, s := range all {
-					if s.Name == suite {
-						cipherSuites = append(cipherSuites, s.ID)
-						break
-					}
-				}
+		id := make(map[string]uint16)
+		for _, s := range tls.CipherSuites() {
+			id[s.Name] = s.ID
+		}
+		for _, n := range strings.Split(c.CipherSuites, ":") {
+			if id[n] != 0 {
+				config.CipherSuites = append(config.CipherSuites, id[n])
 			}
 		}
 	}
-	config.CipherSuites = cipherSuites
+
 	config.PreferServerCipherSuites = c.PreferServerCipherSuites
 
 	return config

+ 8 - 12
transport/internet/xtls/config.go

@@ -225,22 +225,18 @@ func (c *Config) GetXTLSConfig(opts ...Option) *xtls.Config {
 		config.MaxVersion = xtls.VersionTLS13
 	}
 
-	var cipherSuites []uint16
 	if len(c.CipherSuites) > 0 {
-		cipherSuitesArray := strings.Split(c.CipherSuites, ":")
-		if len(cipherSuitesArray) > 0 {
-			all := xtls.CipherSuites()
-			for _, suite := range cipherSuitesArray {
-				for _, s := range all {
-					if s.Name == suite {
-						cipherSuites = append(cipherSuites, s.ID)
-						break
-					}
-				}
+		id := make(map[string]uint16)
+		for _, s := range xtls.CipherSuites() {
+			id[s.Name] = s.ID
+		}
+		for _, n := range strings.Split(c.CipherSuites, ":") {
+			if id[n] != 0 {
+				config.CipherSuites = append(config.CipherSuites, id[n])
 			}
 		}
 	}
-	config.CipherSuites = cipherSuites
+
 	config.PreferServerCipherSuites = c.PreferServerCipherSuites
 
 	return config