From f2a1e52d9ce05dacbe01f65c7b3f4e3d06847ad2 Mon Sep 17 00:00:00 2001 From: T1nyBear <324255370+T1nyBear@users.noreply.github.com> Date: Fri, 4 Sep 2026 05:43:19 +0200 Subject: [PATCH] fix randomized X25519MLKEM768 key share consistency --- u_parrots.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/u_parrots.go b/u_parrots.go index 8416fa3363..aa162d2e25 100644 --- a/u_parrots.go +++ b/u_parrots.go @@ -3339,7 +3339,8 @@ func generateRandomizedSpec( points := SupportedPointsExtension{SupportedPoints: []byte{pointFormatUncompressed}} curveIDs := []CurveID{} - if r.FlipWeightedCoin(id.Weights.CurveIDs_Append_X25519) && p.TLSVersMax == VersionTLS13 { + includeX25519MLKEM768 := r.FlipWeightedCoin(id.Weights.CurveIDs_Append_X25519) && p.TLSVersMax == VersionTLS13 + if includeX25519MLKEM768 { curveIDs = append(curveIDs, X25519MLKEM768) } if r.FlipWeightedCoin(id.Weights.CurveIDs_Append_X25519) || p.TLSVersMax == VersionTLS13 { @@ -3399,9 +3400,11 @@ func generateRandomizedSpec( if r.FlipWeightedCoin(id.Weights.KeyShare_Append_RandomGroups) { ks.KeyShares = append(ks.KeyShares, KeyShare{Group: CurveP256}) } - if r.FlipWeightedCoin(id.Weights.KeyShare_Append_RandomGroups) { - ks.KeyShares = append([]KeyShare{{Group: X25519MLKEM768}}, ks.KeyShares...) - } + // Preserve PRNG progression for existing randomized seeds. + _ = r.FlipWeightedCoin(id.Weights.KeyShare_Append_RandomGroups) + } + if includeX25519MLKEM768 { + ks.KeyShares = append([]KeyShare{{Group: X25519MLKEM768}}, ks.KeyShares...) } pskExchangeModes := PSKKeyExchangeModesExtension{[]uint8{pskModeDHE}} supportedVersionsExt := SupportedVersionsExtension{