Skip to content

Commit

Permalink
crypto/tls: implement TLS 1.3 middlebox compatibility mode
Browse files Browse the repository at this point in the history
Looks like the introduction of CCS records in the client second flight
gave time to s_server to send NewSessionTicket messages in between the
client application data and close_notify. There seems to be no way of
turning NewSessionTicket messages off, neither by not sending a
psk_key_exchange_modes extension, nor by command line flag.

Interleaving the client write like that tickled an issue akin to #18701:
on Windows, the client reaches Close() before the last record is drained
from the send buffer, the kernel notices and resets the connection,
cutting short the last flow. There is no good way of synchronizing this,
so we sleep for a RTT before calling close, like in CL 75210. Sigh.

Updates #9671

Change-Id: I44dc1cca17b373695b5a18c2741f218af2990bd1
Reviewed-on: https://go-review.googlesource.com/c/147419
Run-TryBot: Filippo Valsorda <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Adam Langley <[email protected]>
  • Loading branch information
FiloSottile committed Nov 12, 2018
1 parent db27e78 commit dc0be72
Show file tree
Hide file tree
Showing 25 changed files with 1,935 additions and 1,594 deletions.
2 changes: 1 addition & 1 deletion src/crypto/tls/conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -946,7 +946,7 @@ func (c *Conn) writeRecordLocked(typ recordType, data []byte) (int, error) {
data = data[m:]
}

