mirror of
https://github.com/refraction-networking/utls.git
synced 2025-04-03 20:17:36 +03:00
Implement a basic TLS 1.3 server handshake, only enabled if explicitly requested with MaxVersion. This CL intentionally leaves for future CLs: - PSK modes and resumption - client authentication - compatibility mode ChangeCipherSpecs - early data skipping - post-handshake messages - downgrade protection - KeyLogWriter support - TLS_FALLBACK_SCSV processing It also leaves a few areas up for a wider refactor (maybe in Go 1.13): - the certificate selection logic can be significantly improved, including supporting and surfacing signature_algorithms_cert, but this isn't new in TLS 1.3 (see comment in processClientHello) - handshake_server_tls13.go can be dried up and broken into more meaningful, smaller functions, but it felt premature to do before PSK and client auth support - the monstrous ClientHello equality check in doHelloRetryRequest can get both cleaner and more complete with collaboration from the parsing layer, which can come at the same time as extension duplicates detection Updates #9671 Change-Id: Id9db2b6ecc2eea21bf9b59b6d1d9c84a7435151c Reviewed-on: https://go-review.googlesource.com/c/147017 Run-TryBot: Filippo Valsorda <filippo@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
85 lines
6.3 KiB
Text
85 lines
6.3 KiB
Text
>>> Flow 1 (client to server)
|
|
00000000 16 03 01 00 8f 01 00 00 8b 03 03 74 08 f5 ee 24 |...........t...$|
|
|
00000010 cb c0 26 fc f1 11 c6 9d fb ac f5 ed d1 05 78 e6 |..&...........x.|
|
|
00000020 cf a6 cb f2 ed 1a 46 3a cf 25 8b 00 00 04 c0 2f |......F:.%...../|
|
|
00000030 00 ff 01 00 00 5e 00 00 00 0e 00 0c 00 00 09 31 |.....^.........1|
|
|
00000040 32 37 2e 30 2e 30 2e 31 00 0b 00 04 03 00 01 02 |27.0.0.1........|
|
|
00000050 00 0a 00 04 00 02 00 17 00 16 00 00 00 17 00 00 |................|
|
|
00000060 00 0d 00 30 00 2e 04 03 05 03 06 03 08 07 08 08 |...0............|
|
|
00000070 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 |................|
|
|
00000080 06 01 03 03 02 03 03 01 02 01 03 02 02 02 04 02 |................|
|
|
00000090 05 02 06 02 |....|
|
|
>>> Flow 2 (server to client)
|
|
00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......|
|
|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
|
|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 c0 2f 00 00 |............./..|
|
|
00000030 05 ff 01 00 01 00 16 03 03 02 59 0b 00 02 55 00 |..........Y...U.|
|
|
00000040 02 52 00 02 4f 30 82 02 4b 30 82 01 b4 a0 03 02 |.R..O0..K0......|
|
|
00000050 01 02 02 09 00 e8 f0 9d 3f e2 5b ea a6 30 0d 06 |........?.[..0..|
|
|
00000060 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 1f 31 0b |.*.H........0.1.|
|
|
00000070 30 09 06 03 55 04 0a 13 02 47 6f 31 10 30 0e 06 |0...U....Go1.0..|
|
|
00000080 03 55 04 03 13 07 47 6f 20 52 6f 6f 74 30 1e 17 |.U....Go Root0..|
|
|
00000090 0d 31 36 30 31 30 31 30 30 30 30 30 30 5a 17 0d |.160101000000Z..|
|
|
000000a0 32 35 30 31 30 31 30 30 30 30 30 30 5a 30 1a 31 |250101000000Z0.1|
|
|
000000b0 0b 30 09 06 03 55 04 0a 13 02 47 6f 31 0b 30 09 |.0...U....Go1.0.|
|
|
000000c0 06 03 55 04 03 13 02 47 6f 30 81 9f 30 0d 06 09 |..U....Go0..0...|
|
|
000000d0 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 30 |*.H............0|
|
|
000000e0 81 89 02 81 81 00 db 46 7d 93 2e 12 27 06 48 bc |.......F}...'.H.|
|
|
000000f0 06 28 21 ab 7e c4 b6 a2 5d fe 1e 52 45 88 7a 36 |.(!.~...]..RE.z6|
|
|
00000100 47 a5 08 0d 92 42 5b c2 81 c0 be 97 79 98 40 fb |G....B[.....y.@.|
|
|
00000110 4f 6d 14 fd 2b 13 8b c2 a5 2e 67 d8 d4 09 9e d6 |Om..+.....g.....|
|
|
00000120 22 38 b7 4a 0b 74 73 2b c2 34 f1 d1 93 e5 96 d9 |"8.J.ts+.4......|
|
|
00000130 74 7b f3 58 9f 6c 61 3c c0 b0 41 d4 d9 2b 2b 24 |t{.X.la<..A..++$|
|
|
00000140 23 77 5b 1c 3b bd 75 5d ce 20 54 cf a1 63 87 1d |#w[.;.u]. T..c..|
|
|
00000150 1e 24 c4 f3 1d 1a 50 8b aa b6 14 43 ed 97 a7 75 |.$....P....C...u|
|
|
00000160 62 f4 14 c8 52 d7 02 03 01 00 01 a3 81 93 30 81 |b...R.........0.|
|
|
00000170 90 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 05 |.0...U..........|
|
|
00000180 a0 30 1d 06 03 55 1d 25 04 16 30 14 06 08 2b 06 |.0...U.%..0...+.|
|
|
00000190 01 05 05 07 03 01 06 08 2b 06 01 05 05 07 03 02 |........+.......|
|
|
000001a0 30 0c 06 03 55 1d 13 01 01 ff 04 02 30 00 30 19 |0...U.......0.0.|
|
|
000001b0 06 03 55 1d 0e 04 12 04 10 9f 91 16 1f 43 43 3e |..U..........CC>|
|
|
000001c0 49 a6 de 6d b6 80 d7 9f 60 30 1b 06 03 55 1d 23 |I..m....`0...U.#|
|
|
000001d0 04 14 30 12 80 10 48 13 49 4d 13 7e 16 31 bb a3 |..0...H.IM.~.1..|
|
|
000001e0 01 d5 ac ab 6e 7b 30 19 06 03 55 1d 11 04 12 30 |....n{0...U....0|
|
|
000001f0 10 82 0e 65 78 61 6d 70 6c 65 2e 67 6f 6c 61 6e |...example.golan|
|
|
00000200 67 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 |g0...*.H........|
|
|
00000210 03 81 81 00 9d 30 cc 40 2b 5b 50 a0 61 cb ba e5 |.....0.@+[P.a...|
|
|
00000220 53 58 e1 ed 83 28 a9 58 1a a9 38 a4 95 a1 ac 31 |SX...(.X..8....1|
|
|
00000230 5a 1a 84 66 3d 43 d3 2d d9 0b f2 97 df d3 20 64 |Z..f=C.-...... d|
|
|
00000240 38 92 24 3a 00 bc cf 9c 7d b7 40 20 01 5f aa d3 |8.$:....}.@ ._..|
|
|
00000250 16 61 09 a2 76 fd 13 c3 cc e1 0c 5c ee b1 87 82 |.a..v......\....|
|
|
00000260 f1 6c 04 ed 73 bb b3 43 77 8d 0c 1c f1 0f a1 d8 |.l..s..Cw.......|
|
|
00000270 40 83 61 c9 4c 72 2b 9d ae db 46 06 06 4d f4 c1 |@.a.Lr+...F..M..|
|
|
00000280 b3 3e c0 d1 bd 42 d4 db fe 3d 13 60 84 5c 21 d3 |.>...B...=.`.\!.|
|
|
00000290 3b e9 fa e7 16 03 03 00 cd 0c 00 00 c9 03 00 17 |;...............|
|
|
000002a0 41 04 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 |A...7...Q.5uq..T|
|
|
000002b0 5b 12 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 |[....g..$ >.V...|
|
|
000002c0 28 5e f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 |(^.+-O....lK[.V.|
|
|
000002d0 32 42 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc |2B.X..I..h.A.Vk.|
|
|
000002e0 5a 89 08 04 00 80 7b f8 9c bb af 20 2b b4 44 40 |Z.....{.... +.D@|
|
|
000002f0 0d bc 31 37 53 26 d4 74 b6 0b 5b 79 f5 a9 ea 2f |..17S&.t..[y.../|
|
|
00000300 e7 4f 58 42 a1 d1 43 96 bf 74 dd 2e 33 28 bd b1 |.OXB..C..t..3(..|
|
|
00000310 0b 8a eb d7 6c 1d 7a 71 3d 61 0b f1 8e 8c f8 32 |....l.zq=a.....2|
|
|
00000320 7a ec 60 ed 4a 84 67 ad 23 f0 c8 68 27 4d 82 d9 |z.`.J.g.#..h'M..|
|
|
00000330 15 58 38 cf 0a ec 5a 15 b8 14 e2 95 c6 6c b5 f3 |.X8...Z......l..|
|
|
00000340 5b ee 01 1c f7 00 83 ae e4 c8 89 77 8b 64 7b 9a |[..........w.d{.|
|
|
00000350 52 a3 c0 1c 6c 19 bc 3d 28 19 24 04 8d 2d 1c 7e |R...l..=(.$..-.~|
|
|
00000360 4d 56 01 64 f6 3c 16 03 03 00 04 0e 00 00 00 |MV.d.<.........|
|
|
>>> Flow 3 (client to server)
|
|
00000000 16 03 03 00 46 10 00 00 42 41 04 06 a5 96 8c 26 |....F...BA.....&|
|
|
00000010 fb 4e 33 6d 4f 28 6a 84 af 17 7e 6c 36 ca be 3b |.N3mO(j...~l6..;|
|
|
00000020 a2 0b b1 82 1d 35 37 02 09 f3 f0 c4 88 a9 82 1f |.....57.........|
|
|
00000030 df b5 c2 09 ed a9 7a e5 80 71 76 14 a8 98 03 08 |......z..qv.....|
|
|
00000040 25 04 94 03 4a c0 2a cb 77 bd e2 14 03 03 00 01 |%...J.*.w.......|
|
|
00000050 01 16 03 03 00 28 f4 25 33 55 25 c7 6d c9 e5 68 |.....(.%3U%.m..h|
|
|
00000060 09 5c 05 c5 49 78 82 08 20 7b 96 1b f8 5c 1a 41 |.\..Ix.. {...\.A|
|
|
00000070 be a3 4d 4c 01 3d 16 fa 3a f6 dc 37 5e 3b |..ML.=..:..7^;|
|
|
>>> Flow 4 (server to client)
|
|
00000000 14 03 03 00 01 01 16 03 03 00 28 00 00 00 00 00 |..........(.....|
|
|
00000010 00 00 00 24 72 76 66 ac a0 75 a4 5b 80 c8 f8 52 |...$rvf..u.[...R|
|
|
00000020 4b e3 8f 5a 02 f1 44 16 18 e6 ef b8 d3 51 50 f0 |K..Z..D......QP.|
|
|
00000030 06 b7 22 17 03 03 00 25 00 00 00 00 00 00 00 01 |.."....%........|
|
|
00000040 a0 f8 ed 7c ec 72 b8 fb 2a 6f 8b 61 83 ce 10 a0 |...|.r..*o.a....|
|
|
00000050 0e 45 39 ce 20 c1 b4 6e e1 a9 a6 e9 13 15 03 03 |.E9. ..n........|
|
|
00000060 00 1a 00 00 00 00 00 00 00 02 ca ce 38 1c fe db |............8...|
|
|
00000070 f3 53 18 ff fd b2 31 17 07 4d 99 10 |.S....1..M..|
|