From 955a569181907c2b62908691b2b410460e26b3d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E6=89=87=E6=BB=91=E7=BF=94=E7=BF=BC?= Date: Thu, 24 Jul 2025 09:15:48 +0800 Subject: [PATCH] REALITY config: Allow `mldsa65` fields to be empty (#4924) --- infra/conf/transport_internet.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/infra/conf/transport_internet.go b/infra/conf/transport_internet.go index 6a8bf0c3..59335353 100644 --- a/infra/conf/transport_internet.go +++ b/infra/conf/transport_internet.go @@ -613,11 +613,13 @@ func (c *REALITYConfig) Build() (proto.Message, error) { config.ServerNames = c.ServerNames config.MaxTimeDiff = c.MaxTimeDiff - if mldsa65Seed, err := base64.RawURLEncoding.DecodeString(c.Mldsa65Seed); err != nil || len(mldsa65Seed) != 32 { - return nil, errors.New(`invalid "mldsa65Seed": `, c.Mldsa65Seed) - } else { - _, key := mldsa65.NewKeyFromSeed((*[32]byte)(mldsa65Seed)) - config.Mldsa65Key = key.Bytes() + if c.Mldsa65Seed != "" { + if mldsa65Seed, err := base64.RawURLEncoding.DecodeString(c.Mldsa65Seed); err != nil || len(mldsa65Seed) != 32 { + return nil, errors.New(`invalid "mldsa65Seed": `, c.Mldsa65Seed) + } else { + _, key := mldsa65.NewKeyFromSeed((*[32]byte)(mldsa65Seed)) + config.Mldsa65Key = key.Bytes() + } } config.LimitFallbackUpload = new(reality.LimitFallback) @@ -655,8 +657,10 @@ func (c *REALITYConfig) Build() (proto.Message, error) { if _, err = hex.Decode(config.ShortId, []byte(c.ShortId)); err != nil { return nil, errors.New(`invalid "shortId": `, c.ShortId) } - if config.Mldsa65Verify, err = base64.RawURLEncoding.DecodeString(c.Mldsa65Verify); err != nil || len(config.Mldsa65Verify) != 1952 { - return nil, errors.New(`invalid "mldsa65Verify": `, c.Mldsa65Verify) + if c.Mldsa65Verify != "" { + if config.Mldsa65Verify, err = base64.RawURLEncoding.DecodeString(c.Mldsa65Verify); err != nil || len(config.Mldsa65Verify) != 1952 { + return nil, errors.New(`invalid "mldsa65Verify": `, c.Mldsa65Verify) + } } if c.SpiderX == "" { c.SpiderX = "/"