mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-07-02 09:48:43 +00:00
Commands: Add vlessenc (generate complete json pair directly) (#5078)
https://github.com/XTLS/Xray-core/pull/5078#issuecomment-3254161589 --------- Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package all
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/xtls/xray-core/main/commands/base"
|
||||
)
|
||||
|
||||
var cmdVLESSEnc = &base.Command{
|
||||
UsageLine: `{{.Exec}} vlessenc`,
|
||||
Short: `Generate decryption/encryption json pair (VLESS Encryption)`,
|
||||
Long: `
|
||||
Generate decryption/encryption json pair (VLESS Encryption).
|
||||
`,
|
||||
}
|
||||
|
||||
func init() {
|
||||
cmdVLESSEnc.Run = executeVLESSEnc // break init loop
|
||||
}
|
||||
|
||||
func executeVLESSEnc(cmd *base.Command, args []string) {
|
||||
privateKey, password, _, _ := genCurve25519(nil)
|
||||
serverKey := base64.RawURLEncoding.EncodeToString(privateKey)
|
||||
clientKey := base64.RawURLEncoding.EncodeToString(password)
|
||||
decryption := generateDotConfig("mlkem768x25519plus", "native", "600s", serverKey)
|
||||
encryption := generateDotConfig("mlkem768x25519plus", "native", "0rtt", clientKey)
|
||||
seed, client, _ := genMLKEM768(nil)
|
||||
serverKeyPQ := base64.RawURLEncoding.EncodeToString(seed[:])
|
||||
clientKeyPQ := base64.RawURLEncoding.EncodeToString(client)
|
||||
decryptionPQ := generateDotConfig("mlkem768x25519plus", "native", "600s", serverKeyPQ)
|
||||
encryptionPQ := generateDotConfig("mlkem768x25519plus", "native", "0rtt", clientKeyPQ)
|
||||
fmt.Printf("Choose one Authentication to use, do not mix them. Ephemeral key exchange is Post-Quantum safe anyway.\n\n")
|
||||
fmt.Printf("Authentication: X25519, not Post-Quantum\n\"decryption\": \"%v\"\n\"encryption\": \"%v\"\n\n", decryption, encryption)
|
||||
fmt.Printf("Authentication: ML-KEM-768, Post-Quantum\n\"decryption\": \"%v\"\n\"encryption\": \"%v\"\n", decryptionPQ, encryptionPQ)
|
||||
}
|
||||
|
||||
func generateDotConfig(fields ...string) string {
|
||||
return strings.Join(fields, ".")
|
||||
}
|
||||
Reference in New Issue
Block a user