@@ -15,6 +15,8 @@ const (
15
15
ServerHelloTLSVal = 0x02
16
16
)
17
17
18
+ var TLSTooShortErr = fmt .Errorf ("tls message too short" )
19
+
18
20
type TLSVersion struct {
19
21
Value uint16
20
22
Desc string
@@ -117,7 +119,7 @@ type TLSClientHello struct {
117
119
TypeDesc string
118
120
Length int // 3 bytes int(uint(b[2]) | uint(b[1])<<8 | uint(b[0])<<16))
119
121
Version * TLSVersion
120
- Random []byte //32 bytes
122
+ Random []byte // 32 bytes
121
123
SessionIDLength uint8 // if 0 no session follows
122
124
SessionID string
123
125
CipherSuitesLength uint16
@@ -178,12 +180,12 @@ func (tch *TLSClientHello) String() string {
178
180
- Random: %s
179
181
- SessionIDLength: %d
180
182
- SessionID: %s
181
- - CipherSuitesLength: %d
183
+ - CipherSuitesLength: %d
182
184
- CipherSuites: %v
183
185
- CmprMethodsLength: %d
184
- - CmprMethods: %v
186
+ - CmprMethods: %v
185
187
- ExtensionLength: %d
186
- - Extensions: %v
188
+ - Extensions: %v
187
189
- %s
188
190
- ALPN: %v
189
191
` ,
@@ -233,7 +235,7 @@ func (tch *TLSClientHello) ParseHS(data []byte) error {
233
235
}
234
236
csl := binary .BigEndian .Uint16 (data [sid : sid + 2 ]) // data[71:73] suites count * 2 bytes
235
237
tch .CipherSuitesLength = csl
236
- offset := uint16 (sid + 2 ) //73
238
+ offset := uint16 (sid + 2 ) // 73
237
239
cmproffset := csl + offset // 107
238
240
css := make ([]* CipherSuite , 0 , csl / 2 )
239
241
var i uint16
@@ -285,8 +287,8 @@ func (tch *TLSClientHello) ParseHS(data []byte) error {
285
287
return err
286
288
}
287
289
tch .ServerName = sn
288
- case 16 : //ALPN
289
- //skip data[i+4:i+6] alpn extension length
290
+ case 16 : // ALPN
291
+ // skip data[i+4:i+6] alpn extension length
290
292
if len (data ) < int (i + 6 ) {
291
293
return nil
292
294
}
@@ -318,7 +320,7 @@ type TLSServerHello struct {
318
320
TypeDesc string
319
321
Length int // 3 bytes int(uint(b[2]) | uint(b[1])<<8 | uint(b[0])<<16))
320
322
Version * TLSVersion
321
- Random []byte //32 bytes
323
+ Random []byte // 32 bytes
322
324
SessionIDLength uint8 // if 0 no session follows
323
325
SessionID string
324
326
CipherSuite * CipherSuite
@@ -374,10 +376,10 @@ func (tsh *TLSServerHello) String() string {
374
376
- SessionIDLength: %d
375
377
- SessionID: %s
376
378
- CipherSuite: %s
377
- - CmprMethod: %d
379
+ - CmprMethod: %d
378
380
- ExtensionLength: %d
379
- - Extensions: %v
380
- - Supported Version: %s
381
+ - Extensions: %v
382
+ - Supported Version: %s
381
383
` ,
382
384
tsh .TypeDesc ,
383
385
tsh .Type ,
@@ -539,7 +541,7 @@ func (t *TLSMessage) printRecords() string {
539
541
func (t * TLSMessage ) Parse (data []byte ) error {
540
542
t .Records = make ([]* Record , 0 , 5 )
541
543
if len (data ) < headerSizeTLS {
542
- return nil
544
+ return TLSTooShortErr
543
545
}
544
546
for len (data ) > 0 {
545
547
ctype := data [0 ]
@@ -1388,6 +1390,7 @@ func csuitedesc(csuite uint16) string {
1388
1390
}
1389
1391
return csuitedesc
1390
1392
}
1393
+
1391
1394
func extdesc (ext uint16 ) string {
1392
1395
var extdesc string
1393
1396
switch ext {
0 commit comments