Przeglądaj źródła

Fix double TLS wrapping for noise

tags/v2.2.0^2^2
9seconds 1 miesiąc temu
rodzic
commit
0bfc1ef2d4

+ 1
- 1
mtglib/internal/tls/fake/server_side.go Wyświetl plik

@@ -54,7 +54,7 @@ func SendServerHello(w io.Writer, secret []byte, clientHello *ClientHello) ([]by
54 54
 
55 55
 	_, err := w.Write(packet)
56 56
 
57
-	return noise.Bytes(), err
57
+	return noise.Bytes()[tls.SizeHeader:], err
58 58
 }
59 59
 
60 60
 func generateServerHello(buf *bytes.Buffer, hello *ClientHello) {

+ 9
- 8
mtglib/internal/tls/fake/server_side_test.go Wyświetl plik

@@ -55,13 +55,8 @@ func (suite *SendServerHelloTestSuite) TestRecordStructure() {
55 55
 
56 56
 	suite.Empty(suite.buf.Bytes())
57 57
 
58
-	noiseBuf := bytes.NewReader(noise)
59
-	rec.Reset()
60
-
61
-	recordType, _, err = tls.ReadRecord(noiseBuf, &rec)
62
-	suite.NoError(err)
63
-	suite.Equal(byte(tls.TypeApplicationData), recordType)
64
-	suite.Zero(noiseBuf.Len())
58
+	// noise is raw payload without TLS record header
59
+	suite.Len(noise, 1369)
65 60
 }
66 61
 
67 62
 func (suite *SendServerHelloTestSuite) TestHMAC() {
@@ -78,7 +73,13 @@ func (suite *SendServerHelloTestSuite) TestHMAC() {
78 73
 	mac := hmac.New(sha256.New, suite.secret.Key[:])
79 74
 	mac.Write(suite.hello.Random[:])
80 75
 	mac.Write(packet)
81
-	mac.Write(noise)
76
+
77
+	// HMAC is computed over the full noise TLS record (with header),
78
+	// but SendServerHello returns noise without the header,
79
+	// so we reconstruct the full record.
80
+	var fullNoise bytes.Buffer
81
+	tls.WriteRecord(&fullNoise, noise) //nolint: errcheck
82
+	mac.Write(fullNoise.Bytes())
82 83
 
83 84
 	suite.Equal(random, mac.Sum(nil))
84 85
 }

+ 1
- 1
mtglib/proxy.go Wyświetl plik

@@ -204,7 +204,7 @@ func (p *Proxy) doFakeTLSHandshake(ctx *streamContext) ([]byte, bool) {
204 204
 		return nil, false
205 205
 	}
206 206
 
207
-	ctx.clientConn = tls.New(ctx.clientConn, true, true)
207
+	ctx.clientConn = tls.New(ctx.clientConn, true, false)
208 208
 
209 209
 	return noise, true
210 210
 }

Ładowanie…
Anuluj
Zapisz