{"record":{"id":"d9a25789365dacfe","repo":"XTLS/Xray-core","slug":"key-must-not-be-empty","errorCode":null,"errorMessage":"key must not be empty","messagePattern":"key must not be empty","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"infra/conf/wireguard.go","lineNumber":152,"sourceCode":"\tcase \"forceipv4v6\":\n\t\tconfig.DomainStrategy = wireguard.DeviceConfig_FORCE_IP46\n\tcase \"forceipv6v4\":\n\t\tconfig.DomainStrategy = wireguard.DeviceConfig_FORCE_IP64\n\tdefault:\n\t\treturn nil, errors.New(\"unsupported domain strategy: \", c.DomainStrategy)\n\t}\n\n\tconfig.IsClient = c.IsClient\n\tconfig.NoKernelTun = c.NoKernelTun\n\n\treturn config, nil\n}\n\nfunc ParseWireGuardKey(str string) (string, error) {\n\tvar err error\n\n\tif str == \"\" {\n\t\treturn \"\", errors.New(\"key must not be empty\")\n\t}\n\n\tif len(str) == 64 {\n\t\t_, err = hex.DecodeString(str)\n\t\tif err == nil {\n\t\t\treturn str, nil\n\t\t}\n\t}\n\n\tvar dat []byte\n\tstr = strings.TrimSuffix(str, \"=\")\n\tif strings.ContainsRune(str, '+') || strings.ContainsRune(str, '/') {\n\t\tdat, err = base64.RawStdEncoding.DecodeString(str)\n\t} else {\n\t\tdat, err = base64.RawURLEncoding.DecodeString(str)\n\t}\n\tif err == nil {\n\t\treturn hex.EncodeToString(dat), nil","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/XTLS/Xray-core/blob/7d214f8b094f75322fa3990f8aadad1c912f24f5/infra/conf/wireguard.go#L134-L170","documentation":"Error \"key must not be empty\" thrown in XTLS/Xray-core.","triggerScenarios":"Thrown at infra/conf/wireguard.go:152 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7d214f8b094f75322fa3990f8aadad1c912f24f5","analyzedAt":"2026-08-15T14:26:24.325Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}