From b35c212d65e21d7528cc34cc762938e3d6e3c421 Mon Sep 17 00:00:00 2001 From: 9seconds Date: Fri, 13 Mar 2026 16:39:16 +0100 Subject: [PATCH] Have a noise of variable size --- mtglib/internal/tls/fake/server_side.go | 9 ++++++--- mtglib/internal/tls/fake/server_side_test.go | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mtglib/internal/tls/fake/server_side.go b/mtglib/internal/tls/fake/server_side.go index 4c2fe3a..90b736d 100644 --- a/mtglib/internal/tls/fake/server_side.go +++ b/mtglib/internal/tls/fake/server_side.go @@ -7,15 +7,17 @@ import ( "crypto/sha256" "encoding/binary" "io" + "math" + rnd "math/rand/v2" + "github.com/9seconds/mtg/v2/mtglib/internal/doppel" "github.com/9seconds/mtg/v2/mtglib/internal/tls" "golang.org/x/crypto/curve25519" ) const ( TypeHandshakeServer = 0x02 - - ChangeCipherValue = 0x01 + ChangeCipherValue = 0x01 EllipticCurveLen = 32 ) @@ -125,7 +127,8 @@ func generateChangeCipherValue(buf *bytes.Buffer) { } func generateNoise(buf *bytes.Buffer) { - data := [1369]byte{} + minSize := int(math.Round(0.75 * float64(doppel.TLSRecordSizeMax))) + data := make([]byte, minSize+rnd.IntN(doppel.TLSRecordSizeMax-minSize)) if _, err := rand.Read(data[:]); err != nil { panic(err) diff --git a/mtglib/internal/tls/fake/server_side_test.go b/mtglib/internal/tls/fake/server_side_test.go index abde893..c4b54a6 100644 --- a/mtglib/internal/tls/fake/server_side_test.go +++ b/mtglib/internal/tls/fake/server_side_test.go @@ -8,6 +8,7 @@ import ( "testing" "github.com/9seconds/mtg/v2/mtglib" + "github.com/9seconds/mtg/v2/mtglib/internal/doppel" "github.com/9seconds/mtg/v2/mtglib/internal/tls" "github.com/9seconds/mtg/v2/mtglib/internal/tls/fake" "github.com/stretchr/testify/suite" @@ -58,7 +59,7 @@ func (suite *SendServerHelloTestSuite) TestRecordStructure() { recordType, length, err := tls.ReadRecord(suite.buf, &rec) suite.NoError(err) suite.Equal(byte(tls.TypeApplicationData), recordType) - suite.Equal(int64(1369), length) + suite.Greater(length, int64(doppel.TLSRecordSizeStart)) suite.Empty(suite.buf.Bytes()) }