if typ == recordTypeChangeCipherSpec {
if typ == recordTypeChangeCipherSpec && c.vers != VersionTLS13 {
if err := c.out.changeCipherSpec(); err != nil {
return n, c.sendAlertLocked(err.(alert))
}
Expand Down
14 changes: 11 additions & 3 deletions src/crypto/tls/handshake_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -337,9 +337,14 @@ func (test *clientTest) run(t *testing.T, write bool) {

doneChan := make(chan bool)
go func() {
defer func() { doneChan <- true }()
defer clientConn.Close()
defer client.Close()
defer func() {
// Give time to the send buffer to drain, to avoid the kernel
// sending a RST and cutting off the flow. See Issue 18701.
time.Sleep(10 * time.Millisecond)
client.Close()
clientConn.Close()
doneChan <- true
}()

if _, err := client.Write([]byte("hello\n")); err != nil {
t.Errorf("Client.Write failed: %s", err)
Expand Down Expand Up @@ -482,6 +487,9 @@ func (test *clientTest) run(t *testing.T, write bool) {
t.Fatalf("%s #%d: mismatch on read: got:%x want:%x", test.name, i, bb, b)
}
}
// Give time to the send buffer to drain, to avoid the kernel
// sending a RST and cutting off the flow. See Issue 18701.
time.Sleep(10 * time.Millisecond)
serverConn.Close()
}

Expand Down
22 changes: 20 additions & 2 deletions src/crypto/tls/handshake_client_tls13.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ type clientHandshakeStateTLS13 struct {
serverHello *serverHelloMsg
hello *clientHelloMsg
certReq *certificateRequestMsgTLS13
sentDummyCCS bool
ecdheParams ecdheParameters
suite *cipherSuiteTLS13
transcript hash.Hash
Expand Down Expand Up @@ -57,6 +58,9 @@ func (hs *clientHandshakeStateTLS13) handshake() error {
hs.transcript.Write(chHash)
hs.transcript.Write(hs.serverHello.marshal())

if err := hs.sendDummyChangeCipherSpec(); err != nil {
return err
}
if err := hs.processHelloRetryRequest(); err != nil {
return err
}
Expand All @@ -66,9 +70,13 @@ func (hs *clientHandshakeStateTLS13) handshake() error {

hs.transcript.Write(hs.serverHello.marshal())

c.buffering = true
if err := hs.processServerHello(); err != nil {
return err
}
if err := hs.sendDummyChangeCipherSpec(); err != nil {
return err
}
if err := hs.establishHandshakeKeys(); err != nil {
return err
}
Expand All @@ -81,8 +89,6 @@ func (hs *clientHandshakeStateTLS13) handshake() error {
if err := hs.readServerFinished(); err != nil {
return err
}

c.buffering = true
if err := hs.sendClientCertificate(); err != nil {
return err
}
Expand Down Expand Up @@ -155,6 +161,18 @@ func (hs *clientHandshakeStateTLS13) checkServerHelloOrHRR() error {
return nil
}

// sendDummyChangeCipherSpec sends a ChangeCipherSpec record for compatibility
// with middleboxes that didn't implement TLS correctly. See RFC 8446, Appendix D.4.
func (hs *clientHandshakeStateTLS13) sendDummyChangeCipherSpec() error {
if hs.sentDummyCCS {
return nil
}
hs.sentDummyCCS = true

_, err := hs.c.writeRecord(recordTypeChangeCipherSpec, []byte{1})
return err
}

// processHelloRetryRequest handles the HRR in hs.serverHello, modifies and
// resends hs.hello, and reads the new ServerHello into hs.serverHello.
func (hs *clientHandshakeStateTLS13) processHelloRetryRequest() error {
Expand Down
21 changes: 21 additions & 0 deletions src/crypto/tls/handshake_server_tls13.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ type serverHandshakeStateTLS13 struct {
c *Conn
clientHello *clientHelloMsg
hello *serverHelloMsg
sentDummyCCS bool
suite *cipherSuiteTLS13
cert *Certificate
sigAlg SignatureScheme
Expand Down Expand Up @@ -205,6 +206,18 @@ GroupSelection:
return nil
}

// sendDummyChangeCipherSpec sends a ChangeCipherSpec record for compatibility
// with middleboxes that didn't implement TLS correctly. See RFC 8446, Appendix D.4.
func (hs *serverHandshakeStateTLS13) sendDummyChangeCipherSpec() error {
if hs.sentDummyCCS {
return nil
}
hs.sentDummyCCS = true

_, err := hs.c.writeRecord(recordTypeChangeCipherSpec, []byte{1})
return err
}

func (hs *serverHandshakeStateTLS13) doHelloRetryRequest(selectedGroup CurveID) error {
c := hs.c

Expand All @@ -231,6 +244,10 @@ func (hs *serverHandshakeStateTLS13) doHelloRetryRequest(selectedGroup CurveID)
return err
}

if err := hs.sendDummyChangeCipherSpec(); err != nil {
return err
}

msg, err := c.readHandshake()
if err != nil {
return err
Expand Down Expand Up @@ -329,6 +346,10 @@ func (hs *serverHandshakeStateTLS13) sendServerParameters() error {
return err
}

if err := hs.sendDummyChangeCipherSpec(); err != nil {
return err
}

clientSecret := hs.suite.deriveSecret(hs.handshakeSecret,
clientHandshakeTrafficLabel, hs.transcript)
c.in.setTrafficSecret(hs.suite, clientSecret)
Expand Down
169 changes: 101 additions & 68 deletions src/crypto/tls/testdata/Client-TLSv13-AES128-SHA256
Original file line number Diff line number Diff line change
Expand Up @@ -16,74 +16,107 @@
000000e0 a3 47 cd 62 43 15 28 da ac 5f bb 29 07 30 ff f6 |.G.bC.(.._.).0..|
000000f0 84 af c4 cf c2 ed 90 99 5f 58 cb 3b 74 |........_X.;t|
>>> Flow 2 (server to client)
00000000 16 03 03 00 7a 02 00 00 76 03 03 f0 8a 7b f4 40 |....z...v....{.@|
00000010 4d 58 1d e4 6a 58 d2 e9 dc 28 6b aa bc 2f 60 37 |MX..jX...(k../`7|
00000020 1c a3 3c ce 7d f2 97 8d ff 14 55 20 00 00 00 00 |..<.}.....U ....|
00000000 16 03 03 00 7a 02 00 00 76 03 03 cb 6b 3c f1 71 |....z...v...k<.q|
00000010 7d fb a1 03 ad d3 35 fb fa 9f f5 1b 58 62 c3 83 |}.....5.....Xb..|
00000020 18 d1 63 9f 14 57 e6 2d 82 f2 37 20 00 00 00 00 |..c..W.-..7 ....|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 13 01 00 00 |................|
00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 a4 |..+.....3.$... .|
00000060 23 1b 72 8e 09 ba fa 75 6c f5 cc c2 2a aa 3d 0f |#.r....ul...*.=.|
00000070 2e c1 f4 70 40 28 9b df 1e 92 2e cb a2 d5 41 14 |...p@(........A.|
00000080 03 03 00 01 01 17 03 03 00 17 1f f5 f9 57 54 6a |.............WTj|
00000090 02 3f 12 97 48 cb e1 df 85 00 58 8d ab 1d 95 55 |.?..H.....X....U|
000000a0 3f 17 03 03 02 6d 22 f9 23 08 b9 f2 5d 4a f5 9b |?....m".#...]J..|
000000b0 41 b5 16 33 dc e9 45 34 a8 15 19 0b b0 1e a4 57 |A..3..E4.......W|
000000c0 46 52 d9 53 ec 3c 7c 5c 6c e0 f4 2e 90 55 cc 74 |FR.S.<|\l....U.t|
000000d0 65 92 a3 1e f0 75 f0 13 c5 65 42 fb 0a 9d f3 bb |e....u...eB.....|
000000e0 d5 61 b7 70 74 4d d1 e4 28 f3 8d 0b f5 de 04 fa |.a.ptM..(.......|
000000f0 46 28 11 b9 d3 50 82 00 97 32 ac ff 19 ce 27 6b |F(...P...2....'k|
00000100 e9 a9 ae ec c2 49 5a 61 bf a0 c0 57 71 c1 00 76 |.....IZa...Wq..v|
00000110 e4 81 40 c0 96 81 0a 38 d4 6c b7 7f e3 52 7c 3d |..@....8.l...R|=|
00000120 bb e1 c8 e0 ef c4 f5 85 8e bc fc d5 5a 00 50 ea |............Z.P.|
00000130 54 a1 1b da 8c 31 0f 9f bc 13 a2 d1 89 93 8a 08 |T....1..........|
00000140 47 c5 5e 78 be 09 b5 34 e3 33 d3 38 16 9e 71 ca |G.^x...4.3.8..q.|
00000150 25 5b 7c 35 08 e6 2c 07 c3 0b 37 60 4a 7b 32 49 |%[|5..,...7`J{2I|
00000160 9b c4 24 28 6d 76 3e 04 8e 14 22 e9 f9 0d 58 25 |..$(mv>..."...X%|
00000170 ad 0a 31 8b 1f 0c 2e 50 65 3f 77 fc f9 ab a7 60 |..1....Pe?w....`|
00000180 6a 52 b0 a9 e5 47 f6 91 b6 72 7a 52 b7 fb c5 93 |jR...G...rzR....|
00000190 0a 4f 3e 0c 0c 12 5e 30 94 10 5f ee af 4a 40 d0 |.O>...^0.._..J@.|
000001a0 ba 2c 5b 88 18 86 f1 96 8b cd 28 41 44 59 5e 69 |.,[.......(ADY^i|
000001b0 be 24 bb 97 99 7e 70 9f 9b d7 bb 54 0b 32 73 bf |.$...~p....T.2s.|
000001c0 af 71 82 6b b5 21 b6 a0 85 f2 73 56 98 83 60 c0 |.q.k.!....sV..`.|
000001d0 70 34 c6 1b 7b 40 ee 5d 8e 79 7d bc ac 6b 3c c9 |p4..{@.].y}..k<.|
000001e0 9c 47 13 d9 08 a9 05 d6 43 38 19 a0 d6 37 e0 48 |.G......C8...7.H|
000001f0 dd f5 b5 2b e2 d8 25 07 35 5b 20 2f 0e 01 4a 93 |...+..%.5[ /..J.|
00000200 63 5c 07 b6 3b 7f 62 9a 85 f8 57 0a 69 db 2c 9b |c\..;.b...W.i.,.|
00000210 11 60 6d f3 2b 31 cc 4e 7d 93 bb 13 39 fd 85 da |.`m.+1.N}...9...|
00000220 cb 52 84 7e 36 89 28 ef 8f b5 04 c2 37 c3 33 04 |.R.~6.(.....7.3.|
00000230 ba cb 1b 45 23 2f 2a 49 5d 95 6e 95 d4 32 07 ba |...E#/*I].n..2..|
00000240 0e 2f 57 0b b2 a5 d9 6b 3e a5 ab f2 97 89 b9 23 |./W....k>......#|
00000250 5a 3f 11 8d 45 68 3e bc 8a 59 14 36 bc cc 33 b3 |Z?..Eh>..Y.6..3.|
00000260 50 e3 15 b3 ec 03 ba 52 2f dc 70 5b c0 2a 45 28 |P......R/.p[.*E(|
00000270 49 2f d0 c7 a1 5c e4 24 35 b0 78 04 fe 87 54 69 |I/...\.$5.x...Ti|
00000280 c5 6e 56 a7 f5 7f d1 cb 23 af 4a 52 5f 7c 0e 1d |.nV.....#.JR_|..|
00000290 5a 83 6a 69 f5 bc 99 74 30 ee 3c 05 2b 12 52 09 |Z.ji...t0.<.+.R.|
000002a0 b0 a2 36 86 14 70 44 dd ec 37 44 4b 8f bf e0 76 |..6..pD..7DK...v|
000002b0 99 c5 84 90 37 59 a3 e3 f7 57 fa ac bb 6b 04 6a |....7Y...W...k.j|
000002c0 1e 0f 9f 1d 63 b7 3a 47 48 dc 3b bc ff 4d 47 94 |....c.:GH.;..MG.|
000002d0 43 38 cb d5 c5 74 bc 6d 0a f3 ea fa 23 ac e5 0b |C8...t.m....#...|
000002e0 fa b9 61 b1 d9 20 5c c6 c8 32 2e fa 11 f0 99 90 |..a.. \..2......|
000002f0 d4 96 42 3a b6 09 f3 11 c9 e1 d8 2d ae 80 6a b0 |..B:.......-..j.|
00000300 21 7a b6 2d d7 37 93 bf 53 ad 82 eb fc f1 8f 21 |!z.-.7..S......!|
00000310 f0 bc fd 17 03 03 00 99 47 59 11 95 5b 84 48 92 |........GY..[.H.|
00000320 22 b1 4b b0 70 57 5c b4 67 41 53 ed a7 5b 38 eb |".K.pW\.gAS..[8.|
00000330 bf 10 65 4a f9 21 c4 63 72 a1 d9 06 f2 21 55 df |..eJ.!.cr....!U.|
00000340 ff 7e ee ea a3 37 00 f1 14 41 2f 71 b1 8e f1 c0 |.~...7...A/q....|
00000350 5d 5b 72 4b a5 99 1d 80 c1 e6 94 5d 78 17 46 81 |][rK.......]x.F.|
00000360 50 1c 6d dc a7 79 60 67 60 ae af fe 6f 84 67 81 |P.m..y`g`...o.g.|
00000370 bd b5 20 8e 3f 33 28 e4 6a 94 82 37 9d ea 26 71 |.. .?3(.j..7..&q|
00000380 65 9d 7d a3 c7 32 be ec 3c d0 c6 b5 a6 55 e6 d7 |e.}..2..<....U..|
00000390 72 49 14 3b 08 41 cb d8 cc d4 52 b5 c8 35 71 79 |rI.;.A....R..5qy|
000003a0 7d 90 d2 21 0c 61 cb f6 1c 73 0a b0 7d ff 7b 3e |}..!.a...s..}.{>|
000003b0 44 17 03 03 00 35 c1 39 ac b9 1b 43 33 1e 43 35 |D....5.9...C3.C5|
000003c0 50 d0 2f b9 f9 cf f9 c3 dd 1c 4c 1e 52 46 bd dc |P./.......L.RF..|
000003d0 48 93 4f e3 f3 46 27 81 0b 80 34 b4 5b a5 06 c9 |H.O..F'...4.[...|
000003e0 3c 3a 12 e3 33 45 9d d5 0c 1e 98 |<:..3E.....|
00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 50 |..+.....3.$... P|
00000060 5a 0c d6 69 92 a1 c7 2f 57 41 f3 29 b4 d3 a3 d3 |Z..i.../WA.)....|
00000070 b5 62 85 2a 1d 12 dc 46 d1 ac 96 b6 16 a5 39 14 |.b.*...F......9.|
00000080 03 03 00 01 01 17 03 03 00 17 1d a4 67 9f ac 28 |............g..(|
00000090 dc fe 5c 58 be c0 d0 72 9d 77 05 96 1a 9c ac 54 |..\X...r.w.....T|
000000a0 a2 17 03 03 02 6d 99 b0 fc 88 2d c2 fe 5b 84 1d |.....m....-..[..|
000000b0 38 f4 b9 70 87 b7 45 94 a5 09 e4 a3 2f 93 9a 9b |8..p..E...../...|
000000c0 ef 1f 80 a5 69 1d 81 47 d5 3e e0 f3 8e cd 1e 11 |....i..G.>......|
000000d0 ab 2d a1 1d a7 06 9c fd b4 dd aa 66 3e 8c e0 2f |.-.........f>../|
000000e0 cd e3 9a df 30 b4 c1 70 b0 be 2a 62 ba 3f f6 79 |....0..p..*b.?.y|
000000f0 aa 74 8b f4 4f 3e bc 5c 32 25 29 69 32 d4 90 6a |.t..O>.\2%)i2..j|
00000100 45 45 c5 93 94 4f 90 02 9c 23 45 e0 88 14 ae 6c |EE...O...#E....l|
00000110 e7 be 20 4e 47 ea 50 8e a0 c9 74 67 d2 97 d7 31 |.. NG.P...tg...1|
00000120 52 7e f7 5a a0 55 51 c8 8f 91 12 12 d7 0e 2b a5 |R~.Z.UQ.......+.|
00000130 ff 6c 5e 46 0d 2f d7 55 b6 c0 24 e1 5f e2 66 a0 |.l^F./.U..$._.f.|
00000140 32 c6 cf 88 d2 35 ec fd 17 1a ec 06 19 21 5b 6c |2....5.......![l|
00000150 eb ac 71 0a e6 3b d3 ea 51 05 33 45 28 ef 0b 25 |..q..;..Q.3E(..%|
00000160 7d 77 f1 76 6e fe f8 ef 74 21 ff 3b 7d 69 20 f2 |}w.vn...t!.;}i .|
00000170 7f 99 58 cd 8a 1a ab 87 c7 b0 9c a5 77 d7 b6 54 |..X.........w..T|
00000180 27 e5 5d ac 25 b7 7a 4a 4e 8a 74 cd 17 bf 86 4b |'.].%.zJN.t....K|
00000190 d4 fd a7 74 3f 03 68 d6 67 cf 05 3d 13 95 81 62 |...t?.h.g..=...b|
000001a0 80 1a f7 d3 3c 39 3d 8b 8c 68 20 4a c4 ee 16 06 |....<9=..h J....|
000001b0 5d 2f 3c cf 0d 26 0b 14 1a 4f 64 e4 25 c3 b5 63 |]/<..&...Od.%..c|
000001c0 86 32 82 78 ad 3e 79 c8 c8 e5 29 78 4a a5 98 81 |.2.x.>y...)xJ...|
000001d0 57 61 e9 3c dc f1 88 ba a9 5b 8d e1 c1 08 a8 ed |Wa.<.....[......|
000001e0 c8 06 3b f7 7a 60 c7 f2 cd ea 2f 7e 0c 30 1d 2b |..;.z`..../~.0.+|
000001f0 e4 d6 e3 46 2d 2f d5 26 4f 63 a4 b7 7a ff 8b 29 |...F-/.&Oc..z..)|
00000200 21 06 53 8d 99 57 f7 63 c6 72 96 cc 47 9a 80 cc |!.S..W.c.r..G...|
00000210 03 d5 96 3b bc ad 05 7e 49 f5 6f e6 f7 8c ae 55 |...;...~I.o....U|
00000220 b9 59 98 a6 93 22 43 9d 62 d9 ae ba 80 c6 82 e4 |.Y..."C.b.......|
00000230 d9 44 36 de ec dc 89 f3 45 ee bd 58 ff f5 fa de |.D6.....E..X....|
00000240 85 9b 0f fe 48 a1 0f 36 a4 ff f8 43 7b 18 74 49 |....H..6...C{.tI|
00000250 87 d6 bd f0 2b b3 fd 00 8a 86 8c d1 c1 7d 66 38 |....+........}f8|
00000260 f7 f9 72 36 77 17 7d 18 1c e6 4b 23 30 0c a4 e7 |..r6w.}...K#0...|
00000270 34 a9 39 83 3c 25 d1 de 0d f4 61 85 7b 01 92 9f |4.9.<%....a.{...|
00000280 e7 47 08 e2 fa 84 59 97 8c c5 55 47 27 4f 00 da |.G....Y...UG'O..|
00000290 ab 88 bf b8 fe 84 36 5f b4 f1 f1 28 75 55 29 af |......6_...(uU).|
000002a0 b8 a9 1b 46 dc 65 c7 97 27 4c 9a dc 00 59 3a 02 |...F.e..'L...Y:.|
000002b0 05 2e ed b0 f1 30 74 14 dd 51 08 44 b2 9f 38 1c |.....0t..Q.D..8.|
000002c0 03 3c 8f 00 ad 28 e9 27 bd 75 c3 4a f6 70 5e 79 |.<...(.'.u.J.p^y|
000002d0 7e 38 b3 df 5a 4f 69 11 f2 37 2f 52 cd cc f9 35 |~8..ZOi..7/R...5|
000002e0 16 49 01 24 32 8a e6 da 6b 4e a8 92 a0 d7 73 7b |.I.$2...kN....s{|
000002f0 fb 4c 0f 00 0e 82 d7 27 d3 22 f9 82 de 41 0b 1a |.L.....'."...A..|
00000300 2e d3 6c 97 cb 53 b0 6c 25 b5 65 86 8e 50 87 e0 |..l..S.l%.e..P..|
00000310 4b e6 6d 17 03 03 00 99 e1 28 35 0e 69 35 4a 55 |K.m......(5.i5JU|
00000320 12 ab 1c 8d 43 b4 a4 44 2b 56 3c 5d c6 1b 3a a8 |....C..D+V<]..:.|
00000330 df 0a e8 5d c2 a6 4f 83 c0 dc 07 87 53 0c 1f 63 |...]..O.....S..c|
00000340 e2 db f0 f7 16 e9 e8 f5 5f 5a f9 b1 f1 8d 36 1d |........_Z....6.|
00000350 53 47 60 3f ea 22 f7 6c 7c e7 e6 79 b1 85 f2 27 |SG`?.".l|..y...'|
00000360 5c ef 1e 99 52 5f 06 67 b3 8b 6d 13 83 06 c0 06 |\...R_.g..m.....|
00000370 ef fa 1b 9f 92 ec 5b e5 b3 25 64 79 6c 90 11 e1 |......[..%dyl...|
00000380 13 61 5b bf e9 4f 08 35 81 80 86 b7 77 ae 52 29 |.a[..O.5....w.R)|
00000390 9b 24 1e b0 55 23 ca 69 2f be d1 01 38 e8 79 a8 |.$..U#.i/...8.y.|
000003a0 e2 f7 61 0f 32 ca ff 09 44 84 84 79 19 22 54 1e |..a.2...D..y."T.|
000003b0 22 17 03 03 00 35 00 a1 ea bc bd 87 41 67 cc 5e |"....5......Ag.^|
000003c0 2f 4b 1c 52 c2 56 2c 69 7e 69 9b a3 06 69 b5 0b |/K.R.V,i~i...i..|
000003d0 6c 2e 1f de 53 9d 82 22 b7 36 9f ac 0e 7a 83 e5 |l...S..".6...z..|
000003e0 18 30 5b a9 b7 15 5a 16 87 97 1b |.0[...Z....|
>>> Flow 3 (client to server)
00000000 17 03 03 00 35 da 94 f3 ee 16 d5 21 2c be 50 e4 |....5......!,.P.|
00000010 08 a2 44 90 27 9a 22 44 9f 04 c8 1f 6c 97 57 54 |..D.'."D....l.WT|
00000020 da 4b 84 f2 f5 7e be 86 2a 19 f3 ed b6 05 e8 30 |.K...~..*......0|
00000030 a2 ca ee a0 71 bb 75 8d ed fe 17 03 03 00 17 db |....q.u.........|
00000040 f3 61 60 d9 d2 80 c8 87 17 66 37 b6 e3 a3 27 37 |.a`......f7...'7|
00000050 c1 91 69 35 60 f6 17 03 03 00 13 e9 c3 a2 1e a4 |..i5`...........|
00000060 84 65 d3 bb 97 7a 14 1d 4e ae 8b 3f 42 ac |.e...z..N..?B.|
00000000 14 03 03 00 01 01 17 03 03 00 35 23 b7 8d d5 9b |..........5#....|
00000010 e4 f6 21 27 94 5b 11 76 5c 1f ff f3 19 f8 43 a2 |..!'.[.v\.....C.|
00000020 4d 07 68 00 a1 de 53 c9 80 f9 e7 fa 56 2c 6b b8 |M.h...S.....V,k.|
00000030 bc 09 5e 61 ea 0c da c8 89 1c 41 95 55 0d ef 94 |..^a......A.U...|
00000040 17 03 03 00 17 9a 18 9a 29 27 19 1b 06 da 82 78 |........)'.....x|
00000050 da 9a 91 77 36 47 ce 25 72 dc b9 26 |...w6G.%r..&|
>>> Flow 4 (server to client)
00000000 17 03 03 00 ea d6 5f a3 a5 14 87 cc 16 54 4c a0 |......_......TL.|
00000010 57 34 92 34 4d 37 fb 27 2b 71 f7 cf ac 93 96 87 |W4.4M7.'+q......|
00000020 9a 1f 8d 58 cf 3a 0d 8c 00 e2 03 b1 6e e1 9f d3 |...X.:......n...|
00000030 f4 dc 17 73 70 59 52 03 a7 fc 99 cb d2 2d 0e c8 |...spYR......-..|
00000040 91 5c 18 42 a3 20 9b 1c 20 86 bc 15 71 5b b4 7d |.\.B. .. ...q[.}|
00000050 80 8d cf 1d 15 33 b8 aa 66 9d f0 f9 08 dc 7c 78 |.....3..f.....|x|
00000060 b7 12 48 11 e1 00 1c e7 3e b3 8b fe bf 07 6d 6d |..H.....>.....mm|
00000070 4c 7b 16 90 cb 8c da 03 a8 81 94 5c 76 09 c4 bf |L{.........\v...|
00000080 26 b4 2b fd 9c 44 b5 c0 49 4b 83 58 70 80 8f 7f |&.+..D..IK.Xp...|
00000090 1e f8 d0 b4 5d 6e a2 78 f0 8c 9d 0b e8 1a 0b b4 |....]n.x........|
000000a0 66 7e 74 88 35 a4 d0 a3 ab 6c b5 2a 90 3c ba 09 |f~t.5....l.*.<..|
000000b0 9c 4e 72 b7 9a ba f9 1f bb a9 bf 03 94 43 7a d2 |.Nr..........Cz.|
000000c0 25 2f c5 e8 83 89 37 1f ac 7b 22 7c 01 7e dc 97 |%/....7..{"|.~..|
000000d0 b3 05 5c 60 5b 22 2f be 8c 05 e8 1a a6 51 45 13 |..\`["/......QE.|
000000e0 7f 20 b9 24 f0 a6 7c 1d 21 37 b8 6c 47 9e e8 17 |. .$..|.!7.lG...|
000000f0 03 03 00 ea c1 05 ef 9c bf 4c 1a d9 36 0d d4 d0 |.........L..6...|
00000100 68 47 ac 8b c6 13 71 17 94 e7 74 8e 21 78 91 79 |hG....q...t.!x.y|
00000110 50 19 4e 43 0d f7 e9 a9 62 e5 25 17 67 3e 38 27 |P.NC....b.%.g>8'|
00000120 dd 3b 5d e9 ec cb 0f b7 1f aa bd 75 76 f7 88 b8 |.;]........uv...|
00000130 c6 60 2f b7 ad 89 17 bb bd d2 86 55 72 bd 52 10 |.`/........Ur.R.|
00000140 21 4d 92 2d c1 a8 24 18 63 ca 0a 38 90 6b 39 5c |!M.-..$.c..8.k9\|
00000150 76 58 ad 62 e5 57 e0 b5 d5 af c9 9b 64 84 76 48 |vX.b.W......d.vH|
00000160 4d 7f a7 32 09 50 f7 9e 92 ad ed 8e b5 0f 10 27 |M..2.P.........'|
00000170 45 bc 58 fd be 91 35 97 ec 71 af d5 6a e1 04 26 |E.X...5..q..j..&|
00000180 00 b3 91 4f a2 be ba b8 06 f1 2f 43 21 a6 0b ba |...O....../C!...|
00000190 43 b5 dd a6 cd a6 b1 1c 37 28 90 26 c4 af 71 56 |C.......7(.&..qV|
000001a0 26 4d 39 39 60 88 8d ae d1 3e 6e 7e 15 cb 60 1c |&M99`....>n~..`.|
000001b0 d2 00 c3 02 b6 2b 81 ea 60 1b 3a a8 a4 dc 29 c0 |.....+..`.:...).|
000001c0 df 86 41 b8 27 89 3a ca bc 31 19 ca 18 08 9e 96 |..A.'.:..1......|
000001d0 e7 b4 6b 78 8d d4 9a 75 1a 48 fb 49 6a 29 |..kx...u.H.Ij)|
>>> Flow 5 (client to server)
00000000 17 03 03 00 13 d5 5b 3c bb 8b 4d f2 c2 d8 dc 0b |......[<..M.....|
00000010 5a 94 49 38 ed 11 91 8a |Z.I8....|
Loading

0 comments on commit dc0be72

Please sign in to comment.