@@ -27,20 +27,21 @@ func mustWrapTLSRecord(t *testing.T, handshakeMsg []byte) []byte {
2727
2828// buildCertificateMessageBody constructs a TLS Certificate message body
2929// from DER-encoded certificates.
30- func buildCertificateMessageBody (certs ... []byte ) []byte {
30+ func buildCertificateMessageBody (t * testing.T , certs ... []byte ) []byte {
31+ t .Helper ()
3132 var entries []byte
3233 for _ , cert := range certs {
3334 certLen , err := checkedUint24Len (len (cert ), "certificate entry" )
3435 if err != nil {
35- panic ( err )
36+ t . Fatalf ( "certificate entry length: %v" , err )
3637 }
3738 entries = appendUint24 (entries , certLen )
3839 entries = append (entries , cert ... )
3940 }
4041 var body []byte
4142 entriesLen , err := checkedUint24Len (len (entries ), "certificate message entries" )
4243 if err != nil {
43- panic ( err )
44+ t . Fatalf ( "certificate message entries length: %v" , err )
4445 }
4546 body = appendUint24 (body , entriesLen )
4647 body = append (body , entries ... )
@@ -69,10 +70,10 @@ func TestReadServerCertificates(t *testing.T) {
6970 }
7071
7172 // Build a ServerHello handshake message (cipher 0x0033, TLS 1.2).
72- serverHello := buildMockServerHello (0x0303 , 0x0033 )
73+ serverHello := buildMockServerHello (t , 0x0303 , 0x0033 )
7374
7475 // Build a Certificate handshake message.
75- certMsg := buildCertificateHandshakeMessage (certDER )
76+ certMsg := buildCertificateHandshakeMessage (t , certDER )
7677
7778 // Build a Certificate handshake message that spans two records by splitting
7879 // mid-message. This exercises the "incomplete message, need more records"
@@ -117,7 +118,7 @@ func TestReadServerCertificates(t *testing.T) {
117118 },
118119 {
119120 name : "alert record" ,
120- records : buildAlertRecord (),
121+ records : buildAlertRecord (t ),
121122 wantErr : errAlertReceived ,
122123 },
123124 {
@@ -129,12 +130,12 @@ func TestReadServerCertificates(t *testing.T) {
129130 },
130131 {
131132 name : "oversized TLS record" ,
132- records : buildRawTLSRecord (0x16 , 16641 ),
133+ records : buildRawTLSRecord (t , 0x16 , 16641 ),
133134 wantErrContains : "tls record too large" ,
134135 },
135136 {
136137 name : "unexpected content type" ,
137- records : buildRawTLSRecord (0x17 , 1 ), // ApplicationData
138+ records : buildRawTLSRecord (t , 0x17 , 1 ), // ApplicationData
138139 wantErrContains : "unexpected tls content type" ,
139140 },
140141 }
@@ -190,8 +191,8 @@ func TestReadServerCertificates_AlertAfterServerHello(t *testing.T) {
190191 // WHY: Legacy parser must return parsed ServerHello context even when a
191192 // fatal alert follows, preserving diagnostic signal for callers.
192193 t .Parallel ()
193- serverHello := buildMockServerHello (0x0303 , 0x0033 )
194- records := append (mustWrapTLSRecord (t , serverHello ), buildAlertRecord ()... )
194+ serverHello := buildMockServerHello (t , 0x0303 , 0x0033 )
195+ records := append (mustWrapTLSRecord (t , serverHello ), buildAlertRecord (t )... )
195196
196197 sh , certs , err := readServerCertificates (bytes .NewReader (records ))
197198 if ! errors .Is (err , errAlertReceived ) {
@@ -236,7 +237,8 @@ func TestReadServerCertificates_PayloadLimit(t *testing.T) {
236237}
237238
238239// buildMockServerHello builds a minimal ServerHello handshake message.
239- func buildMockServerHello (version , cipherSuite uint16 ) []byte {
240+ func buildMockServerHello (t * testing.T , version , cipherSuite uint16 ) []byte {
241+ t .Helper ()
240242 var body []byte
241243 // Version (2 bytes).
242244 body = appendUint16 (body , version )
@@ -253,20 +255,21 @@ func buildMockServerHello(version, cipherSuite uint16) []byte {
253255 msg := []byte {0x02 }
254256 bodyLen , err := checkedUint24Len (len (body ), "server hello body" )
255257 if err != nil {
256- panic ( err )
258+ t . Fatalf ( "server hello body length: %v" , err )
257259 }
258260 msg = appendUint24 (msg , bodyLen )
259261 msg = append (msg , body ... )
260262 return msg
261263}
262264
263265// buildCertificateHandshakeMessage builds a TLS Certificate handshake message.
264- func buildCertificateHandshakeMessage (certs ... []byte ) []byte {
265- body := buildCertificateMessageBody (certs ... )
266+ func buildCertificateHandshakeMessage (t * testing.T , certs ... []byte ) []byte {
267+ t .Helper ()
268+ body := buildCertificateMessageBody (t , certs ... )
266269 msg := []byte {0x0B } // Certificate
267270 bodyLen , err := checkedUint24Len (len (body ), "certificate handshake body" )
268271 if err != nil {
269- panic ( err )
272+ t . Fatalf ( "certificate handshake body length: %v" , err )
270273 }
271274 msg = appendUint24 (msg , bodyLen )
272275 msg = append (msg , body ... )
@@ -277,26 +280,28 @@ func buildCertificateHandshakeMessage(certs ...[]byte) []byte {
277280// payload of payloadLen zero bytes. Unlike wrapTLSRecord it does NOT cap the
278281// payload size, so it can be used to construct intentionally oversized records
279282// for negative test cases.
280- func buildRawTLSRecord (contentType byte , payloadLen int ) []byte {
283+ func buildRawTLSRecord (t * testing.T , contentType byte , payloadLen int ) []byte {
284+ t .Helper ()
281285 record := []byte {contentType , 0x03 , 0x03 }
282286 payloadSize , err := checkedUint16Len (payloadLen , "raw TLS record payload" )
283287 if err != nil {
284- panic ( err )
288+ t . Fatalf ( "raw TLS record payload length: %v" , err )
285289 }
286290 record = appendUint16 (record , payloadSize )
287291 record = append (record , make ([]byte , payloadLen )... )
288292 return record
289293}
290294
291295// buildAlertRecord builds a TLS Alert record.
292- func buildAlertRecord () []byte {
296+ func buildAlertRecord (t * testing.T ) []byte {
297+ t .Helper ()
293298 // Alert: handshake_failure (40), fatal (2).
294299 payload := []byte {0x02 , 0x28 }
295300 record := []byte {0x15 } // ContentType: Alert
296301 record = append (record , 0x03 , 0x01 )
297302 payloadLen , err := checkedUint16Len (len (payload ), "alert payload" )
298303 if err != nil {
299- panic ( err )
304+ t . Fatalf ( "alert payload length: %v" , err )
300305 }
301306 record = appendUint16 (record , payloadLen )
302307 record = append (record , payload ... )
@@ -339,8 +344,8 @@ func TestLegacyFallbackConnect(t *testing.T) {
339344 }
340345
341346 // Send ServerHello + Certificate as raw TLS records.
342- serverHello := buildMockServerHello (0x0303 , 0x0033 )
343- certMsg := buildCertificateHandshakeMessage (leaf .DER )
347+ serverHello := buildMockServerHello (t , 0x0303 , 0x0033 )
348+ certMsg := buildCertificateHandshakeMessage (t , leaf .DER )
344349 helloDone := []byte {0x0E , 0x00 , 0x00 , 0x00 } // ServerHelloDone
345350
346351 // Pack all handshake messages into a single TLS record.
0 commit comments