Compare commits

...
67 Commits
Author SHA1 Message Date
Gopher Robot aae6e61070 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I06b2bb01f1557af02a8bf172ee85973695506906
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/670095
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: David Chase <drchase@google.com>
2025-05-05 11:47:08 -07:00
Nicola Murino 9c1aa6af88 ssh/test: reset the random source before capturing a recording
If a recording file exists but is invalid for any reason, the random
source may have already been used, resulting in a recording that
cannot be replayed.

Change-Id: Ib81aaf163f5783fede2c14a0ac10a8d2af6019c6
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/664917
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
2025-04-18 04:19:36 -07:00
Nicola Murino 88199028d7 ssh/test: enable Diffie-Hellman key exchange algorithms
starting with OpenSSH 10, all Diffie-Hellman key exchange algorithms
are disabled by default. To generate recordings, we must explicitly
enable them.

Change-Id: Icfbf46b30478f36d7040991e0f6324b9b4766aaf
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/665115
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
2025-04-18 04:18:34 -07:00
Ian Stapleton Cordasco 3f311e442e acme: return error from pre-authorization when unsupported
Check the directory's AuthzURL to see if the server supports
pre-authorization. If it's empty, then the server is not advertising
support and we can encounter other bugs. Better to return early and give
a clear error to the caller.

From https://www.rfc-editor.org/rfc/rfc8555#section-7.4.1

    If a CA wishes to allow pre-authorization within ACME, it can offer a
    "new authorization" resource in its directory by adding the field
    "newAuthz" with a URL for the newAuthz resource.

Fixes golang/go#40839

Change-Id: Id3e92e8e2ae3c57285183d37544dd59b4988b3be
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/661675
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
2025-04-17 11:16:57 -07:00
Nicola Murino 1f7c62cd66 ssh/test: skip unsupported tests on js/wasm
This fixes the build on the js/wasm builder.

Change-Id: Icd891cd38b9da07279b9afaa168f7c64c81e13fe
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/665095
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2025-04-16 08:28:17 -07:00
Alberto Bertogli a5f804889e acme/autocert: use standard functions to pick the cache directory
acme/autocert currently has ad-hoc logic to find a reasonable default
for a cache directory.

Since that logic was written (in 2017), new functions were added to the
os package to provide that functionality (in Go 1.13, 2019-09):
`os.UserCacheDir` and `os.UserHomeDir`.

This patch replaces the ad-hoc logic with a call to `os.UserCacheDir`.

The fallback to `/` is kept, since it may be relied upon in some
environments.

Change-Id: I3bf692ca670b87bf3d329e5d3684eee15ed374aa
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/440195
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Auto-Submit: Sean Liao <sean@liao.dev>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Sean Liao <sean@liao.dev>
2025-04-16 08:16:13 -07:00
Michael Pratt 958cde86ef Revert "chacha20: add loong64 SIMD implementation"
This reverts CL 636257.

Reason for revert: Does not build on 1.23 or 1.24

For golang/go#73354.

Change-Id: Ie28d5c45930a8eacd5cabed64390ef674b3fb446
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/665536
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Auto-Submit: Michael Pratt <mpratt@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-04-16 06:50:31 -07:00
Michael Pratt 51f005cfd4 Revert "salsa20: add loong64 SIMD implementation"
This reverts CL 663375.

Reason for revert: Does not build on 1.23 or 1.24

For golang/go#73354.

Change-Id: I251d598423b83c01cc2e04ddf6f49ae14095fa7c
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/665535
Auto-Submit: Michael Pratt <mpratt@google.com>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-04-16 06:50:29 -07:00
Michael Pratt 7c358664da Revert "argon2: add loong64 SIMD implementation"
This reverts CL 657795.

Reason for revert: Does not build on 1.23 or 1.24

For golang/go#73354.

Change-Id: I69498f24b57bd6650c9d1f4c755922cfaaba4a84
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/665555
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Auto-Submit: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2025-04-16 06:49:50 -07:00
Michael Pratt 0091fc8e7c Revert "blake2s: add loong64 SIMD implementation"
This reverts CL 661215.

Reason for revert: Does not build on 1.23 or 1.24

Fixes #73354.

Change-Id: I90abd8a3dabf5c0d9fd1062de3ba3e78ecb2f2e8
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/664796
Reviewed-by: Carlos Amedee <carlos@golang.org>
Auto-Submit: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-04-14 04:06:44 -07:00
Xiaolin Zhao 388684e50b argon2: add loong64 SIMD implementation
The performance gains on Loongson 3A6000 and 3A5000 are as follows:

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/argon2
cpu: Loongson-3A6000-HV @ 2500.00MHz
                                             |  bench.old   |              bench.new              |
                                             |    sec/op    |   sec/op     vs base                |
Argon2i/_Time:_3_Memory:_32_MB,_Threads:_1     131.23m ± 0%   67.56m ± 1%  -48.52% (p=0.000 n=10)
Argon2i/_Time:_4_Memory:_32_MB,_Threads:_1     171.28m ± 2%   90.20m ± 0%  -47.34% (p=0.000 n=10)
Argon2i/_Time:_5_Memory:_32_MB,_Threads:_1      213.3m ± 0%   112.6m ± 0%  -47.21% (p=0.000 n=10)
Argon2i/_Time:_3_Memory:_64_MB,_Threads:_4      269.5m ± 0%   147.2m ± 0%  -45.37% (p=0.000 n=10)
Argon2i/_Time:_4_Memory:_64_MB,_Threads:_4      357.7m ± 0%   195.4m ± 0%  -45.36% (p=0.000 n=10)
Argon2i/_Time:_5_Memory:_64_MB,_Threads:_4      449.8m ± 0%   243.8m ± 0%  -45.79% (p=0.000 n=10)
Argon2d/_Time:_3,_Memory:_32_MB,_Threads:_1    126.56m ± 0%   67.43m ± 0%  -46.72% (p=0.000 n=10)
Argon2d/_Time:_4,_Memory:_32_MB,_Threads:_1    168.57m ± 0%   90.04m ± 0%  -46.58% (p=0.000 n=10)
Argon2d/_Time:_5,_Memory:_32_MB,_Threads:_1     210.5m ± 0%   112.7m ± 0%  -46.45% (p=0.000 n=10)
Argon2d/_Time:_3,_Memory:_64_MB,_Threads:_4     264.8m ± 0%   145.0m ± 1%  -45.23% (p=0.000 n=10)
Argon2d/_Time:_4,_Memory:_64_MB,_Threads:_4     353.8m ± 0%   193.7m ± 0%  -45.26% (p=0.000 n=10)
Argon2d/_Time:_5,_Memory:_64_MB,_Threads:_4     444.4m ± 0%   242.3m ± 0%  -45.49% (p=0.000 n=10)
Argon2id/_Time:_3,_Memory:_32_MB,_Threads:_1   126.89m ± 0%   66.62m ± 0%  -47.50% (p=0.000 n=10)
Argon2id/_Time:_4,_Memory:_32_MB,_Threads:_1   169.02m ± 0%   89.07m ± 0%  -47.30% (p=0.000 n=10)
Argon2id/_Time:_5,_Memory:_32_MB,_Threads:_1    210.7m ± 0%   111.0m ± 0%  -47.34% (p=0.000 n=10)
Argon2id/_Time:_3,_Memory:_64_MB,_Threads:_4    267.6m ± 1%   145.8m ± 0%  -45.51% (p=0.000 n=10)
Argon2id/_Time:_4,_Memory:_64_MB,_Threads:_4    355.1m ± 0%   194.1m ± 0%  -45.34% (p=0.000 n=10)
Argon2id/_Time:_5,_Memory:_64_MB,_Threads:_4    443.6m ± 0%   242.5m ± 0%  -45.33% (p=0.000 n=10)
geomean                                         240.8m        129.3m       -46.32%

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/argon2
cpu: Loongson-3A5000 @ 2500.00MHz
                                             |  bench.old  |              bench.new              |
                                             |   sec/op    |   sec/op     vs base                |
Argon2i/_Time:_3_Memory:_32_MB,_Threads:_1     209.9m ± 1%   109.7m ± 2%  -47.75% (p=0.000 n=10)
Argon2i/_Time:_4_Memory:_32_MB,_Threads:_1     278.1m ± 0%   143.7m ± 0%  -48.34% (p=0.000 n=10)
Argon2i/_Time:_5_Memory:_32_MB,_Threads:_1     346.7m ± 0%   178.1m ± 0%  -48.63% (p=0.000 n=10)
Argon2i/_Time:_3_Memory:_64_MB,_Threads:_4     455.3m ± 0%   240.8m ± 0%  -47.12% (p=0.000 n=10)
Argon2i/_Time:_4_Memory:_64_MB,_Threads:_4     604.6m ± 0%   317.7m ± 0%  -47.45% (p=0.000 n=10)
Argon2i/_Time:_5_Memory:_64_MB,_Threads:_4     754.8m ± 0%   395.4m ± 0%  -47.61% (p=0.000 n=10)
Argon2d/_Time:_3,_Memory:_32_MB,_Threads:_1    206.9m ± 1%   107.6m ± 0%  -48.00% (p=0.000 n=10)
Argon2d/_Time:_4,_Memory:_32_MB,_Threads:_1    274.3m ± 0%   141.8m ± 1%  -48.32% (p=0.000 n=10)
Argon2d/_Time:_5,_Memory:_32_MB,_Threads:_1    342.4m ± 0%   175.6m ± 0%  -48.71% (p=0.000 n=10)
Argon2d/_Time:_3,_Memory:_64_MB,_Threads:_4    450.2m ± 0%   237.9m ± 0%  -47.15% (p=0.000 n=10)
Argon2d/_Time:_4,_Memory:_64_MB,_Threads:_4    597.7m ± 0%   314.0m ± 0%  -47.46% (p=0.000 n=10)
Argon2d/_Time:_5,_Memory:_64_MB,_Threads:_4    745.8m ± 0%   390.7m ± 1%  -47.61% (p=0.000 n=10)
Argon2id/_Time:_3,_Memory:_32_MB,_Threads:_1   207.6m ± 0%   107.9m ± 0%  -48.05% (p=0.000 n=10)
Argon2id/_Time:_4,_Memory:_32_MB,_Threads:_1   275.0m ± 0%   142.0m ± 0%  -48.34% (p=0.000 n=10)
Argon2id/_Time:_5,_Memory:_32_MB,_Threads:_1   342.9m ± 1%   176.0m ± 0%  -48.66% (p=0.000 n=10)
Argon2id/_Time:_3,_Memory:_64_MB,_Threads:_4   450.6m ± 1%   238.5m ± 0%  -47.07% (p=0.000 n=10)
Argon2id/_Time:_4,_Memory:_64_MB,_Threads:_4   598.5m ± 1%   314.6m ± 0%  -47.44% (p=0.000 n=10)
Argon2id/_Time:_5,_Memory:_64_MB,_Threads:_4   746.4m ± 0%   391.0m ± 0%  -47.61% (p=0.000 n=10)
geomean                                        398.6m        207.9m       -47.86%

Change-Id: Iaa9d134d68dd2f0972fc5768d7e66f7b1ff0ebd3
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/657795
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
2025-04-13 20:23:35 -07:00
Xiaolin Zhao 953e809589 chacha20: add loong64 SIMD implementation
The performance of chacha20 has been greatly improved on 3A6000 and 3A5000.

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/chacha20
cpu: Loongson-3A6000 @ 2500.00MHz
                 |  bench.old   |              bench.new              |
                 |    sec/op    |   sec/op     vs base                |
ChaCha20/64         171.9n ± 0%   159.3n ± 0%   -7.33% (p=0.000 n=20)
ChaCha20/256        592.2n ± 0%   142.8n ± 0%  -75.89% (p=0.000 n=20)
ChaCha20/10x25      981.5n ± 0%   518.8n ± 0%  -47.14% (p=0.000 n=20)
ChaCha20/4096       8.991µ ± 0%   1.732µ ± 0%  -80.74% (p=0.000 n=20)
ChaCha20/100x40    10.651µ ± 0%   5.135µ ± 0%  -51.79% (p=0.000 n=20)
ChaCha20/65536     143.43µ ± 0%   28.76µ ± 0%  -79.95% (p=0.000 n=20)
ChaCha20/1000x65   146.17µ ± 0%   37.13µ ± 0%  -74.60% (p=0.000 n=20)
geomean             5.721µ        1.962µ       -65.70%

                 |  bench.old   |               bench.new                |
                 |     B/s      |      B/s       vs base                 |
ChaCha20/64        355.1Mi ± 0%    383.1Mi ± 0%    +7.89% (p=0.000 n=20)
ChaCha20/256       412.2Mi ± 0%   1710.2Mi ± 0%  +314.86% (p=0.000 n=20)
ChaCha20/10x25     242.9Mi ± 0%    459.6Mi ± 0%   +89.19% (p=0.000 n=20)
ChaCha20/4096      434.5Mi ± 0%   2255.8Mi ± 0%  +419.22% (p=0.000 n=20)
ChaCha20/100x40    358.1Mi ± 0%    742.9Mi ± 0%  +107.44% (p=0.000 n=20)
ChaCha20/65536     435.8Mi ± 0%   2173.2Mi ± 0%  +398.72% (p=0.000 n=20)
ChaCha20/1000x65   424.1Mi ± 0%   1669.4Mi ± 0%  +293.64% (p=0.000 n=20)
geomean            373.9Mi         1.065Gi       +191.55%

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/chacha20
cpu: Loongson-3A5000 @ 2500.00MHz
                 |  bench.old   |              bench.new              |
                 |    sec/op    |   sec/op     vs base                |
ChaCha20/64         234.5n ± 0%   295.8n ± 0%  +26.14% (p=0.000 n=20)
ChaCha20/256        782.0n ± 0%   274.6n ± 0%  -64.88% (p=0.000 n=20)
ChaCha20/10x25     1340.0n ± 0%   752.7n ± 0%  -43.83% (p=0.000 n=20)
ChaCha20/4096      11.744µ ± 0%   3.455µ ± 0%  -70.58% (p=0.000 n=20)
ChaCha20/100x40    14.151µ ± 0%   7.435µ ± 0%  -47.46% (p=0.000 n=20)
ChaCha20/65536     188.05µ ± 0%   54.33µ ± 0%  -71.11% (p=0.000 n=20)
ChaCha20/1000x65   191.44µ ± 0%   66.29µ ± 0%  -65.37% (p=0.000 n=20)
geomean             7.604µ        3.436µ       -54.81%

                 |  bench.old   |               bench.new                |
                 |     B/s      |      B/s       vs base                 |
ChaCha20/64        260.3Mi ± 0%    206.3Mi ± 0%   -20.73% (p=0.000 n=20)
ChaCha20/256       312.2Mi ± 0%    888.9Mi ± 0%  +184.75% (p=0.000 n=20)
ChaCha20/10x25     177.9Mi ± 0%    316.8Mi ± 0%   +78.08% (p=0.000 n=20)
ChaCha20/4096      332.6Mi ± 0%   1130.8Mi ± 0%  +239.95% (p=0.000 n=20)
ChaCha20/100x40    269.6Mi ± 0%    513.1Mi ± 0%   +90.34% (p=0.000 n=20)
ChaCha20/65536     332.4Mi ± 0%   1150.5Mi ± 0%  +246.16% (p=0.000 n=20)
ChaCha20/1000x65   323.8Mi ± 0%    935.2Mi ± 0%  +188.81% (p=0.000 n=20)
geomean            281.3Mi         622.6Mi       +121.31%

Change-Id: I5386f2029122076c1d22a04610567e3df23877cd
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/636257
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: Carlos Amedee <carlos@golang.org>
2025-04-13 20:23:16 -07:00
Xiaolin Zhao 18f770732f salsa20: add loong64 SIMD implementation
The performance gains on Loongson 3A6000 and 3A5000 are as follows:

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/salsa20
cpu: Loongson-3A6000-HV @ 2500.00MHz
      |  bench.old   |              bench.new              |
      |    sec/op    |   sec/op     vs base                |
XOR1K   3175.0n ± 0%   435.4n ± 0%  -86.29% (p=0.000 n=20)

      |  bench.old   |               bench.new                |
      |     B/s      |      B/s       vs base                 |
XOR1K   307.6Mi ± 0%   2242.7Mi ± 0%  +629.13% (p=0.000 n=20)

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/salsa20
cpu: Loongson-3A5000 @ 2500.00MHz
      |  bench.old   |              bench.new              |
      |    sec/op    |   sec/op     vs base                |
XOR1K   4125.0n ± 0%   864.0n ± 0%  -79.05% (p=0.000 n=20)

      |  bench.old   |               bench.new                |
      |     B/s      |      B/s       vs base                 |
XOR1K   236.7Mi ± 0%   1130.3Mi ± 0%  +377.41% (p=0.000 n=20)

Change-Id: Ib37f603e6654f1e3837985fad4b6dee10b5af993
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/663375
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Carlos Amedee <carlos@golang.org>
2025-04-11 13:55:20 -07:00
Xiaolin Zhao 2ebaafcdf5 blake2s: add loong64 SIMD implementation
The performance gains on Loongson 3A6000 and 3A5000 are as follows:

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/blake2s
cpu: Loongson-3A6000-HV @ 2500.00MHz
        |  bench.old  |              bench.new              |
        |   sec/op    |   sec/op     vs base                |
Write64   277.8n ± 0%   113.5n ± 0%  -59.14% (p=0.000 n=10)
Write1K   4.246µ ± 0%   1.736µ ± 0%  -59.11% (p=0.000 n=10)
Sum64     289.9n ± 0%   137.7n ± 0%  -52.51% (p=0.000 n=10)
Sum1K     4.265µ ± 0%   1.758µ ± 0%  -58.78% (p=0.000 n=10)
geomean   1.099µ        467.3n       -57.48%

        |  bench.old   |               bench.new               |
        |     B/s      |     B/s       vs base                 |
Write64   219.7Mi ± 0%   537.9Mi ± 0%  +144.86% (p=0.000 n=10)
Write1K   230.0Mi ± 0%   562.6Mi ± 0%  +144.62% (p=0.000 n=10)
Sum64     210.5Mi ± 0%   443.3Mi ± 0%  +110.59% (p=0.000 n=10)
Sum1K     229.0Mi ± 0%   555.5Mi ± 0%  +142.64% (p=0.000 n=10)
geomean   222.1Mi        522.5Mi       +135.21%

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/blake2s
cpu: Loongson-3A5000 @ 2500.00MHz
        |  bench.old  |              bench.new              |
        |   sec/op    |   sec/op     vs base                |
Write64   373.8n ± 0%   175.0n ± 0%  -53.18% (p=0.000 n=10)
Write1K   5.763µ ± 0%   2.595µ ± 0%  -54.97% (p=0.000 n=10)
Sum64     397.8n ± 0%   205.7n ± 0%  -48.29% (p=0.000 n=10)
Sum1K     5.787µ ± 0%   2.627µ ± 0%  -54.61% (p=0.000 n=10)
geomean   1.492µ        703.8n       -52.83%

        |  bench.old   |               bench.new               |
        |     B/s      |     B/s       vs base                 |
Write64   163.3Mi ± 0%   348.9Mi ± 0%  +113.62% (p=0.000 n=10)
Write1K   169.5Mi ± 0%   376.3Mi ± 0%  +122.09% (p=0.000 n=10)
Sum64     153.4Mi ± 0%   296.7Mi ± 0%   +93.37% (p=0.000 n=10)
Sum1K     168.7Mi ± 0%   371.8Mi ± 0%  +120.33% (p=0.000 n=10)
geomean   163.6Mi        346.9Mi       +112.03%

Change-Id: Id91ffbefc538bce294875d72e6cde72fea43afbf
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/661215
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Auto-Submit: Carlos Amedee <carlos@golang.org>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-04-11 13:55:16 -07:00
cuishuang 4bc0711281 acme: use built-in max/min to simplify the code
Change-Id: I6ba8d07b9e53b01f25f4c1c8eac629aaa47de3a1
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/664836
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2025-04-11 09:06:14 -07:00
Nicola MurinoandDamien Miller c96bba2ced ssh: add mlkem768x25519-sha256 Key Exchange algorithm
mlkem768x25519-sha256 requires the crypto/mlkem package introduced in
Go 1.24.

Thanks to Damien Miller for posting an early version to the OpenSSH
mailing list.

Co-authored-by: Damien Miller <djm@mindrot.org>
Change-Id: I4235cf906903524a9a97283834cc8f43b5f76f91
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/646075
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-04-11 07:39:49 -07:00
Nicola Murino 6b13eef40b ssh: add integration tests against a reference implementation
As in crypto/tls, we record the connection against a reference
implementation, OpenSSH in our case, and run part of our integration
tests by replaying these recorded SSH connections.

Change-Id: If042b5f650b267bd3ede34a05ec3a6fa6d1a86b3
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/644436
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
2025-04-11 07:29:06 -07:00
Gopher Robot 959f8f3db0 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I1e9480e5897a08cac746309acdc8bbdf0bce8060
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/663256
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-04-06 09:04:20 -07:00
Nicola Murino 769bcd6997 ssh: use the configured rand in kex init
Change-Id: I4f89c395886b9dd07b584d1fcf1a0f2df215b91b
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/644435
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Carlos Amedee <carlos@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
2025-04-03 13:05:29 -07:00
Simon Josefsson d0a798f774 cryptobyte: fix typo 'octects' into 'octets' for asn1.go
This typo ends up into lots of executables that trigger 'codespell'-style linter checks.

Change-Id: I2a7e3a6597272ca7c97ebddc54c5eef4cb5cab88
GitHub-Last-Rev: e42f734f00aa575030b72dd1e328d2acefb02625
GitHub-Pull-Request: golang/crypto#310
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/646375
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2025-03-17 08:22:34 -07:00
Mateusz Poliwczak acbcbef23f acme: remove unnecessary []byte conversion
Change-Id: Iddbe6bcb7a5487678c48df65903571b4625fc9f9
GitHub-Last-Rev: 2552a8d99c7472f029d7da270fa814398793b564
GitHub-Pull-Request: golang/crypto#243
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/456438
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Sean Liao <sean@liao.dev>
Auto-Submit: Sean Liao <sean@liao.dev>
2025-03-17 08:22:03 -07:00
Roland Shoemaker 376eb14006 x509roots: support constrained roots
Adds support for roots with the distrust-after bit set. The constraint
function construction is a little funky, but I couldn't think of an
obvious better way to do it.

Fixes golang/go#70777
Fixes golang/go#70623

Change-Id: I780f866416b626360eaee9368185768da7bc75ef
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/652996
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-03-13 16:44:06 -07:00
Xiaolin Zhao b369b723c8 crypto/internal/poly1305: implement function update in assembly on loong64
The performance improvements on Loongson-3A5000 and Loongson-3A6000 are as follows:

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/internal/poly1305
cpu: Loongson-3A5000 @ 2500.00MHz
                 |  bench.old   |              bench.new              |
                 |    sec/op    |   sec/op     vs base                |
64                  122.8n ± 0%   100.0n ± 0%  -18.57% (p=0.000 n=10)
1K                 1152.0n ± 0%   732.2n ± 0%  -36.44% (p=0.000 n=10)
2M                  2.356m ± 0%   1.443m ± 0%  -38.74% (p=0.000 n=10)
64Unaligned         122.7n ± 0%   101.5n ± 0%  -17.24% (p=0.000 n=10)
1KUnaligned        1152.0n ± 0%   745.4n ± 0%  -35.30% (p=0.000 n=10)
2MUnaligned         2.336m ± 0%   1.473m ± 0%  -36.94% (p=0.000 n=10)
Write64             77.92n ± 0%   54.88n ± 0%  -29.57% (p=0.000 n=10)
Write1K            1106.0n ± 0%   683.3n ± 0%  -38.22% (p=0.000 n=10)
Write2M             2.356m ± 0%   1.444m ± 0%  -38.72% (p=0.000 n=10)
Write64Unaligned    77.87n ± 0%   55.69n ± 0%  -28.49% (p=0.000 n=10)
Write1KUnaligned   1106.0n ± 0%   708.1n ± 0%  -35.97% (p=0.000 n=10)
Write2MUnaligned    2.335m ± 0%   1.471m ± 0%  -37.01% (p=0.000 n=10)
geomean             6.373µ        4.272µ       -32.96%

                 |  bench.old   |               bench.new               |
                 |     B/s      |      B/s       vs base                |
64                 497.1Mi ± 0%    610.3Mi ± 0%  +22.78% (p=0.000 n=10)
1K                 847.6Mi ± 0%   1333.7Mi ± 0%  +57.35% (p=0.000 n=10)
2M                 849.0Mi ± 0%   1385.9Mi ± 0%  +63.24% (p=0.000 n=10)
64Unaligned        497.4Mi ± 0%    600.9Mi ± 0%  +20.81% (p=0.000 n=10)
1KUnaligned        847.6Mi ± 0%   1310.1Mi ± 0%  +54.57% (p=0.000 n=10)
2MUnaligned        856.3Mi ± 0%   1357.9Mi ± 0%  +58.58% (p=0.000 n=10)
Write64            783.3Mi ± 0%   1112.2Mi ± 0%  +41.99% (p=0.000 n=10)
Write1K            882.8Mi ± 0%   1429.1Mi ± 0%  +61.88% (p=0.000 n=10)
Write2M            849.0Mi ± 0%   1385.4Mi ± 0%  +63.18% (p=0.000 n=10)
Write64Unaligned   783.8Mi ± 0%   1096.1Mi ± 0%  +39.85% (p=0.000 n=10)
Write1KUnaligned   882.8Mi ± 0%   1379.0Mi ± 0%  +56.20% (p=0.000 n=10)
Write2MUnaligned   856.5Mi ± 0%   1359.9Mi ± 0%  +58.76% (p=0.000 n=10)
geomean            772.2Mi         1.125Gi       +49.18%

goos: linux
goarch: loong64
pkg: golang.org/x/crypto/internal/poly1305
cpu: Loongson-3A6000-HV @ 2500.00MHz
                 |  bench.old  |              bench.new              |
                 |   sec/op    |   sec/op     vs base                |
64                 92.06n ± 0%   71.55n ± 0%  -22.28% (p=0.000 n=10)
1K                 998.4n ± 0%   607.7n ± 0%  -39.13% (p=0.000 n=10)
2M                 1.976m ± 0%   1.165m ± 0%  -41.07% (p=0.000 n=10)
64Unaligned        92.05n ± 0%   71.55n ± 0%  -22.27% (p=0.000 n=10)
1KUnaligned        998.3n ± 0%   607.6n ± 0%  -39.13% (p=0.000 n=10)
2MUnaligned        1.975m ± 0%   1.222m ± 0%  -38.11% (p=0.000 n=10)
Write64            65.24n ± 0%   45.23n ± 0%  -30.67% (p=0.000 n=10)
Write1K            970.8n ± 0%   577.6n ± 0%  -40.51% (p=0.000 n=10)
Write2M            1.965m ± 0%   1.163m ± 0%  -40.81% (p=0.000 n=10)
Write64Unaligned   65.24n ± 0%   45.24n ± 0%  -30.66% (p=0.000 n=10)
Write1KUnaligned   970.8n ± 0%   577.6n ± 0%  -40.50% (p=0.000 n=10)
Write2MUnaligned   1.965m ± 0%   1.222m ± 0%  -37.81% (p=0.000 n=10)
geomean            5.317µ        3.426µ       -35.58%

                 |   bench.old   |               bench.new               |
                 |      B/s      |      B/s       vs base                |
64                  663.0Mi ± 0%    853.1Mi ± 0%  +28.67% (p=0.000 n=10)
1K                  978.1Mi ± 0%   1606.9Mi ± 0%  +64.28% (p=0.000 n=10)
2M                 1012.0Mi ± 0%   1717.4Mi ± 0%  +69.70% (p=0.000 n=10)
64Unaligned         663.1Mi ± 0%    853.1Mi ± 0%  +28.65% (p=0.000 n=10)
1KUnaligned         978.2Mi ± 0%   1607.1Mi ± 0%  +64.29% (p=0.000 n=10)
2MUnaligned        1012.6Mi ± 0%   1636.2Mi ± 0%  +61.58% (p=0.000 n=10)
Write64             935.5Mi ± 0%   1349.3Mi ± 0%  +44.23% (p=0.000 n=10)
Write1K            1005.9Mi ± 0%   1690.9Mi ± 0%  +68.09% (p=0.000 n=10)
Write2M            1017.7Mi ± 0%   1719.5Mi ± 0%  +68.95% (p=0.000 n=10)
Write64Unaligned    935.6Mi ± 0%   1349.3Mi ± 0%  +44.22% (p=0.000 n=10)
Write1KUnaligned   1006.0Mi ± 0%   1690.9Mi ± 0%  +68.08% (p=0.000 n=10)
Write2MUnaligned   1017.7Mi ± 0%   1636.4Mi ± 0%  +60.80% (p=0.000 n=10)
geomean             925.6Mi         1.403Gi       +55.22%

Change-Id: If05a8bfc868b3e6f903ff169eed7a894af741f9b
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/638455
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
2025-03-11 17:59:26 -07:00
Carlos A Becker 6b853fbea3 ssh/knownhosts: check more than one key
I believe this fixes https://github.com/golang/go/issues/36126 .

The problem was that it was keeping only the first known key of each
type found.
If you have a server advertising multiple keys of the same type,
you might get a missmatch key error.

Per sshd(8) man page, it should allow reapeatable hosts with
different host keys, although it don't specify anything about
hosts being from different types:

"It is permissible (but not recommended) to have several lines or
different host keys for the same names.  This will inevitably happen when
short forms of host names from different domains are put in the file.  It
is possible that the files contain conflicting information;
authentication is accepted if valid information can be found from either
file."

So, this changes knownhosts behavior to accept any of the keys for a
given host, regardless of type.

Fixes #36126

Change-Id: I3450ff954259a403f2471082d013a5f79def0e16
GitHub-Last-Rev: 361bd2bcd20348956aaf114ef159a5350397eaf4
GitHub-Pull-Request: golang/crypto#254
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/478535
Reviewed-by: Junyang Shao <shaojunyang@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Nicola Murino <nicola.murino@gmail.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
2025-03-06 10:51:46 -08:00
Gopher Robot 49bf5b80c8 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: Ieae7a2d210a65d5cd2cb7e2670d283176922c767
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/655018
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
2025-03-05 09:04:21 -08:00
Ilia Mirkin 24852b6b3f ssh: add decode support for banners
These banners can be printed when enabling debugHandshake, add decode
support so that they're not printed as unknown messages.

Change-Id: Ic8d56079d8225c35aac843accdbc80a642dd6249
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/650635
Reviewed-by: Junyang Shao <shaojunyang@google.com>
Reviewed-by: Nicola Murino <nicola.murino@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2025-03-03 11:16:37 -08:00
cuishuang bbc689cf5c ssh: use a more straightforward return value
Change-Id: Ie5ee95efe4924f75719087c6fe8d4867607934bf
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/653198
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Nicola Murino <nicola.murino@gmail.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
2025-02-28 12:03:19 -08:00
Nicola Murino 7292932d45 ssh: limit the size of the internal packet queue while waiting for KEX
In the SSH protocol, clients and servers execute the key exchange to
generate one-time session keys used for encryption and authentication.
The key exchange is performed initially after the connection is
established and then periodically after a configurable amount of data.
While a key exchange is in progress, we add the received packets to an
internal queue until we receive SSH_MSG_KEXINIT from the other side.
This can result in high memory usage if the other party is slow to
respond to the SSH_MSG_KEXINIT packet, or memory exhaustion if a
malicious client never responds to an SSH_MSG_KEXINIT packet during a
large file transfer.
We now limit the internal queue to 64 packets: this means 2MB with the
typical 32KB packet size.
When the internal queue is full we block further writes until the
pending key exchange is completed or there is a read or write error.

Thanks to Yuichi Watanabe for reporting this issue.

Change-Id: I1ce2214cc16e08b838d4bc346c74c72addafaeec
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/652135
Reviewed-by: Neal Patel <nealpatel@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-02-24 09:39:25 -08:00
Roland Shoemaker f66f74b0a4 acme/autocert: check host policy before probing the cache
Avoid unnessecary cache probes for names that don't match the host
policy.

Fixes golang/go#71199

Change-Id: I11e8465b0416e960a549b0c0d74a622026c39931
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/651296
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2025-02-21 16:31:38 -08:00
Dmitri Shuralyov b0784b7bfb x509roots/fallback: drop obsolete build constraint
Back when Go 1.20 and 1.19 were supported, the go1.20 build constraint
was there to establish 1.20 as the minimum for the package, because it
requires an API that was added only in Go 1.20 and there was no way to
make it work with 1.19's APIs.

By now only Go 1.24 and 1.23 are supported, and the minimum is set via
the go directive in go.mod.

For golang/go#57792.

Change-Id: Ie4d37d34993374cdd380667930ee667af97eeccb
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/649716
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-02-21 09:26:01 -08:00
Roland Shoemaker 911360c8a4 all: bump golang.org/x/crypto dependencies of asm generators
Change-Id: Ieb2f0d45f82647978f0bd1eb47bb347f0bfb7d13
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/649499
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-02-14 15:32:41 -08:00
Gopher Robot 89ff08d67c all: upgrade go directive to at least 1.23.0 [generated]
By now Go 1.24.0 has been released, and Go 1.22 is no longer supported
per the Go Release Policy (https://go.dev/doc/devel/release#policy).

For golang/go#69095.

[git-generate]
(cd . && go get go@1.23.0 && go mod tidy && go fix ./... && go mod edit -toolchain=none)
(cd x509roots/fallback && go get go@1.23.0 && go mod tidy && go fix ./... && go mod edit -toolchain=none)

Change-Id: I879bced994b310927c41f820ec272a518aa0c8a5
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/649715
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
2025-02-14 12:15:19 -08:00
Sean Liao e47973b1c1 all: update certs for go1.24
Fixes golang/go#71612

Change-Id: I5cb0596b33cb18016eb1883d1518319588ae1454
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/647975
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Nicola Murino <nicola.murino@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
2025-02-10 08:33:42 -08:00
Gopher Robot 9290511cd2 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: Ib9440df43bc2fde0268cbe327c1df839e793f675
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/646220
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2025-02-04 11:03:03 -08:00
Gopher Robot fa5273e461 x509roots/fallback: update bundle
This is an automated CL which updates the NSS root bundle.

Change-Id: I3a4388574221a77486b184e73f4b776ff0afc09f
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/646215
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2025-02-03 08:51:27 -08:00
Brad Fitzpatrick a8ea4be81f ssh: add ServerConfig.PreAuthConnCallback, ServerPreAuthConn (banner) interface
Fixes golang/go#68688

Change-Id: Id5f72b32c61c9383a26ec182339486a432c7cdf5
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/613856
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Nicola Murino <nicola.murino@gmail.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2025-01-18 11:27:23 -08:00
Evgeny Shatokhin 71d3a4cfdb acme: support challenges that require the ACME client to send a non-empty JSON body in a response to the challenge.
A new extension to the ACME protocol is proposed to support device attestation: https://datatracker.ietf.org/doc/draft-acme-device-attest/
Based on the recent IETF meetings, the proposal is likely to be accepted.
To support the new extension, the ACME client will need to send a non-empty JSON body in the response to a "device-attest-01" challenge.
Fixes golang/go#68674

Change-Id: I29b420ec837f682e3d59071a4a82af56dc319134
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/608975
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Roland Shoemaker <roland@golang.org>
2025-01-16 08:17:40 -08:00
Gopher Robot 8929309228 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I86bc4657bf10e469231536cff39cbdb86c1135c7
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/640455
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
2025-01-06 06:44:30 -08:00
cuishuang 4a75ba54c2 all: make function and struct comments match the names
Change-Id: Iba9c1fc2895adca0d3455f8068b040d0ca006408
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/639575
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
2025-01-02 08:15:46 -08:00
Roland Shoemaker b4f1988a35 ssh: make the public key cache a 1-entry FIFO cache
Users of the the ssh package seem to extremely commonly misuse the
PublicKeyCallback API, assuming that the key passed in the last call
before a connection is established is the key used for authentication.
Some users then make authorization decisions based on this key. This
property is not documented, and may not be correct, due to the caching
behavior of the package, resulting in users making incorrect
authorization decisions about the connection.

This change makes the cache a one entry FIFO cache, making the assumed
property, that the last call to PublicKeyCallback represents the key
actually used for authentication, actually hold.

Thanks to Damien Tournoud, Patrick Dawkins, Vince Parker, and
Jules Duvivier from the Platform.sh / Upsun engineering team
for reporting this issue.

Fixes golang/go#70779
Fixes CVE-2024-45337

Change-Id: Ife7c7b4045d8b6bcd7e3a417bdfae370c709797f
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/635315
Reviewed-by: Roland Shoemaker <roland@golang.org>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Nicola Murino <nicola.murino@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-12-11 09:50:49 -08:00
Roland Shoemaker 7042ebcbe0 openpgp/clearsign: just use rand.Reader in tests
Instead of a convoluted fake rand, it is _basically_ just as fast, and
fixes errors that pop up due to bad entropy.

Fixes golang/go#70682

Change-Id: Ib0f605398d1092b516b03135f602c644be2a060f
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/633655
Reviewed-by: Tatiana Bradley <tatianabradley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Roland Shoemaker <roland@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
2024-12-04 19:36:17 +00:00
Gopher Robot 3e90321ac7 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I580d412fc4a135696d4054f8007593cfa4f64224
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/633480
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
2024-12-04 16:35:48 +00:00
Gopher Robot 8c4e668694 x509roots/fallback: update bundle
This is an automated CL which updates the NSS root bundle.

Change-Id: Ic5267bf9d66b676e1cfc5fc2ae153afb8f33b29c
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/631635
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-11-27 18:44:53 +00:00
Gopher Robot 6018723c74 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: Ib4976eb0b062bcd71c208afc9ff53e8c3068fbf9
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/626377
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-11-07 22:54:53 +00:00
Ian Lance Taylor 71ed71b4fa README: don't recommend go get
These days people will just import the packages and the go tool will
do the right thing. We don't need to explain it.

Add a pointer to the git repo, though.

For golang/go#62645

Change-Id: I8b1e4a877bd83fe6891688a44d27a6c7902c8979
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/624155
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Commit-Queue: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2024-11-04 00:10:25 +00:00
Filippo Valsorda 750a45fe5e sha3: add MarshalBinary, AppendBinary, and UnmarshalBinary
Fixes golang/go#24617

Change-Id: I1d9d529950aa8a5953435e8d3412cda44b075d55
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/616635
Reviewed-by: Roland Shoemaker <roland@golang.org>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
Reviewed-by: Michael Pratt <mpratt@google.com>
2024-10-22 19:51:02 +00:00
Filippo Valsorda 36b172546b sha3: avoid trailing permutation
If you read a multiple of the rate, and then stop, there is no point in
running the final permutation.

Change-Id: Ic95e70f78b6e139aca1d3e3c11e09d2bbcf54f6c
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/620555
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
2024-10-22 19:50:23 +00:00
Filippo Valsorda 80ea76eb17 sha3: fix padding for long cSHAKE parameters
We used to compute the incorrect value if len(initBlock) % rate == 0.

Also, add a test vector for golang/go#66232, confirmed to fail on
GOARCH=386 without CL 570876.

Fixes golang/go#69169

Change-Id: I3f2400926fca111dd0ca1327d6b5975e51b28f96
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/616576
Reviewed-by: Andrew Ekstedt <andrew.ekstedt@gmail.com>
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2024-10-22 19:50:19 +00:00
Filippo Valsorda c17aa50fbd sha3: avoid buffer copy
Previously, the package worked by copying the input (or the output) into
a buffer, and then XOR'ing (or copying) it into (or out of) the state.
(Except for an input fast path.) There's no need for that! We can XOR
straight into the state, and copy straight out of it, at least on little
endian machines. This is a bit faster, almost halves the state size, and
will make it easier to implement marshaling, but most importantly look
at how much simpler it makes the code!

go: go1.23.0
goos: linux
goarch: amd64
pkg: golang.org/x/crypto/sha3
cpu: AMD Ryzen 7 PRO 8700GE w/ Radeon 780M Graphics
                      │ v0.27.0-2-g42ee18b9637 │    v0.27.0-2-g42ee18b9637-dirty    │
                      │         sec/op         │   sec/op     vs base               │
PermutationFunction-8              270.8n ± 0%   270.4n ± 0%       ~ (p=0.099 n=10)
Sha3_512_MTU-8                     5.762µ ± 0%   5.658µ ± 0%  -1.80% (p=0.000 n=10)
Sha3_384_MTU-8                     4.179µ ± 0%   4.070µ ± 0%  -2.60% (p=0.000 n=10)
Sha3_256_MTU-8                     3.316µ ± 0%   3.214µ ± 0%  -3.08% (p=0.000 n=10)
Sha3_224_MTU-8                     3.175µ ± 0%   3.061µ ± 0%  -3.61% (p=0.000 n=10)
Shake128_MTU-8                     2.779µ ± 0%   2.681µ ± 0%  -3.51% (p=0.000 n=10)
Shake256_MTU-8                     2.947µ ± 0%   2.957µ ± 0%  +0.32% (p=0.000 n=10)
Shake256_16x-8                     44.15µ ± 0%   44.45µ ± 0%  +0.67% (p=0.000 n=10)
Shake256_1MiB-8                    2.319m ± 0%   2.274m ± 0%  -1.93% (p=0.000 n=10)
Sha3_512_1MiB-8                    4.204m ± 0%   4.219m ± 0%  +0.34% (p=0.000 n=10)
geomean                            13.75µ        13.54µ       -1.55%

                      │ v0.27.0-2-g42ee18b9637 │    v0.27.0-2-g42ee18b9637-dirty     │
                      │          B/s           │     B/s       vs base               │
PermutationFunction-8             704.3Mi ± 0%   705.4Mi ± 0%       ~ (p=0.105 n=10)
Sha3_512_MTU-8                    223.5Mi ± 0%   227.6Mi ± 0%  +1.83% (p=0.000 n=10)
Sha3_384_MTU-8                    308.1Mi ± 0%   316.4Mi ± 0%  +2.67% (p=0.000 n=10)
Sha3_256_MTU-8                    388.2Mi ± 0%   400.5Mi ± 0%  +3.17% (p=0.000 n=10)
Sha3_224_MTU-8                    405.5Mi ± 0%   420.7Mi ± 0%  +3.73% (p=0.000 n=10)
Shake128_MTU-8                    463.4Mi ± 0%   480.2Mi ± 0%  +3.64% (p=0.000 n=10)
Shake256_MTU-8                    436.9Mi ± 0%   435.5Mi ± 0%  -0.32% (p=0.000 n=10)
Shake256_16x-8                    353.9Mi ± 0%   351.5Mi ± 0%  -0.66% (p=0.000 n=10)
Shake256_1MiB-8                   431.2Mi ± 0%   439.7Mi ± 0%  +1.97% (p=0.000 n=10)
Sha3_512_1MiB-8                   237.8Mi ± 0%   237.1Mi ± 0%  -0.33% (p=0.000 n=10)
geomean                           375.7Mi        381.6Mi       +1.57%

Even stronger effect when patched on top of CL 616555 (forced on).

go: go1.23.0
goos: darwin
goarch: arm64
pkg: golang.org/x/crypto/sha3
cpu: Apple M2
                      │    old    │               new                   │
                      │   sec/op  │     sec/op     vs base              │
PermutationFunction-8   154.7n ± 2%   153.8n ± 1%        ~ (p=0.469 n=10)
Sha3_512_MTU-8          3.260µ ± 2%   3.143µ ± 2%   -3.60% (p=0.000 n=10)
Sha3_384_MTU-8          2.389µ ± 2%   2.244µ ± 2%   -6.07% (p=0.000 n=10)
Sha3_256_MTU-8          1.950µ ± 2%   1.758µ ± 1%   -9.87% (p=0.000 n=10)
Sha3_224_MTU-8          1.874µ ± 2%   1.686µ ± 1%  -10.06% (p=0.000 n=10)
Shake128_MTU-8          1.827µ ± 3%   1.447µ ± 1%  -20.80% (p=0.000 n=10)
Shake256_MTU-8          1.665µ ± 3%   1.604µ ± 3%   -3.63% (p=0.003 n=10)
Shake256_16x-8          25.14µ ± 1%   25.23µ ± 2%        ~ (p=0.912 n=10)
Shake256_1MiB-8         1.236m ± 2%   1.243m ± 2%        ~ (p=0.631 n=10)
Sha3_512_1MiB-8         2.296m ± 2%   2.305m ± 1%        ~ (p=0.315 n=10)
geomean                 7.906µ        7.467µ        -5.56%

                      │    old    │               new                   │
                      │    B/op   │      B/op      vs base              │
PermutationFunction-8   1.204Gi ± 2%   1.212Gi ± 1%        ~ (p=0.529 n=10)
Sha3_512_MTU-8          394.9Mi ± 2%   409.7Mi ± 2%   +3.73% (p=0.000 n=10)
Sha3_384_MTU-8          539.0Mi ± 2%   573.8Mi ± 2%   +6.45% (p=0.000 n=10)
Sha3_256_MTU-8          660.3Mi ± 2%   732.6Mi ± 1%  +10.95% (p=0.000 n=10)
Sha3_224_MTU-8          687.1Mi ± 2%   763.9Mi ± 1%  +11.17% (p=0.000 n=10)
Shake128_MTU-8          704.7Mi ± 2%   889.6Mi ± 2%  +26.24% (p=0.000 n=10)
Shake256_MTU-8          773.4Mi ± 3%   802.5Mi ± 3%   +3.76% (p=0.004 n=10)
Shake256_16x-8          621.6Mi ± 1%   619.3Mi ± 2%        ~ (p=0.912 n=10)
Shake256_1MiB-8         809.1Mi ± 2%   804.7Mi ± 2%        ~ (p=0.631 n=10)
Sha3_512_1MiB-8         435.6Mi ± 2%   433.9Mi ± 1%        ~ (p=0.315 n=10)
geomean                 653.6Mi        692.0Mi        +5.88%

Change-Id: I33a0a1ddf305c395f99bf17f81473e2f42c5ce42
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/616575
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Andrew Ekstedt <andrew.ekstedt@gmail.com>
2024-10-21 19:02:20 +00:00
samiponkanen 7cfb9161e8 ssh: return unexpected msg error when server fails keyboard-interactive auth early
Seems the OpenSSH server running on windows fails keyboard-interactive
auth this way without sending any prompt to client. In such case the
golang ssh client should not retry keyboard-interactive auth when the
auth method is wrapped in a RetryableAuthMethod(). Rather the auth
method should be immediately marked as tried&failed and the client auth
process should move on to next available and acceptable auth method.

Fixes golang/go#67855

Change-Id: I6c64ae58ff8325774e37af716601b112f8833d8f
GitHub-Last-Rev: 7fafc4d1c81284b31000d7d6ccadd934dda26d24
GitHub-Pull-Request: golang/crypto#297
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/590956
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
Reviewed-by: Nicola Murino <nicola.murino@gmail.com>
2024-10-16 07:16:19 +00:00
Paul E. Murphy b61b08db44 chacha20: extend ppc64le support to ppc64
This requires fixing an incorrect save of the counter. It is a word
value. It happens to work on LE because length is limited to u32.

Refactor the constant table to load correctly independent of byte
ordering.

Add byte order swapping where output needs converted to LE
ordering for storage.

Change-Id: Ic7e09bd1c769bb77dd6e817f5a8639ba765f4c0f
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/614297
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Archana Ravindar <aravinda@redhat.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-10-11 17:09:09 +00:00
Paul E. Murphy 6c21748958 internal/poly1305: extend ppc64le support to ppc64
The cipher needs to load the stream in LE order. Use the byte
reversing loads on BE.

Also, remove the unused variable poly1305Mask in the PPC64
asm file too.

Change-Id: Ie90fe7bb0ea7a3bcb76583e0cf9c1e4133499541
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/614298
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Archana Ravindar <aravinda@redhat.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
2024-10-04 20:59:56 +00:00
Gopher Robot adef4cc1a8 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: Id321d3b5909ecb66c0311ba86008509c7895863b
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/617958
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2024-10-04 15:35:24 +00:00
Yawning Angel a0819fbb02 sha3: fix cSHAKE initialization for extremely large N and or S
While both impractical and unlikely, the multiplication could overflow
on 32-bit architectures.

The 64-bit architecture case is unaffected by both the maximum length
of Go slices being too small to trigger the overflow (everything except
s390), and it being safe to assume no machine has more than 2 EiB of
memory.

Fixes golang/go#66232

Change-Id: I19c15d42d2d6af35e296697159d43d02f513e614
GitHub-Last-Rev: 503e180debfdc93ab99977172af2b64290cb80e8
GitHub-Pull-Request: golang/crypto#286
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/570876
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2024-09-30 15:41:13 +00:00
Nicola Murino 42ee18b963 ssh: return ServerAuthError after too many auth failures
if a client is disconnected due to too many authentication attempts
we should return a ServerAuthError instead of a generic error.

Some users check the error returned by NewServerConn to determine
whether or not a client attempted to authenticate.

Fixes golang/go#69191

Change-Id: If68fcecdefd6c810fe9df8256b1216e320d8a916
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/566398
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Tim King <taking@google.com>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
2024-09-16 20:42:53 +00:00
cuishuang 9e92970a1e bn256: add missing symbols in comment
Change-Id: Ibd48a070bd8ce35ef5795a8b73bc4ecac43a993e
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/611735
Run-TryBot: shuang cui <imcusg@gmail.com>
Commit-Queue: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2024-09-10 20:43:33 +00:00
Dmitri Shuralyov c9da6b9a40 all: fix printf(var) mistakes detected by latest printf checker
These were problematic but previously easy to miss. They're now
easy to spot thanks to build failures at Go tip as of CL 610736.

For golang/go#68796.

Change-Id: I167f2cce2376b4070460389c673d973e4521d3dc
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/610797
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2024-09-04 21:26:08 +00:00
Gopher Robot b35ab4fde0 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I94bb1c6a4bb08aff8c146e84a9d4b3e353f098c2
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/610638
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
2024-09-04 20:46:08 +00:00
Garrett Bodley bcb0f91bbc internal/poly1305: Port sum_amd64.s to Avo
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.

To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.

Commands used to verify Avo output:

GOROOT=$(go env GOROOT)
ASM_PATH="internal/poly1305/sum_amd64.s"
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  <(git cat-file -p "$REFERENCE:$ASM_PATH") \
  > /tmp/reference.s

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  "$ASM_PATH" \
  > /tmp/avo.s

normalize(){
  awk '{
    $1=$2=$3="";
    print substr($0,4)
  }'
}

diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)

Change-Id: I80212c95d1b05335d7f6b73a3030b6f812f6105b
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/600035
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-04 20:35:25 +00:00
Garrett Bodley 7eace71069 chacha20poly1305: Avo port of chacha20poly1305_amd64.s
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.

To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.

Parameter metadata not found in the reference assembly file has been
added, leading to a diff on the lines where those symbols are
referenced.

Commands used to verify Avo output:

GOROOT=$(go env GOROOT)
ASM_PATH="chacha20poly1305/chacha20poly1305_amd64.s"
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  <(git cat-file -p "$REFERENCE:$ASM_PATH") \
  > /tmp/reference.s

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  "$ASM_PATH" \
  > /tmp/avo.s

normalize(){
  awk '{
    $1=$2=$3="";
    print substr($0,4)
  }'
}

diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)

155,157c155,157
< MOVQ dst(FP), DI
< MOVQ key+24(FP), R8
< MOVQ src+48(FP), SI
---
> MOVQ dst_base(FP), DI
> MOVQ key_base+24(FP), R8
> MOVQ src_base+48(FP), SI
159c159
< MOVQ ad+72(FP), CX
---
> MOVQ ad_base+72(FP), CX
4684,4686c4684,4686
< MOVQ dst(FP), DI
< MOVQ key+24(FP), R8
< MOVQ src+48(FP), SI
---
> MOVQ dst_base(FP), DI
> MOVQ key_base+24(FP), R8
> MOVQ src_base+48(FP), SI
4688c4688
< MOVQ ad+72(FP), CX
---
> MOVQ ad_base+72(FP), CX

Change-Id: Ia3a8e70b7440944ee739499c41ddceb70e054ef9
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/601442
Reviewed-by: Filippo Valsorda <filippo@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2024-09-04 20:35:14 +00:00
Garrett Bodley 620dfbc770 salsa20/salsa: Port salsa20_amd64.s to Avo
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.

To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.

Commands used to verify Avo output:

GOROOT=$(go env GOROOT)
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  <(git cat-file -p "$REFERENCE":salsa20/salsa/salsa20_amd64.s) \
  > /tmp/reference.s

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  salsa20/salsa/salsa20_amd64.s \
  > /tmp/avo.s

normalize(){
  awk '{
    $1=$2=$3="";
    print substr($0,4)
  }'
}

diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)

Change-Id: Ica0bb06f8b074ad566a979d33ddc81d8a38491b1
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/601217
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2024-09-04 20:34:59 +00:00
Garrett Bodley 82942cf1d8 blake2b: port blake2b_amd64.s to Avo
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.

To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.

Commands used to verify Avo output:

GOROOT=$(go env GOROOT)
ASM_PATH="blake2b/blake2b_amd64.s"
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  <(git cat-file -p "$REFERENCE:$ASM_PATH") \
  > /tmp/reference.s

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  "$ASM_PATH" \
  > /tmp/avo.s

normalize(){
  awk '{
    $1=$2=$3="";
    print substr($0,4)
  }'
}

diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)

Change-Id: I6dd59fb0b0365674aa5e43b69a57ea60fbcc4ba1
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/600456
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
2024-09-04 20:34:46 +00:00
Garrett Bodley 0484c26df7 blake2b: port blake2bAVX2_amd64.s to Avo
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.

To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.

Commands used to verify Avo output:

GOROOT=$(go env GOROOT)
ASM_PATH="blake2b/blake2bAVX2_amd64.s"
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  <(git cat-file -p "$REFERENCE:$ASM_PATH") \
  > /tmp/reference.s

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  "$ASM_PATH" \
  > /tmp/avo.s

normalize(){
  awk '{
    $1=$2=$3="";
    print substr($0,4)
  }'
}

diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)

Change-Id: Ia2af1b82c871e26b89bd9a2d9fb187cc49e18341
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/600836
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-04 20:34:34 +00:00
Garrett Bodley 38ed1bc0ec blake2s: port blake2s_amd64.s to Avo
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.

To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.

Commands used to verify Avo output:

GOROOT=$(go env GOROOT)
ASM_PATH="blake2s/blake2s_amd64.s"
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  <(git cat-file -p "$REFERENCE:$ASM_PATH") \
  > /tmp/reference.s

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  "$ASM_PATH" \
  > /tmp/avo.s

normalize(){
  awk '{
    $1=$2=$3="";
    print substr($0,4)
  }'
}

diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)

Change-Id: Ica8bf9f0b42dc93714aa54e783fa74ed19e6b9f4
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/601216
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
2024-09-04 20:34:20 +00:00
Garrett Bodley 38a0b5da75 argon2: Avo port of blamka_amd64.s
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.

To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.

Commands used to verify Avo output:

GOROOT=$(go env GOROOT)
ASM_PATH="argon2/blamka_amd64.s"
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  <(git cat-file -p "$REFERENCE:$ASM_PATH") \
  > /tmp/reference.s

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  "$ASM_PATH" \
  > /tmp/avo.s

normalize(){
  awk '{
    $1=$2=$3="";
    print substr($0,4)
  }'
}

diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)

Change-Id: I3567eb80ef80dff248225f17470122c0a4e6951e
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/600315
Reviewed-by: Filippo Valsorda <filippo@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2024-09-04 20:33:49 +00:00
Gopher Robot bf5f14f545 x509roots/fallback: update bundle
This is an automated CL which updates the NSS root bundle.

Change-Id: I95cf0b3e86f1e013d486a0bbd050a8b4bea5d6e9
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/610060
Reviewed-by: Roland Shoemaker <roland@golang.org>
Auto-Submit: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2024-09-03 18:00:24 +00:00
Nicola Murino b2d3a6a4b4 ssh/agent: ensure to not add duplicated keys
When adding a new key, if we already have a Signer with the same public
key, we now replace it with the new one instead of duplicating it.

Before this change we had this:

$ ssh-add -l
3072 SHA256:bsBRHC/xgiqBJdSuvSTNpJNLTISP/G356jNMCRYC5Es nicola@p1 (RSA)
3072 SHA256:bsBRHC/xgiqBJdSuvSTNpJNLTISP/G356jNMCRYC5Es nicola@p1 (RSA-CERT)

$ ssh-add /home/nicola/ssh_certs/id_rsa
Identity added: /home/nicola/ssh_certs/id_rsa (nicola@p1)
Certificate added: /home/nicola/ssh_certs/id_rsa-cert.pub (myid)

$ ssh-add -l
3072 SHA256:bsBRHC/xgiqBJdSuvSTNpJNLTISP/G356jNMCRYC5Es nicola@p1 (RSA)
3072 SHA256:bsBRHC/xgiqBJdSuvSTNpJNLTISP/G356jNMCRYC5Es nicola@p1 (RSA-CERT)
3072 SHA256:bsBRHC/xgiqBJdSuvSTNpJNLTISP/G356jNMCRYC5Es nicola@p1 (RSA)
3072 SHA256:bsBRHC/xgiqBJdSuvSTNpJNLTISP/G356jNMCRYC5Es nicola@p1 (RSA-CERT)

Change-Id: Iad1b1a6dc94f68f53f05d7d1172f0017839976fc
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/602955
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Auto-Submit: Nicola Murino <nicola.murino@gmail.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-08-06 16:07:48 +00:00
132 changed files with 48611 additions and 6128 deletions
+5 -8
View File
@@ -2,20 +2,17 @@
[![Go Reference](https://pkg.go.dev/badge/golang.org/x/crypto.svg)](https://pkg.go.dev/golang.org/x/crypto)
This repository holds supplementary Go cryptography libraries.
## Download/Install
The easiest way to install is to run `go get -u golang.org/x/crypto/...`. You
can also manually git clone the repository to `$GOPATH/src/golang.org/x/crypto`.
This repository holds supplementary Go cryptography packages.
## Report Issues / Send Patches
This repository uses Gerrit for code changes. To learn how to submit changes to
this repository, see https://golang.org/doc/contribute.html.
this repository, see https://go.dev/doc/contribute.
The git repository is https://go.googlesource.com/crypto.
The main issue tracker for the crypto repository is located at
https://github.com/golang/go/issues. Prefix your issue with "x/crypto:" in the
https://go.dev/issues. Prefix your issue with "x/crypto:" in the
subject line, so it is easy to find.
Note that contributions to the cryptography package receive additional scrutiny
+9 -1
View File
@@ -353,6 +353,10 @@ func (c *Client) authorize(ctx context.Context, typ, val string) (*Authorization
if _, err := c.Discover(ctx); err != nil {
return nil, err
}
if c.dir.AuthzURL == "" {
// Pre-Authorization is unsupported
return nil, errPreAuthorizationNotSupported
}
type authzID struct {
Type string `json:"type"`
@@ -514,7 +518,11 @@ func (c *Client) Accept(ctx context.Context, chal *Challenge) (*Challenge, error
return nil, err
}
res, err := c.post(ctx, nil, chal.URI, json.RawMessage("{}"), wantStatus(
payload := json.RawMessage("{}")
if len(chal.Payload) != 0 {
payload = chal.Payload
}
res, err := c.post(ctx, nil, chal.URI, payload, wantStatus(
http.StatusOK, // according to the spec
http.StatusAccepted, // Let's Encrypt: see https://goo.gl/WsJ7VT (acme-divergences.md)
))
+53 -1
View File
@@ -15,6 +15,7 @@ import (
"encoding/base64"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"io"
"math/big"
@@ -254,6 +255,57 @@ func TestAuthorizeValid(t *testing.T) {
}
}
func TestAuthorizeUnsupported(t *testing.T) {
const (
nonce = "https://example.com/acme/new-nonce"
reg = "https://example.com/acme/new-acct"
order = "https://example.com/acme/new-order"
revoke = "https://example.com/acme/revoke-cert"
keychange = "https://example.com/acme/key-change"
metaTerms = "https://example.com/acme/terms/2017-5-30"
metaWebsite = "https://www.example.com/"
metaCAA = "example.com"
)
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Replay-Nonce", "nonce")
if r.Method == http.MethodHead {
return
}
switch r.URL.Path {
case "/": // Directory
w.Header().Set("Content-Type", "application/json")
fmt.Fprintf(w, `{
"newNonce": %q,
"newAccount": %q,
"newOrder": %q,
"revokeCert": %q,
"keyChange": %q,
"meta": {
"termsOfService": %q,
"website": %q,
"caaIdentities": [%q],
"externalAccountRequired": true
}
}`, nonce, reg, order, revoke, keychange, metaTerms, metaWebsite, metaCAA)
w.WriteHeader(http.StatusOK)
case "/acme/new-authz":
w.WriteHeader(http.StatusBadRequest)
}
}))
defer ts.Close()
client := &Client{Key: testKey, DirectoryURL: ts.URL}
dir, err := client.Discover(context.Background())
if err != nil {
t.Fatal(err)
}
if dir.AuthzURL != "" {
t.Fatalf("expected AuthzURL to be empty, got %q", dir.AuthzURL)
}
if _, err := client.Authorize(context.Background(), "example.com"); !errors.Is(err, errPreAuthorizationNotSupported) {
t.Errorf("expected err to indicate pre-authorization is unsupported, got %+v", err)
}
}
func TestWaitAuthorization(t *testing.T) {
t.Run("wait loop", func(t *testing.T) {
var count int
@@ -757,7 +809,7 @@ func TestTLSALPN01ChallengeCert(t *testing.T) {
}
func TestTLSChallengeCertOpt(t *testing.T) {
key, err := rsa.GenerateKey(rand.Reader, 512)
key, err := rsa.GenerateKey(rand.Reader, 1024)
if err != nil {
t.Fatal(err)
}
+4 -3
View File
@@ -292,6 +292,10 @@ func (m *Manager) GetCertificate(hello *tls.ClientHelloInfo) (*tls.Certificate,
}
// regular domain
if err := m.hostPolicy()(ctx, name); err != nil {
return nil, err
}
ck := certKey{
domain: strings.TrimSuffix(name, "."), // golang.org/issue/18114
isRSA: !supportsECDSA(hello),
@@ -305,9 +309,6 @@ func (m *Manager) GetCertificate(hello *tls.ClientHelloInfo) (*tls.Certificate,
}
// first-time
if err := m.hostPolicy()(ctx, name); err != nil {
return nil, err
}
cert, err = m.createCert(ctx, ck)
if err != nil {
return nil, err
+2 -2
View File
@@ -619,7 +619,7 @@ func TestCache(t *testing.T) {
PrivateKey: ecdsaKey,
}
rsaKey, err := rsa.GenerateKey(rand.Reader, 512)
rsaKey, err := rsa.GenerateKey(rand.Reader, 1024)
if err != nil {
t.Fatal(err)
}
@@ -694,7 +694,7 @@ func TestValidCert(t *testing.T) {
if err != nil {
t.Fatal(err)
}
key3, err := rsa.GenerateKey(rand.Reader, 512)
key3, err := rsa.GenerateKey(rand.Reader, 1024)
if err != nil {
t.Fatal(err)
}
+6 -6
View File
@@ -308,7 +308,7 @@ func (ca *CAServer) handle(w http.ResponseWriter, r *http.Request) {
}
if err := decodePayload(&req, r.Body); err != nil {
ca.httpErrorf(w, http.StatusBadRequest, err.Error())
ca.httpErrorf(w, http.StatusBadRequest, "%v", err)
return
}
@@ -328,7 +328,7 @@ func (ca *CAServer) handle(w http.ResponseWriter, r *http.Request) {
Identifiers []struct{ Value string }
}
if err := decodePayload(&req, r.Body); err != nil {
ca.httpErrorf(w, http.StatusBadRequest, err.Error())
ca.httpErrorf(w, http.StatusBadRequest, "%v", err)
return
}
ca.mu.Lock()
@@ -352,7 +352,7 @@ func (ca *CAServer) handle(w http.ResponseWriter, r *http.Request) {
defer ca.mu.Unlock()
o, err := ca.storedOrder(strings.TrimPrefix(r.URL.Path, "/orders/"))
if err != nil {
ca.httpErrorf(w, http.StatusBadRequest, err.Error())
ca.httpErrorf(w, http.StatusBadRequest, "%v", err)
return
}
if err := json.NewEncoder(w).Encode(o); err != nil {
@@ -412,7 +412,7 @@ func (ca *CAServer) handle(w http.ResponseWriter, r *http.Request) {
orderID := strings.TrimPrefix(r.URL.Path, "/new-cert/")
o, err := ca.storedOrder(orderID)
if err != nil {
ca.httpErrorf(w, http.StatusBadRequest, err.Error())
ca.httpErrorf(w, http.StatusBadRequest, "%v", err)
return
}
if o.Status != acme.StatusReady {
@@ -427,7 +427,7 @@ func (ca *CAServer) handle(w http.ResponseWriter, r *http.Request) {
b, _ := base64.RawURLEncoding.DecodeString(req.CSR)
csr, err := x509.ParseCertificateRequest(b)
if err != nil {
ca.httpErrorf(w, http.StatusBadRequest, err.Error())
ca.httpErrorf(w, http.StatusBadRequest, "%v", err)
return
}
// Issue the certificate.
@@ -449,7 +449,7 @@ func (ca *CAServer) handle(w http.ResponseWriter, r *http.Request) {
defer ca.mu.Unlock()
o, err := ca.storedOrder(strings.TrimPrefix(r.URL.Path, "/issued-cert/"))
if err != nil {
ca.httpErrorf(w, http.StatusBadRequest, err.Error())
ca.httpErrorf(w, http.StatusBadRequest, "%v", err)
return
}
if o.Status != acme.StatusValid {
+6 -26
View File
@@ -10,7 +10,6 @@ import (
"net"
"os"
"path/filepath"
"runtime"
"time"
)
@@ -124,32 +123,13 @@ func (ln *listener) Close() error {
return ln.tcpListener.Close()
}
func homeDir() string {
if runtime.GOOS == "windows" {
return os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH")
}
if h := os.Getenv("HOME"); h != "" {
return h
}
return "/"
}
func cacheDir() string {
const base = "golang-autocert"
switch runtime.GOOS {
case "darwin":
return filepath.Join(homeDir(), "Library", "Caches", base)
case "windows":
for _, ev := range []string{"APPDATA", "CSIDL_APPDATA", "TEMP", "TMP"} {
if v := os.Getenv(ev); v != "" {
return filepath.Join(v, base)
}
}
// Worst case:
return filepath.Join(homeDir(), base)
cache, err := os.UserCacheDir()
if err != nil {
// Fall back to the root directory.
cache = "/.cache"
}
if xdg := os.Getenv("XDG_CACHE_HOME"); xdg != "" {
return filepath.Join(xdg, base)
}
return filepath.Join(homeDir(), ".cache", base)
return filepath.Join(cache, base)
}
+2 -5
View File
@@ -66,7 +66,7 @@ func (c *Client) retryTimer() *retryTimer {
// The n argument is always bounded between 1 and 30.
// The returned value is always greater than 0.
func defaultBackoff(n int, r *http.Request, res *http.Response) time.Duration {
const max = 10 * time.Second
const maxVal = 10 * time.Second
var jitter time.Duration
if x, err := rand.Int(rand.Reader, big.NewInt(1000)); err == nil {
// Set the minimum to 1ms to avoid a case where
@@ -86,10 +86,7 @@ func defaultBackoff(n int, r *http.Request, res *http.Response) time.Duration {
n = 30
}
d := time.Duration(1<<uint(n-1))*time.Second + jitter
if d > max {
return max
}
return d
return min(d, maxVal)
}
// retryAfter parses a Retry-After HTTP header value,
+1 -1
View File
@@ -92,7 +92,7 @@ func jwsEncodeJSON(claimset interface{}, key crypto.Signer, kid KeyID, nonce, ur
if err != nil {
return nil, err
}
phead := base64.RawURLEncoding.EncodeToString([]byte(phJSON))
phead := base64.RawURLEncoding.EncodeToString(phJSON)
var payload string
if val, ok := claimset.(string); ok {
payload = val
+16 -1
View File
@@ -7,6 +7,7 @@ package acme
import (
"crypto"
"crypto/x509"
"encoding/json"
"errors"
"fmt"
"net/http"
@@ -55,6 +56,10 @@ var (
// ErrNoAccount indicates that the Client's key has not been registered with the CA.
ErrNoAccount = errors.New("acme: account does not exist")
// errPreAuthorizationNotSupported indicates that the server does not
// support pre-authorization of identifiers.
errPreAuthorizationNotSupported = errors.New("acme: pre-authorization is not supported")
)
// A Subproblem describes an ACME subproblem as reported in an Error.
@@ -288,7 +293,7 @@ type Directory struct {
// KeyChangeURL allows to perform account key rollover flow.
KeyChangeURL string
// Term is a URI identifying the current terms of service.
// Terms is a URI identifying the current terms of service.
Terms string
// Website is an HTTP or HTTPS URL locating a website
@@ -527,6 +532,16 @@ type Challenge struct {
// when this challenge was used.
// The type of a non-nil value is *Error.
Error error
// Payload is the JSON-formatted payload that the client sends
// to the server to indicate it is ready to respond to the challenge.
// When unset, it defaults to an empty JSON object: {}.
// For most challenges, the client must not set Payload,
// see https://tools.ietf.org/html/rfc8555#section-7.5.1.
// Payload is used only for newer challenges (such as "device-attest-01")
// where the client must send additional data for the server to validate
// the challenge.
Payload json.RawMessage
}
// wireChallenge is ACME JSON challenge representation.
+287
View File
@@ -0,0 +1,287 @@
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
. "github.com/mmcloughlin/avo/build"
. "github.com/mmcloughlin/avo/operand"
. "github.com/mmcloughlin/avo/reg"
_ "golang.org/x/crypto/argon2"
)
//go:generate go run . -out ../blamka_amd64.s -pkg argon2
func main() {
Package("golang.org/x/crypto/argon2")
ConstraintExpr("amd64,gc,!purego")
blamkaSSE4()
mixBlocksSSE2()
xorBlocksSSE2()
Generate()
}
func blamkaSSE4() {
Implement("blamkaSSE4")
Attributes(NOSPLIT)
AllocLocal(0)
Load(Param("b"), RAX)
c40 := c40_DATA()
c48 := c48_DATA()
MOVOU(c40, X10)
MOVOU(c48, X11)
BLAMKA_ROUND_0(AX, 0, X8, X9, X10, X11)
BLAMKA_ROUND_0(AX, 16, X8, X9, X10, X11)
BLAMKA_ROUND_0(AX, 32, X8, X9, X10, X11)
BLAMKA_ROUND_0(AX, 48, X8, X9, X10, X11)
BLAMKA_ROUND_0(AX, 64, X8, X9, X10, X11)
BLAMKA_ROUND_0(AX, 80, X8, X9, X10, X11)
BLAMKA_ROUND_0(AX, 96, X8, X9, X10, X11)
BLAMKA_ROUND_0(AX, 112, X8, X9, X10, X11)
BLAMKA_ROUND_1(AX, 0, X8, X9, X10, X11)
BLAMKA_ROUND_1(AX, 2, X8, X9, X10, X11)
BLAMKA_ROUND_1(AX, 4, X8, X9, X10, X11)
BLAMKA_ROUND_1(AX, 6, X8, X9, X10, X11)
BLAMKA_ROUND_1(AX, 8, X8, X9, X10, X11)
BLAMKA_ROUND_1(AX, 10, X8, X9, X10, X11)
BLAMKA_ROUND_1(AX, 12, X8, X9, X10, X11)
BLAMKA_ROUND_1(AX, 14, X8, X9, X10, X11)
RET()
}
func mixBlocksSSE2() {
Implement("mixBlocksSSE2")
Attributes(NOSPLIT)
AllocLocal(0)
Load(Param("out"), RDX)
Load(Param("a"), RAX)
Load(Param("b"), RBX)
Load(Param("c"), RCX)
MOVQ(U32(128), RDI)
Label("loop")
MOVOU(Mem{Base: AX}.Offset(0), X0)
MOVOU(Mem{Base: BX}.Offset(0), X1)
MOVOU(Mem{Base: CX}.Offset(0), X2)
PXOR(X1, X0)
PXOR(X2, X0)
MOVOU(X0, Mem{Base: DX}.Offset(0))
ADDQ(Imm(16), RAX)
ADDQ(Imm(16), RBX)
ADDQ(Imm(16), RCX)
ADDQ(Imm(16), RDX)
SUBQ(Imm(2), RDI)
JA(LabelRef("loop"))
RET()
}
func xorBlocksSSE2() {
Implement("xorBlocksSSE2")
Attributes(NOSPLIT)
AllocLocal(0)
Load(Param("out"), RDX)
Load(Param("a"), RAX)
Load(Param("b"), RBX)
Load(Param("c"), RCX)
MOVQ(U32(128), RDI)
Label("loop")
MOVOU(Mem{Base: AX}.Offset(0), X0)
MOVOU(Mem{Base: BX}.Offset(0), X1)
MOVOU(Mem{Base: CX}.Offset(0), X2)
MOVOU(Mem{Base: DX}.Offset(0), X3)
PXOR(X1, X0)
PXOR(X2, X0)
PXOR(X3, X0)
MOVOU(X0, Mem{Base: DX}.Offset(0))
ADDQ(Imm(16), RAX)
ADDQ(Imm(16), RBX)
ADDQ(Imm(16), RCX)
ADDQ(Imm(16), RDX)
SUBQ(Imm(2), RDI)
JA(LabelRef("loop"))
RET()
}
func SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2 VecPhysical) {
MOVO(v4, t1)
MOVO(v5, v4)
MOVO(t1, v5)
MOVO(v6, t1)
PUNPCKLQDQ(v6, t2)
PUNPCKHQDQ(v7, v6)
PUNPCKHQDQ(t2, v6)
PUNPCKLQDQ(v7, t2)
MOVO(t1, v7)
MOVO(v2, t1)
PUNPCKHQDQ(t2, v7)
PUNPCKLQDQ(v3, t2)
PUNPCKHQDQ(t2, v2)
PUNPCKLQDQ(t1, t2)
PUNPCKHQDQ(t2, v3)
}
func SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2 VecPhysical) {
MOVO(v4, t1)
MOVO(v5, v4)
MOVO(t1, v5)
MOVO(v2, t1)
PUNPCKLQDQ(v2, t2)
PUNPCKHQDQ(v3, v2)
PUNPCKHQDQ(t2, v2)
PUNPCKLQDQ(v3, t2)
MOVO(t1, v3)
MOVO(v6, t1)
PUNPCKHQDQ(t2, v3)
PUNPCKLQDQ(v7, t2)
PUNPCKHQDQ(t2, v6)
PUNPCKLQDQ(t1, t2)
PUNPCKHQDQ(t2, v7)
}
func HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, t0, c40, c48 VecPhysical) {
MOVO(v0, t0)
PMULULQ(v2, t0)
PADDQ(v2, v0)
PADDQ(t0, v0)
PADDQ(t0, v0)
PXOR(v0, v6)
PSHUFD(Imm(0xB1), v6, v6)
MOVO(v4, t0)
PMULULQ(v6, t0)
PADDQ(v6, v4)
PADDQ(t0, v4)
PADDQ(t0, v4)
PXOR(v4, v2)
PSHUFB(c40, v2)
MOVO(v0, t0)
PMULULQ(v2, t0)
PADDQ(v2, v0)
PADDQ(t0, v0)
PADDQ(t0, v0)
PXOR(v0, v6)
PSHUFB(c48, v6)
MOVO(v4, t0)
PMULULQ(v6, t0)
PADDQ(v6, v4)
PADDQ(t0, v4)
PADDQ(t0, v4)
PXOR(v4, v2)
MOVO(v2, t0)
PADDQ(v2, t0)
PSRLQ(Imm(63), v2)
PXOR(t0, v2)
MOVO(v1, t0)
PMULULQ(v3, t0)
PADDQ(v3, v1)
PADDQ(t0, v1)
PADDQ(t0, v1)
PXOR(v1, v7)
PSHUFD(Imm(0xB1), v7, v7)
MOVO(v5, t0)
PMULULQ(v7, t0)
PADDQ(v7, v5)
PADDQ(t0, v5)
PADDQ(t0, v5)
PXOR(v5, v3)
PSHUFB(c40, v3)
MOVO(v1, t0)
PMULULQ(v3, t0)
PADDQ(v3, v1)
PADDQ(t0, v1)
PADDQ(t0, v1)
PXOR(v1, v7)
PSHUFB(c48, v7)
MOVO(v5, t0)
PMULULQ(v7, t0)
PADDQ(v7, v5)
PADDQ(t0, v5)
PADDQ(t0, v5)
PXOR(v5, v3)
MOVO(v3, t0)
PADDQ(v3, t0)
PSRLQ(Imm(63), v3)
PXOR(t0, v3)
}
func LOAD_MSG_0(block GPPhysical, off int) {
var registers = []VecPhysical{X0, X1, X2, X3, X4, X5, X6, X7}
for i, r := range registers {
MOVOU(Mem{Base: block}.Offset(8*(off+(i*2))), r)
}
}
func STORE_MSG_0(block GPPhysical, off int) {
var registers = []VecPhysical{X0, X1, X2, X3, X4, X5, X6, X7}
for i, r := range registers {
MOVOU(r, Mem{Base: block}.Offset(8*(off+(i*2))))
}
}
func LOAD_MSG_1(block GPPhysical, off int) {
var registers = []VecPhysical{X0, X1, X2, X3, X4, X5, X6, X7}
for i, r := range registers {
MOVOU(Mem{Base: block}.Offset(8*off+i*16*8), r)
}
}
func STORE_MSG_1(block GPPhysical, off int) {
var registers = []VecPhysical{X0, X1, X2, X3, X4, X5, X6, X7}
for i, r := range registers {
MOVOU(r, Mem{Base: block}.Offset(8*off+i*16*8))
}
}
func BLAMKA_ROUND_0(block GPPhysical, off int, t0, t1, c40, c48 VecPhysical) {
LOAD_MSG_0(block, off)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48)
SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1)
STORE_MSG_0(block, off)
}
func BLAMKA_ROUND_1(block GPPhysical, off int, t0, t1, c40, c48 VecPhysical) {
LOAD_MSG_1(block, off)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48)
SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1)
STORE_MSG_1(block, off)
}
// ##------------------DATA SECTION-------------------##
var c40_DATA_ptr, c48_DATA_ptr *Mem
func c40_DATA() Mem {
if c40_DATA_ptr != nil {
return *c40_DATA_ptr
}
c40_DATA := GLOBL("·c40", NOPTR|RODATA)
c40_DATA_ptr = &c40_DATA
DATA(0x00, U64(0x0201000706050403))
DATA(0x08, U64(0x0a09080f0e0d0c0b))
return c40_DATA
}
func c48_DATA() Mem {
if c48_DATA_ptr != nil {
return *c48_DATA_ptr
}
c48_DATA := GLOBL("·c48", NOPTR|RODATA)
c48_DATA_ptr = &c48_DATA
DATA(0x00, U64(0x0100070605040302))
DATA(0x08, U64(0x09080f0e0d0c0b0a))
return c48_DATA
}
+15
View File
@@ -0,0 +1,15 @@
module argon2/_asm
go 1.23
require (
github.com/mmcloughlin/avo v0.6.0
golang.org/x/crypto v0.33.0
)
require (
golang.org/x/mod v0.20.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/tools v0.24.0 // indirect
)
+12
View File
@@ -0,0 +1,12 @@
github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY=
github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+2761 -213
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+16
View File
@@ -0,0 +1,16 @@
module blake2b/_asm/AVX2
go 1.23
require (
github.com/mmcloughlin/avo v0.6.0
golang.org/x/crypto v0.33.0
)
require (
golang.org/x/mod v0.20.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/tools v0.24.0 // indirect
)
+12
View File
@@ -0,0 +1,12 @@
github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY=
github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+361
View File
@@ -0,0 +1,361 @@
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
. "github.com/mmcloughlin/avo/build"
. "github.com/mmcloughlin/avo/operand"
. "github.com/mmcloughlin/avo/reg"
_ "golang.org/x/crypto/blake2b"
)
//go:generate go run . -out ../../blake2b_amd64.s -pkg blake2b
const ThatPeskyUnicodeDot = "\u00b7"
var iv0_DATA_ptr, iv1_DATA_ptr, iv2_DATA_ptr, iv3_DATA_ptr, c40_DATA_ptr, c48_DATA_ptr *Mem
func main() {
Package("golang.org/x/crypto/blake2b")
ConstraintExpr("amd64,gc,!purego")
hashBlocksSSE4()
Generate()
}
func SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2 VecPhysical) {
MOVO(v4, t1)
MOVO(v5, v4)
MOVO(t1, v5)
MOVO(v6, t1)
PUNPCKLQDQ(v6, t2)
PUNPCKHQDQ(v7, v6)
PUNPCKHQDQ(t2, v6)
PUNPCKLQDQ(v7, t2)
MOVO(t1, v7)
MOVO(v2, t1)
PUNPCKHQDQ(t2, v7)
PUNPCKLQDQ(v3, t2)
PUNPCKHQDQ(t2, v2)
PUNPCKLQDQ(t1, t2)
PUNPCKHQDQ(t2, v3)
}
func SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2 VecPhysical) {
MOVO(v4, t1)
MOVO(v5, v4)
MOVO(t1, v5)
MOVO(v2, t1)
PUNPCKLQDQ(v2, t2)
PUNPCKHQDQ(v3, v2)
PUNPCKHQDQ(t2, v2)
PUNPCKLQDQ(v3, t2)
MOVO(t1, v3)
MOVO(v6, t1)
PUNPCKHQDQ(t2, v3)
PUNPCKLQDQ(v7, t2)
PUNPCKHQDQ(t2, v6)
PUNPCKLQDQ(t1, t2)
PUNPCKHQDQ(t2, v7)
}
func HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7 VecPhysical, m0, m1, m2, m3 Op, t0, c40, c48 VecPhysical) {
PADDQ(m0, v0)
PADDQ(m1, v1)
PADDQ(v2, v0)
PADDQ(v3, v1)
PXOR(v0, v6)
PXOR(v1, v7)
PSHUFD(Imm(0xB1), v6, v6)
PSHUFD(Imm(0xB1), v7, v7)
PADDQ(v6, v4)
PADDQ(v7, v5)
PXOR(v4, v2)
PXOR(v5, v3)
PSHUFB(c40, v2)
PSHUFB(c40, v3)
PADDQ(m2, v0)
PADDQ(m3, v1)
PADDQ(v2, v0)
PADDQ(v3, v1)
PXOR(v0, v6)
PXOR(v1, v7)
PSHUFB(c48, v6)
PSHUFB(c48, v7)
PADDQ(v6, v4)
PADDQ(v7, v5)
PXOR(v4, v2)
PXOR(v5, v3)
MOVOU(v2, t0)
PADDQ(v2, t0)
PSRLQ(Imm(63), v2)
PXOR(t0, v2)
MOVOU(v3, t0)
PADDQ(v3, t0)
PSRLQ(Imm(63), v3)
PXOR(t0, v3)
}
func LOAD_MSG(m0, m1, m2, m3 VecPhysical, src GPPhysical, i0, i1, i2, i3, i4, i5, i6, i7 int) {
MOVQ(Mem{Base: src}.Offset(i0*8), m0)
PINSRQ(Imm(1), Mem{Base: src}.Offset(i1*8), m0)
MOVQ(Mem{Base: src}.Offset(i2*8), m1)
PINSRQ(Imm(1), Mem{Base: src}.Offset(i3*8), m1)
MOVQ(Mem{Base: src}.Offset(i4*8), m2)
PINSRQ(Imm(1), Mem{Base: src}.Offset(i5*8), m2)
MOVQ(Mem{Base: src}.Offset(i6*8), m3)
PINSRQ(Imm(1), Mem{Base: src}.Offset(i7*8), m3)
}
func hashBlocksSSE4() {
Implement("hashBlocksSSE4")
Attributes(4)
AllocLocal(288) // frame size = 272 + 16 byte alignment
Load(Param("h"), RAX)
Load(Param("c"), RBX)
Load(Param("flag"), RCX)
Load(Param("blocks").Base(), RSI)
Load(Param("blocks").Len(), RDI)
MOVQ(RSP, R10)
ADDQ(Imm(15), R10)
ANDQ(I32(-16), R10)
iv3 := iv3_DATA()
MOVOU(iv3, X0)
MOVO(X0, Mem{Base: R10}.Offset(0))
XORQ(RCX, Mem{Base: R10}.Offset(0)) // 0(R10) = ·iv3 ^ (CX || 0)
c40 := c40_DATA()
c48 := c48_DATA()
MOVOU(c40, X13)
MOVOU(c48, X14)
MOVOU(Mem{Base: AX}.Offset(0), X12)
MOVOU(Mem{Base: AX}.Offset(16), X15)
MOVQ(Mem{Base: BX}.Offset(0), R8)
MOVQ(Mem{Base: BX}.Offset(8), R9)
Label("loop")
ADDQ(Imm(128), R8)
CMPQ(R8, Imm(128))
JGE(LabelRef("noinc"))
INCQ(R9)
Label("noinc")
MOVQ(R8, X8)
PINSRQ(Imm(1), R9, X8)
iv0 := iv0_DATA()
iv1 := iv1_DATA()
iv2 := iv2_DATA()
MOVO(X12, X0)
MOVO(X15, X1)
MOVOU(Mem{Base: AX}.Offset(32), X2)
MOVOU(Mem{Base: AX}.Offset(48), X3)
MOVOU(iv0, X4)
MOVOU(iv1, X5)
MOVOU(iv2, X6)
PXOR(X8, X6)
MOVO(Mem{Base: R10}.Offset(0), X7)
LOAD_MSG(X8, X9, X10, X11, SI, 0, 2, 4, 6, 1, 3, 5, 7)
MOVO(X8, Mem{Base: R10}.Offset(16))
MOVO(X9, Mem{Base: R10}.Offset(32))
MOVO(X10, Mem{Base: R10}.Offset(48))
MOVO(X11, Mem{Base: R10}.Offset(64))
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 8, 10, 12, 14, 9, 11, 13, 15)
MOVO(X8, Mem{Base: R10}.Offset(80))
MOVO(X9, Mem{Base: R10}.Offset(96))
MOVO(X10, Mem{Base: R10}.Offset(112))
MOVO(X11, Mem{Base: R10}.Offset(128))
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 14, 4, 9, 13, 10, 8, 15, 6)
MOVO(X8, Mem{Base: R10}.Offset(144))
MOVO(X9, Mem{Base: R10}.Offset(160))
MOVO(X10, Mem{Base: R10}.Offset(176))
MOVO(X11, Mem{Base: R10}.Offset(192))
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 1, 0, 11, 5, 12, 2, 7, 3)
MOVO(X8, Mem{Base: R10}.Offset(208))
MOVO(X9, Mem{Base: R10}.Offset(224))
MOVO(X10, Mem{Base: R10}.Offset(240))
MOVO(X11, Mem{Base: R10}.Offset(256))
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 11, 12, 5, 15, 8, 0, 2, 13)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 10, 3, 7, 9, 14, 6, 1, 4)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 7, 3, 13, 11, 9, 1, 12, 14)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 2, 5, 4, 15, 6, 10, 0, 8)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 9, 5, 2, 10, 0, 7, 4, 15)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 14, 11, 6, 3, 1, 12, 8, 13)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 2, 6, 0, 8, 12, 10, 11, 3)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 4, 7, 15, 1, 13, 5, 14, 9)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 12, 1, 14, 4, 5, 15, 13, 10)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 0, 6, 9, 8, 7, 3, 2, 11)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 13, 7, 12, 3, 11, 14, 1, 9)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 5, 15, 8, 2, 0, 4, 6, 10)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 6, 14, 11, 0, 15, 9, 3, 8)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 12, 13, 1, 10, 2, 7, 4, 5)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 10, 8, 7, 1, 2, 4, 6, 5)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
LOAD_MSG(X8, X9, X10, X11, SI, 15, 9, 3, 13, 11, 14, 12, 0)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, Mem{Base: R10}.Offset(16), Mem{Base: R10}.Offset(32), Mem{Base: R10}.Offset(48), Mem{Base: R10}.Offset(64), X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, Mem{Base: R10}.Offset(80), Mem{Base: R10}.Offset(96), Mem{Base: R10}.Offset(112), Mem{Base: R10}.Offset(128), X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, Mem{Base: R10}.Offset(144), Mem{Base: R10}.Offset(160), Mem{Base: R10}.Offset(176), Mem{Base: R10}.Offset(192), X11, X13, X14)
SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9)
HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, Mem{Base: R10}.Offset(208), Mem{Base: R10}.Offset(224), Mem{Base: R10}.Offset(240), Mem{Base: R10}.Offset(256), X11, X13, X14)
SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9)
MOVOU(Mem{Base: AX}.Offset(32), X10)
MOVOU(Mem{Base: AX}.Offset(48), X11)
PXOR(X0, X12)
PXOR(X1, X15)
PXOR(X2, X10)
PXOR(X3, X11)
PXOR(X4, X12)
PXOR(X5, X15)
PXOR(X6, X10)
PXOR(X7, X11)
MOVOU(X10, Mem{Base: AX}.Offset(32))
MOVOU(X11, Mem{Base: AX}.Offset(48))
LEAQ(Mem{Base: SI}.Offset(128), RSI)
SUBQ(Imm(128), RDI)
JNE(LabelRef("loop"))
MOVOU(X12, Mem{Base: AX}.Offset(0))
MOVOU(X15, Mem{Base: AX}.Offset(16))
MOVQ(R8, Mem{Base: BX}.Offset(0))
MOVQ(R9, Mem{Base: BX}.Offset(8))
RET()
}
// #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DATA SECTION~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
func iv0_DATA() Mem {
if iv0_DATA_ptr != nil {
return *iv0_DATA_ptr
}
iv0 := GLOBL(ThatPeskyUnicodeDot+"iv0", NOPTR|RODATA)
iv0_DATA_ptr = &iv0
DATA(0x00, U64(0x6a09e667f3bcc908))
DATA(0x08, U64(0xbb67ae8584caa73b))
return iv0
}
func iv1_DATA() Mem {
if iv1_DATA_ptr != nil {
return *iv1_DATA_ptr
}
iv1 := GLOBL(ThatPeskyUnicodeDot+"iv1", NOPTR|RODATA)
iv1_DATA_ptr = &iv1
DATA(0x00, U64(0x3c6ef372fe94f82b))
DATA(0x08, U64(0xa54ff53a5f1d36f1))
return iv1
}
func iv2_DATA() Mem {
if iv2_DATA_ptr != nil {
return *iv2_DATA_ptr
}
iv2 := GLOBL(ThatPeskyUnicodeDot+"iv2", NOPTR|RODATA)
iv2_DATA_ptr = &iv2
DATA(0x00, U64(0x510e527fade682d1))
DATA(0x08, U64(0x9b05688c2b3e6c1f))
return iv2
}
func iv3_DATA() Mem {
if iv3_DATA_ptr != nil {
return *iv3_DATA_ptr
}
iv3 := GLOBL(ThatPeskyUnicodeDot+"iv3", NOPTR|RODATA)
iv3_DATA_ptr = &iv3
DATA(0x00, U64(0x1f83d9abfb41bd6b))
DATA(0x08, U64(0x5be0cd19137e2179))
return iv3
}
func c40_DATA() Mem {
if c40_DATA_ptr != nil {
return *c40_DATA_ptr
}
c40 := GLOBL(ThatPeskyUnicodeDot+"c40", NOPTR|RODATA)
c40_DATA_ptr = &c40
DATA(0x00, U64(0x0201000706050403))
DATA(0x08, U64(0x0a09080f0e0d0c0b))
return c40
}
func c48_DATA() Mem {
if c48_DATA_ptr != nil {
return *c48_DATA_ptr
}
c48 := GLOBL(ThatPeskyUnicodeDot+"c48", NOPTR|RODATA)
c48_DATA_ptr = &c48
DATA(0x00, U64(0x0100070605040302))
DATA(0x08, U64(0x09080f0e0d0c0b0a))
return c48
}
+15
View File
@@ -0,0 +1,15 @@
module blake2b/_asm
go 1.23
require (
github.com/mmcloughlin/avo v0.6.0
golang.org/x/crypto v0.33.0
)
require (
golang.org/x/mod v0.20.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/tools v0.24.0 // indirect
)
+12
View File
@@ -0,0 +1,12 @@
github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY=
github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+4492 -677
View File
File diff suppressed because it is too large Load Diff
+1427 -264
View File
File diff suppressed because it is too large Load Diff
+525
View File
@@ -0,0 +1,525 @@
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
. "github.com/mmcloughlin/avo/build"
"github.com/mmcloughlin/avo/ir"
. "github.com/mmcloughlin/avo/operand"
. "github.com/mmcloughlin/avo/reg"
_ "golang.org/x/crypto/blake2s"
)
//go:generate go run . -out ../blake2s_amd64.s -pkg blake2s
func main() {
Package("golang.org/x/crypto/blake2s")
ConstraintExpr("amd64,gc,!purego")
hashBlocksSSE2()
hashBlocksSSSE3()
hashBlocksSSE4()
Generate()
}
func ROTL_SSE2(n uint64, t, v VecPhysical) {
MOVO(v, t)
PSLLL(Imm(n), t)
PSRLL(Imm(32-n), v)
PXOR(t, v)
}
func ROTL_SSSE3(c, v VecPhysical) {
PSHUFB(c, v)
}
func ROUND_SSE2(v0, v1, v2, v3 VecPhysical, m0, m1, m2, m3 Mem, t VecPhysical) {
PADDL(m0, v0)
PADDL(v1, v0)
PXOR(v0, v3)
ROTL_SSE2(16, t, v3)
PADDL(v3, v2)
PXOR(v2, v1)
ROTL_SSE2(20, t, v1)
PADDL(m1, v0)
PADDL(v1, v0)
PXOR(v0, v3)
ROTL_SSE2(24, t, v3)
PADDL(v3, v2)
PXOR(v2, v1)
ROTL_SSE2(25, t, v1)
PSHUFL(Imm(0x39), v1, v1)
PSHUFL(Imm(0x4E), v2, v2)
PSHUFL(Imm(0x93), v3, v3)
PADDL(m2, v0)
PADDL(v1, v0)
PXOR(v0, v3)
ROTL_SSE2(16, t, v3)
PADDL(v3, v2)
PXOR(v2, v1)
ROTL_SSE2(20, t, v1)
PADDL(m3, v0)
PADDL(v1, v0)
PXOR(v0, v3)
ROTL_SSE2(24, t, v3)
PADDL(v3, v2)
PXOR(v2, v1)
ROTL_SSE2(25, t, v1)
PSHUFL(Imm(0x39), v3, v3)
PSHUFL(Imm(0x4E), v2, v2)
PSHUFL(Imm(0x93), v1, v1)
}
func ROUND_SSSE3(v0, v1, v2, v3 VecPhysical, m0, m1, m2, m3 Op, t, c16, c8 VecPhysical) {
PADDL(m0, v0)
PADDL(v1, v0)
PXOR(v0, v3)
ROTL_SSSE3(c16, v3)
PADDL(v3, v2)
PXOR(v2, v1)
ROTL_SSE2(20, t, v1)
PADDL(m1, v0)
PADDL(v1, v0)
PXOR(v0, v3)
ROTL_SSSE3(c8, v3)
PADDL(v3, v2)
PXOR(v2, v1)
ROTL_SSE2(25, t, v1)
PSHUFL(Imm(0x39), v1, v1)
PSHUFL(Imm(0x4E), v2, v2)
PSHUFL(Imm(0x93), v3, v3)
PADDL(m2, v0)
PADDL(v1, v0)
PXOR(v0, v3)
ROTL_SSSE3(c16, v3)
PADDL(v3, v2)
PXOR(v2, v1)
ROTL_SSE2(20, t, v1)
PADDL(m3, v0)
PADDL(v1, v0)
PXOR(v0, v3)
ROTL_SSSE3(c8, v3)
PADDL(v3, v2)
PXOR(v2, v1)
ROTL_SSE2(25, t, v1)
PSHUFL(Imm(0x39), v3, v3)
PSHUFL(Imm(0x4E), v2, v2)
PSHUFL(Imm(0x93), v1, v1)
}
func LOAD_MSG_SSE4(m0, m1, m2, m3 VecPhysical, src GPPhysical, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15 int) {
// Hack to get Avo to emit a MOVL instruction with a VecPhysical as the destination
Instruction(&ir.Instruction{Opcode: "MOVL", Operands: []Op{Mem{Base: src}.Offset(i0 * 4), m0}})
PINSRD(Imm(1), Mem{Base: src}.Offset(i1*4), m0)
PINSRD(Imm(2), Mem{Base: src}.Offset(i2*4), m0)
PINSRD(Imm(3), Mem{Base: src}.Offset(i3*4), m0)
Instruction(&ir.Instruction{Opcode: "MOVL", Operands: []Op{Mem{Base: src}.Offset(i4 * 4), m1}})
PINSRD(Imm(1), Mem{Base: src}.Offset(i5*4), m1)
PINSRD(Imm(2), Mem{Base: src}.Offset(i6*4), m1)
PINSRD(Imm(3), Mem{Base: src}.Offset(i7*4), m1)
Instruction(&ir.Instruction{Opcode: "MOVL", Operands: []Op{Mem{Base: src}.Offset(i8 * 4), m2}})
PINSRD(Imm(1), Mem{Base: src}.Offset(i9*4), m2)
PINSRD(Imm(2), Mem{Base: src}.Offset(i10*4), m2)
PINSRD(Imm(3), Mem{Base: src}.Offset(i11*4), m2)
Instruction(&ir.Instruction{Opcode: "MOVL", Operands: []Op{Mem{Base: src}.Offset(i12 * 4), m3}})
PINSRD(Imm(1), Mem{Base: src}.Offset(i13*4), m3)
PINSRD(Imm(2), Mem{Base: src}.Offset(i14*4), m3)
PINSRD(Imm(3), Mem{Base: src}.Offset(i15*4), m3)
}
func PRECOMPUTE_MSG(dst GPPhysical, off int, src, R8, R9, R10, R11, R12, R13, R14, R15 GPPhysical) {
MOVQ(Mem{Base: src}.Offset(0*4), R8)
MOVQ(Mem{Base: src}.Offset(2*4), R9)
MOVQ(Mem{Base: src}.Offset(4*4), R10)
MOVQ(Mem{Base: src}.Offset(6*4), R11)
MOVQ(Mem{Base: src}.Offset(8*4), R12)
MOVQ(Mem{Base: src}.Offset(10*4), R13)
MOVQ(Mem{Base: src}.Offset(12*4), R14)
MOVQ(Mem{Base: src}.Offset(14*4), R15)
MOVL(R8L, Mem{Base: dst}.Offset(0*4+off+0))
MOVL(R8L, Mem{Base: dst}.Offset(9*4+off+64))
MOVL(R8L, Mem{Base: dst}.Offset(5*4+off+128))
MOVL(R8L, Mem{Base: dst}.Offset(14*4+off+192))
MOVL(R8L, Mem{Base: dst}.Offset(4*4+off+256))
MOVL(R8L, Mem{Base: dst}.Offset(2*4+off+320))
MOVL(R8L, Mem{Base: dst}.Offset(8*4+off+384))
MOVL(R8L, Mem{Base: dst}.Offset(12*4+off+448))
MOVL(R8L, Mem{Base: dst}.Offset(3*4+off+512))
MOVL(R8L, Mem{Base: dst}.Offset(15*4+off+576))
SHRQ(Imm(32), R8)
MOVL(R8L, Mem{Base: dst}.Offset(4*4+off+0))
MOVL(R8L, Mem{Base: dst}.Offset(8*4+off+64))
MOVL(R8L, Mem{Base: dst}.Offset(14*4+off+128))
MOVL(R8L, Mem{Base: dst}.Offset(5*4+off+192))
MOVL(R8L, Mem{Base: dst}.Offset(12*4+off+256))
MOVL(R8L, Mem{Base: dst}.Offset(11*4+off+320))
MOVL(R8L, Mem{Base: dst}.Offset(1*4+off+384))
MOVL(R8L, Mem{Base: dst}.Offset(6*4+off+448))
MOVL(R8L, Mem{Base: dst}.Offset(10*4+off+512))
MOVL(R8L, Mem{Base: dst}.Offset(3*4+off+576))
MOVL(R9L, Mem{Base: dst}.Offset(1*4+off+0))
MOVL(R9L, Mem{Base: dst}.Offset(13*4+off+64))
MOVL(R9L, Mem{Base: dst}.Offset(6*4+off+128))
MOVL(R9L, Mem{Base: dst}.Offset(8*4+off+192))
MOVL(R9L, Mem{Base: dst}.Offset(2*4+off+256))
MOVL(R9L, Mem{Base: dst}.Offset(0*4+off+320))
MOVL(R9L, Mem{Base: dst}.Offset(14*4+off+384))
MOVL(R9L, Mem{Base: dst}.Offset(11*4+off+448))
MOVL(R9L, Mem{Base: dst}.Offset(12*4+off+512))
MOVL(R9L, Mem{Base: dst}.Offset(4*4+off+576))
SHRQ(Imm(32), R9)
MOVL(R9L, Mem{Base: dst}.Offset(5*4+off+0))
MOVL(R9L, Mem{Base: dst}.Offset(15*4+off+64))
MOVL(R9L, Mem{Base: dst}.Offset(9*4+off+128))
MOVL(R9L, Mem{Base: dst}.Offset(1*4+off+192))
MOVL(R9L, Mem{Base: dst}.Offset(11*4+off+256))
MOVL(R9L, Mem{Base: dst}.Offset(7*4+off+320))
MOVL(R9L, Mem{Base: dst}.Offset(13*4+off+384))
MOVL(R9L, Mem{Base: dst}.Offset(3*4+off+448))
MOVL(R9L, Mem{Base: dst}.Offset(6*4+off+512))
MOVL(R9L, Mem{Base: dst}.Offset(10*4+off+576))
MOVL(R10L, Mem{Base: dst}.Offset(2*4+off+0))
MOVL(R10L, Mem{Base: dst}.Offset(1*4+off+64))
MOVL(R10L, Mem{Base: dst}.Offset(15*4+off+128))
MOVL(R10L, Mem{Base: dst}.Offset(10*4+off+192))
MOVL(R10L, Mem{Base: dst}.Offset(6*4+off+256))
MOVL(R10L, Mem{Base: dst}.Offset(8*4+off+320))
MOVL(R10L, Mem{Base: dst}.Offset(3*4+off+384))
MOVL(R10L, Mem{Base: dst}.Offset(13*4+off+448))
MOVL(R10L, Mem{Base: dst}.Offset(14*4+off+512))
MOVL(R10L, Mem{Base: dst}.Offset(5*4+off+576))
SHRQ(Imm(32), R10)
MOVL(R10L, Mem{Base: dst}.Offset(6*4+off+0))
MOVL(R10L, Mem{Base: dst}.Offset(11*4+off+64))
MOVL(R10L, Mem{Base: dst}.Offset(2*4+off+128))
MOVL(R10L, Mem{Base: dst}.Offset(9*4+off+192))
MOVL(R10L, Mem{Base: dst}.Offset(1*4+off+256))
MOVL(R10L, Mem{Base: dst}.Offset(13*4+off+320))
MOVL(R10L, Mem{Base: dst}.Offset(4*4+off+384))
MOVL(R10L, Mem{Base: dst}.Offset(8*4+off+448))
MOVL(R10L, Mem{Base: dst}.Offset(15*4+off+512))
MOVL(R10L, Mem{Base: dst}.Offset(7*4+off+576))
MOVL(R11L, Mem{Base: dst}.Offset(3*4+off+0))
MOVL(R11L, Mem{Base: dst}.Offset(7*4+off+64))
MOVL(R11L, Mem{Base: dst}.Offset(13*4+off+128))
MOVL(R11L, Mem{Base: dst}.Offset(12*4+off+192))
MOVL(R11L, Mem{Base: dst}.Offset(10*4+off+256))
MOVL(R11L, Mem{Base: dst}.Offset(1*4+off+320))
MOVL(R11L, Mem{Base: dst}.Offset(9*4+off+384))
MOVL(R11L, Mem{Base: dst}.Offset(14*4+off+448))
MOVL(R11L, Mem{Base: dst}.Offset(0*4+off+512))
MOVL(R11L, Mem{Base: dst}.Offset(6*4+off+576))
SHRQ(Imm(32), R11)
MOVL(R11L, Mem{Base: dst}.Offset(7*4+off+0))
MOVL(R11L, Mem{Base: dst}.Offset(14*4+off+64))
MOVL(R11L, Mem{Base: dst}.Offset(10*4+off+128))
MOVL(R11L, Mem{Base: dst}.Offset(0*4+off+192))
MOVL(R11L, Mem{Base: dst}.Offset(5*4+off+256))
MOVL(R11L, Mem{Base: dst}.Offset(9*4+off+320))
MOVL(R11L, Mem{Base: dst}.Offset(12*4+off+384))
MOVL(R11L, Mem{Base: dst}.Offset(1*4+off+448))
MOVL(R11L, Mem{Base: dst}.Offset(13*4+off+512))
MOVL(R11L, Mem{Base: dst}.Offset(2*4+off+576))
MOVL(R12L, Mem{Base: dst}.Offset(8*4+off+0))
MOVL(R12L, Mem{Base: dst}.Offset(5*4+off+64))
MOVL(R12L, Mem{Base: dst}.Offset(4*4+off+128))
MOVL(R12L, Mem{Base: dst}.Offset(15*4+off+192))
MOVL(R12L, Mem{Base: dst}.Offset(14*4+off+256))
MOVL(R12L, Mem{Base: dst}.Offset(3*4+off+320))
MOVL(R12L, Mem{Base: dst}.Offset(11*4+off+384))
MOVL(R12L, Mem{Base: dst}.Offset(10*4+off+448))
MOVL(R12L, Mem{Base: dst}.Offset(7*4+off+512))
MOVL(R12L, Mem{Base: dst}.Offset(1*4+off+576))
SHRQ(Imm(32), R12)
MOVL(R12L, Mem{Base: dst}.Offset(12*4+off+0))
MOVL(R12L, Mem{Base: dst}.Offset(2*4+off+64))
MOVL(R12L, Mem{Base: dst}.Offset(11*4+off+128))
MOVL(R12L, Mem{Base: dst}.Offset(4*4+off+192))
MOVL(R12L, Mem{Base: dst}.Offset(0*4+off+256))
MOVL(R12L, Mem{Base: dst}.Offset(15*4+off+320))
MOVL(R12L, Mem{Base: dst}.Offset(10*4+off+384))
MOVL(R12L, Mem{Base: dst}.Offset(7*4+off+448))
MOVL(R12L, Mem{Base: dst}.Offset(5*4+off+512))
MOVL(R12L, Mem{Base: dst}.Offset(9*4+off+576))
MOVL(R13L, Mem{Base: dst}.Offset(9*4+off+0))
MOVL(R13L, Mem{Base: dst}.Offset(4*4+off+64))
MOVL(R13L, Mem{Base: dst}.Offset(8*4+off+128))
MOVL(R13L, Mem{Base: dst}.Offset(13*4+off+192))
MOVL(R13L, Mem{Base: dst}.Offset(3*4+off+256))
MOVL(R13L, Mem{Base: dst}.Offset(5*4+off+320))
MOVL(R13L, Mem{Base: dst}.Offset(7*4+off+384))
MOVL(R13L, Mem{Base: dst}.Offset(15*4+off+448))
MOVL(R13L, Mem{Base: dst}.Offset(11*4+off+512))
MOVL(R13L, Mem{Base: dst}.Offset(0*4+off+576))
SHRQ(Imm(32), R13)
MOVL(R13L, Mem{Base: dst}.Offset(13*4+off+0))
MOVL(R13L, Mem{Base: dst}.Offset(10*4+off+64))
MOVL(R13L, Mem{Base: dst}.Offset(0*4+off+128))
MOVL(R13L, Mem{Base: dst}.Offset(3*4+off+192))
MOVL(R13L, Mem{Base: dst}.Offset(9*4+off+256))
MOVL(R13L, Mem{Base: dst}.Offset(6*4+off+320))
MOVL(R13L, Mem{Base: dst}.Offset(15*4+off+384))
MOVL(R13L, Mem{Base: dst}.Offset(4*4+off+448))
MOVL(R13L, Mem{Base: dst}.Offset(2*4+off+512))
MOVL(R13L, Mem{Base: dst}.Offset(12*4+off+576))
MOVL(R14L, Mem{Base: dst}.Offset(10*4+off+0))
MOVL(R14L, Mem{Base: dst}.Offset(12*4+off+64))
MOVL(R14L, Mem{Base: dst}.Offset(1*4+off+128))
MOVL(R14L, Mem{Base: dst}.Offset(6*4+off+192))
MOVL(R14L, Mem{Base: dst}.Offset(13*4+off+256))
MOVL(R14L, Mem{Base: dst}.Offset(4*4+off+320))
MOVL(R14L, Mem{Base: dst}.Offset(0*4+off+384))
MOVL(R14L, Mem{Base: dst}.Offset(2*4+off+448))
MOVL(R14L, Mem{Base: dst}.Offset(8*4+off+512))
MOVL(R14L, Mem{Base: dst}.Offset(14*4+off+576))
SHRQ(Imm(32), R14)
MOVL(R14L, Mem{Base: dst}.Offset(14*4+off+0))
MOVL(R14L, Mem{Base: dst}.Offset(3*4+off+64))
MOVL(R14L, Mem{Base: dst}.Offset(7*4+off+128))
MOVL(R14L, Mem{Base: dst}.Offset(2*4+off+192))
MOVL(R14L, Mem{Base: dst}.Offset(15*4+off+256))
MOVL(R14L, Mem{Base: dst}.Offset(12*4+off+320))
MOVL(R14L, Mem{Base: dst}.Offset(6*4+off+384))
MOVL(R14L, Mem{Base: dst}.Offset(0*4+off+448))
MOVL(R14L, Mem{Base: dst}.Offset(9*4+off+512))
MOVL(R14L, Mem{Base: dst}.Offset(11*4+off+576))
MOVL(R15L, Mem{Base: dst}.Offset(11*4+off+0))
MOVL(R15L, Mem{Base: dst}.Offset(0*4+off+64))
MOVL(R15L, Mem{Base: dst}.Offset(12*4+off+128))
MOVL(R15L, Mem{Base: dst}.Offset(7*4+off+192))
MOVL(R15L, Mem{Base: dst}.Offset(8*4+off+256))
MOVL(R15L, Mem{Base: dst}.Offset(14*4+off+320))
MOVL(R15L, Mem{Base: dst}.Offset(2*4+off+384))
MOVL(R15L, Mem{Base: dst}.Offset(5*4+off+448))
MOVL(R15L, Mem{Base: dst}.Offset(1*4+off+512))
MOVL(R15L, Mem{Base: dst}.Offset(13*4+off+576))
SHRQ(Imm(32), R15)
MOVL(R15L, Mem{Base: dst}.Offset(15*4+off+0))
MOVL(R15L, Mem{Base: dst}.Offset(6*4+off+64))
MOVL(R15L, Mem{Base: dst}.Offset(3*4+off+128))
MOVL(R15L, Mem{Base: dst}.Offset(11*4+off+192))
MOVL(R15L, Mem{Base: dst}.Offset(7*4+off+256))
MOVL(R15L, Mem{Base: dst}.Offset(10*4+off+320))
MOVL(R15L, Mem{Base: dst}.Offset(5*4+off+384))
MOVL(R15L, Mem{Base: dst}.Offset(9*4+off+448))
MOVL(R15L, Mem{Base: dst}.Offset(4*4+off+512))
MOVL(R15L, Mem{Base: dst}.Offset(8*4+off+576))
}
func BLAKE2s_SSE2() {
PRECOMPUTE_MSG(BP, 16, SI, R8, R9, R10, R11, R12, R13, R14, R15)
for i := 0; i < 10; i++ {
ROUND_SSE2(X4, X5, X6, X7, Mem{Base: BP}.Offset(16+64*i), Mem{Base: BP}.Offset(32+64*i), Mem{Base: BP}.Offset(48+64*i), Mem{Base: BP}.Offset(64+64*i), X8)
}
}
func BLAKE2s_SSSE3() {
PRECOMPUTE_MSG(BP, 16, SI, R8, R9, R10, R11, R12, R13, R14, R15)
for i := 0; i < 10; i++ {
ROUND_SSSE3(X4, X5, X6, X7, Mem{Base: BP}.Offset(16+64*i), Mem{Base: BP}.Offset(32+64*i), Mem{Base: BP}.Offset(48+64*i), Mem{Base: BP}.Offset(64+64*i), X8, X13, X14)
}
}
func BLAKE2s_SSE4() {
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 11, 12, 5, 15, 8, 0, 2, 13, 10, 3, 7, 9, 14, 6, 1, 4)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 7, 3, 13, 11, 9, 1, 12, 14, 2, 5, 4, 15, 6, 10, 0, 8)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 9, 5, 2, 10, 0, 7, 4, 15, 14, 11, 6, 3, 1, 12, 8, 13)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 2, 6, 0, 8, 12, 10, 11, 3, 4, 7, 15, 1, 13, 5, 14, 9)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 12, 1, 14, 4, 5, 15, 13, 10, 0, 6, 9, 8, 7, 3, 2, 11)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 13, 7, 12, 3, 11, 14, 1, 9, 5, 15, 8, 2, 0, 4, 6, 10)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 6, 14, 11, 0, 15, 9, 3, 8, 12, 13, 1, 10, 2, 7, 4, 5)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 10, 8, 7, 1, 2, 4, 6, 5, 15, 9, 3, 13, 11, 14, 12, 0)
ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14)
}
func HASH_BLOCKS(h, c, flag, blocks_base, blocks_len Mem, BLAKE2s_FUNC func()) {
MOVQ(h, RAX)
MOVQ(c, RBX)
MOVL(flag, ECX)
MOVQ(blocks_base, RSI)
MOVQ(blocks_len, RDX)
MOVQ(RSP, RBP)
ADDQ(Imm(15), RBP)
ANDQ(I32(^15), RBP)
MOVQ(Mem{Base: BX}.Offset(0), R9)
MOVQ(R9, Mem{Base: BP}.Offset(0))
MOVQ(RCX, Mem{Base: BP}.Offset(8))
MOVOU(Mem{Base: AX}.Offset(0), X0)
MOVOU(Mem{Base: AX}.Offset(16), X1)
iv0 := iv0_DATA()
iv1 := iv1_DATA()
MOVOU(iv0, X2)
MOVOU(iv1, X3)
counter := counter_DATA()
rol16 := rol16_DATA()
rol8 := rol8_DATA()
MOVOU(counter, X12)
MOVOU(rol16, X13)
MOVOU(rol8, X14)
MOVO(Mem{Base: BP}.Offset(0), X15)
Label("loop")
MOVO(X0, X4)
MOVO(X1, X5)
MOVO(X2, X6)
MOVO(X3, X7)
PADDQ(X12, X15)
PXOR(X15, X7)
BLAKE2s_FUNC()
PXOR(X4, X0)
PXOR(X5, X1)
PXOR(X6, X0)
PXOR(X7, X1)
LEAQ(Mem{Base: SI}.Offset(64), RSI)
SUBQ(Imm(64), RDX)
JNE(LabelRef("loop"))
MOVO(X15, Mem{Base: BP}.Offset(0))
MOVQ(Mem{Base: BP}.Offset(0), R9)
MOVQ(R9, Mem{Base: BX}.Offset(0))
MOVOU(X0, Mem{Base: AX}.Offset(0))
MOVOU(X1, Mem{Base: AX}.Offset(16))
}
func hashBlocksSSE2() {
Implement("hashBlocksSSE2")
Attributes(0)
AllocLocal(672) // frame = 656 + 16 byte alignment
h := NewParamAddr("h", 0)
c := NewParamAddr("c", 8)
flag := NewParamAddr("flag", 16)
blocks_base := NewParamAddr("blocks_base", 24)
blocks_len := NewParamAddr("blocks_len", 32)
HASH_BLOCKS(h, c, flag, blocks_base, blocks_len, BLAKE2s_SSE2)
RET()
}
func hashBlocksSSSE3() {
Implement("hashBlocksSSSE3")
Attributes(0)
AllocLocal(672) // frame = 656 + 16 byte alignment
h := NewParamAddr("h", 0)
c := NewParamAddr("c", 8)
flag := NewParamAddr("flag", 16)
blocks_base := NewParamAddr("blocks_base", 24)
blocks_len := NewParamAddr("blocks_len", 32)
HASH_BLOCKS(h, c, flag, blocks_base, blocks_len, BLAKE2s_SSSE3)
RET()
}
func hashBlocksSSE4() {
Implement("hashBlocksSSE4")
Attributes(0)
AllocLocal(32) // frame = 16 + 16 byte alignment
h := NewParamAddr("h", 0)
c := NewParamAddr("c", 8)
flag := NewParamAddr("flag", 16)
blocks_base := NewParamAddr("blocks_base", 24)
blocks_len := NewParamAddr("blocks_len", 32)
HASH_BLOCKS(h, c, flag, blocks_base, blocks_len, BLAKE2s_SSE4)
RET()
}
// ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DATA SECTION~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
var iv0_DATA_ptr, iv1_DATA_ptr, rol16_DATA_ptr, rol8_DATA_ptr, counter_DATA_ptr *Mem
func iv0_DATA() Mem {
if iv0_DATA_ptr != nil {
return *iv0_DATA_ptr
}
iv0_DATA := GLOBL("iv0", NOPTR|RODATA)
iv0_DATA_ptr = &iv0_DATA
DATA(0x00, U32(0x6a09e667))
DATA(0x04, U32(0xbb67ae85))
DATA(0x08, U32(0x3c6ef372))
DATA(0x0c, U32(0xa54ff53a))
return iv0_DATA
}
func iv1_DATA() Mem {
if iv1_DATA_ptr != nil {
return *iv1_DATA_ptr
}
iv1_DATA := GLOBL("iv1", NOPTR|RODATA)
iv1_DATA_ptr = &iv1_DATA
DATA(0x00, U32(0x510e527f))
DATA(0x04, U32(0x9b05688c))
DATA(0x08, U32(0x1f83d9ab))
DATA(0x0c, U32(0x5be0cd19))
return iv1_DATA
}
func rol16_DATA() Mem {
if rol16_DATA_ptr != nil {
return *rol16_DATA_ptr
}
rol16_DATA := GLOBL("rol16", NOPTR|RODATA)
rol16_DATA_ptr = &rol16_DATA
DATA(0x00, U64(0x0504070601000302))
DATA(0x08, U64(0x0D0C0F0E09080B0A))
return rol16_DATA
}
func rol8_DATA() Mem {
if rol8_DATA_ptr != nil {
return *rol8_DATA_ptr
}
rol8_DATA := GLOBL("rol8", NOPTR|RODATA)
rol8_DATA_ptr = &rol8_DATA
DATA(0x00, U64(0x0407060500030201))
DATA(0x08, U64(0x0C0F0E0D080B0A09))
return rol8_DATA
}
func counter_DATA() Mem {
if counter_DATA_ptr != nil {
return *counter_DATA_ptr
}
counter_DATA := GLOBL("counter", NOPTR|RODATA)
counter_DATA_ptr = &counter_DATA
DATA(0x00, U64(0x0000000000000040))
DATA(0x08, U64(0x0000000000000000))
return counter_DATA
}
+15
View File
@@ -0,0 +1,15 @@
module blake2s/_asm
go 1.23
require (
github.com/mmcloughlin/avo v0.6.0
golang.org/x/crypto v0.33.0
)
require (
golang.org/x/mod v0.20.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/tools v0.24.0 // indirect
)
+12
View File
@@ -0,0 +1,12 @@
github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY=
github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+2160 -419
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -5,7 +5,7 @@
package bn256
// For details of the algorithms used, see "Multiplication and Squaring on
// Pairing-Friendly Fields, Devegili et al.
// Pairing-Friendly Fields", Devegili et al.
// http://eprint.iacr.org/2006/471.pdf.
import (
+1 -1
View File
@@ -5,7 +5,7 @@
package bn256
// For details of the algorithms used, see "Multiplication and Squaring on
// Pairing-Friendly Fields, Devegili et al.
// Pairing-Friendly Fields", Devegili et al.
// http://eprint.iacr.org/2006/471.pdf.
import (
+1 -1
View File
@@ -5,7 +5,7 @@
package bn256
// For details of the algorithms used, see "Multiplication and Squaring on
// Pairing-Friendly Fields, Devegili et al.
// Pairing-Friendly Fields", Devegili et al.
// http://eprint.iacr.org/2006/471.pdf.
import (
+1 -1
View File
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build (!arm64 && !s390x && !ppc64le) || !gc || purego
//go:build (!arm64 && !s390x && !ppc64 && !ppc64le) || !gc || purego
package chacha20
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build gc && !purego
//go:build gc && !purego && (ppc64 || ppc64le)
package chacha20
@@ -19,7 +19,7 @@
// The differences in this and the original implementation are
// due to the calling conventions and initialization of constants.
//go:build gc && !purego
//go:build gc && !purego && (ppc64 || ppc64le)
#include "textflag.h"
@@ -36,32 +36,68 @@
// for VPERMXOR
#define MASK R18
DATA consts<>+0x00(SB)/8, $0x3320646e61707865
DATA consts<>+0x08(SB)/8, $0x6b20657479622d32
DATA consts<>+0x10(SB)/8, $0x0000000000000001
DATA consts<>+0x18(SB)/8, $0x0000000000000000
DATA consts<>+0x20(SB)/8, $0x0000000000000004
DATA consts<>+0x28(SB)/8, $0x0000000000000000
DATA consts<>+0x30(SB)/8, $0x0a0b08090e0f0c0d
DATA consts<>+0x38(SB)/8, $0x0203000106070405
DATA consts<>+0x40(SB)/8, $0x090a0b080d0e0f0c
DATA consts<>+0x48(SB)/8, $0x0102030005060704
DATA consts<>+0x50(SB)/8, $0x6170786561707865
DATA consts<>+0x58(SB)/8, $0x6170786561707865
DATA consts<>+0x60(SB)/8, $0x3320646e3320646e
DATA consts<>+0x68(SB)/8, $0x3320646e3320646e
DATA consts<>+0x70(SB)/8, $0x79622d3279622d32
DATA consts<>+0x78(SB)/8, $0x79622d3279622d32
DATA consts<>+0x80(SB)/8, $0x6b2065746b206574
DATA consts<>+0x88(SB)/8, $0x6b2065746b206574
DATA consts<>+0x90(SB)/8, $0x0000000100000000
DATA consts<>+0x98(SB)/8, $0x0000000300000002
DATA consts<>+0xa0(SB)/8, $0x5566774411223300
DATA consts<>+0xa8(SB)/8, $0xddeeffcc99aabb88
DATA consts<>+0xb0(SB)/8, $0x6677445522330011
DATA consts<>+0xb8(SB)/8, $0xeeffccddaabb8899
DATA consts<>+0x00(SB)/4, $0x61707865
DATA consts<>+0x04(SB)/4, $0x3320646e
DATA consts<>+0x08(SB)/4, $0x79622d32
DATA consts<>+0x0c(SB)/4, $0x6b206574
DATA consts<>+0x10(SB)/4, $0x00000001
DATA consts<>+0x14(SB)/4, $0x00000000
DATA consts<>+0x18(SB)/4, $0x00000000
DATA consts<>+0x1c(SB)/4, $0x00000000
DATA consts<>+0x20(SB)/4, $0x00000004
DATA consts<>+0x24(SB)/4, $0x00000000
DATA consts<>+0x28(SB)/4, $0x00000000
DATA consts<>+0x2c(SB)/4, $0x00000000
DATA consts<>+0x30(SB)/4, $0x0e0f0c0d
DATA consts<>+0x34(SB)/4, $0x0a0b0809
DATA consts<>+0x38(SB)/4, $0x06070405
DATA consts<>+0x3c(SB)/4, $0x02030001
DATA consts<>+0x40(SB)/4, $0x0d0e0f0c
DATA consts<>+0x44(SB)/4, $0x090a0b08
DATA consts<>+0x48(SB)/4, $0x05060704
DATA consts<>+0x4c(SB)/4, $0x01020300
DATA consts<>+0x50(SB)/4, $0x61707865
DATA consts<>+0x54(SB)/4, $0x61707865
DATA consts<>+0x58(SB)/4, $0x61707865
DATA consts<>+0x5c(SB)/4, $0x61707865
DATA consts<>+0x60(SB)/4, $0x3320646e
DATA consts<>+0x64(SB)/4, $0x3320646e
DATA consts<>+0x68(SB)/4, $0x3320646e
DATA consts<>+0x6c(SB)/4, $0x3320646e
DATA consts<>+0x70(SB)/4, $0x79622d32
DATA consts<>+0x74(SB)/4, $0x79622d32
DATA consts<>+0x78(SB)/4, $0x79622d32
DATA consts<>+0x7c(SB)/4, $0x79622d32
DATA consts<>+0x80(SB)/4, $0x6b206574
DATA consts<>+0x84(SB)/4, $0x6b206574
DATA consts<>+0x88(SB)/4, $0x6b206574
DATA consts<>+0x8c(SB)/4, $0x6b206574
DATA consts<>+0x90(SB)/4, $0x00000000
DATA consts<>+0x94(SB)/4, $0x00000001
DATA consts<>+0x98(SB)/4, $0x00000002
DATA consts<>+0x9c(SB)/4, $0x00000003
DATA consts<>+0xa0(SB)/4, $0x11223300
DATA consts<>+0xa4(SB)/4, $0x55667744
DATA consts<>+0xa8(SB)/4, $0x99aabb88
DATA consts<>+0xac(SB)/4, $0xddeeffcc
DATA consts<>+0xb0(SB)/4, $0x22330011
DATA consts<>+0xb4(SB)/4, $0x66774455
DATA consts<>+0xb8(SB)/4, $0xaabb8899
DATA consts<>+0xbc(SB)/4, $0xeeffccdd
GLOBL consts<>(SB), RODATA, $0xc0
#ifdef GOARCH_ppc64
#define BE_XXBRW_INIT() \
LVSL (R0)(R0), V24 \
VSPLTISB $3, V25 \
VXOR V24, V25, V24 \
#define BE_XXBRW(vr) VPERM vr, vr, V24, vr
#else
#define BE_XXBRW_INIT()
#define BE_XXBRW(vr)
#endif
//func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32)
TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40
MOVD out+0(FP), OUT
@@ -94,6 +130,8 @@ TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40
// Clear V27
VXOR V27, V27, V27
BE_XXBRW_INIT()
// V28
LXVW4X (CONSTBASE)(R11), VS60
@@ -299,6 +337,11 @@ loop_vsx:
VADDUWM V8, V18, V8
VADDUWM V12, V19, V12
BE_XXBRW(V0)
BE_XXBRW(V4)
BE_XXBRW(V8)
BE_XXBRW(V12)
CMPU LEN, $64
BLT tail_vsx
@@ -327,6 +370,11 @@ loop_vsx:
VADDUWM V9, V18, V8
VADDUWM V13, V19, V12
BE_XXBRW(V0)
BE_XXBRW(V4)
BE_XXBRW(V8)
BE_XXBRW(V12)
CMPU LEN, $64
BLT tail_vsx
@@ -334,8 +382,8 @@ loop_vsx:
LXVW4X (INP)(R8), VS60
LXVW4X (INP)(R9), VS61
LXVW4X (INP)(R10), VS62
VXOR V27, V0, V27
VXOR V27, V0, V27
VXOR V28, V4, V28
VXOR V29, V8, V29
VXOR V30, V12, V30
@@ -354,6 +402,11 @@ loop_vsx:
VADDUWM V10, V18, V8
VADDUWM V14, V19, V12
BE_XXBRW(V0)
BE_XXBRW(V4)
BE_XXBRW(V8)
BE_XXBRW(V12)
CMPU LEN, $64
BLT tail_vsx
@@ -381,6 +434,11 @@ loop_vsx:
VADDUWM V11, V18, V8
VADDUWM V15, V19, V12
BE_XXBRW(V0)
BE_XXBRW(V4)
BE_XXBRW(V8)
BE_XXBRW(V12)
CMPU LEN, $64
BLT tail_vsx
@@ -408,9 +466,9 @@ loop_vsx:
done_vsx:
// Increment counter by number of 64 byte blocks
MOVD (CNT), R14
MOVWZ (CNT), R14
ADD BLOCKS, R14
MOVD R14, (CNT)
MOVWZ R14, (CNT)
RET
tail_vsx:
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
module chacha20poly1305/_asm
go 1.23
require (
github.com/mmcloughlin/avo v0.6.0
golang.org/x/crypto v0.33.0
)
require (
golang.org/x/mod v0.20.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/tools v0.24.0 // indirect
)
+12
View File
@@ -0,0 +1,12 @@
github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY=
github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -234,7 +234,7 @@ func (b *Builder) AddASN1(tag asn1.Tag, f BuilderContinuation) {
// Identifiers with the low five bits set indicate high-tag-number format
// (two or more octets), which we don't support.
if tag&0x1f == 0x1f {
b.err = fmt.Errorf("cryptobyte: high-tag number identifier octects not supported: 0x%x", tag)
b.err = fmt.Errorf("cryptobyte: high-tag number identifier octets not supported: 0x%x", tag)
return
}
b.AddUint8(uint8(tag))
+4 -4
View File
@@ -1,11 +1,11 @@
module golang.org/x/crypto
go 1.20
go 1.23.0
require (
golang.org/x/net v0.21.0 // tagx:ignore
golang.org/x/sys v0.23.0
golang.org/x/term v0.23.0
golang.org/x/sys v0.33.0
golang.org/x/term v0.32.0
)
require golang.org/x/text v0.17.0 // indirect
require golang.org/x/text v0.25.0 // indirect
+6 -6
View File
@@ -1,8 +1,8 @@
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU=
golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
+15
View File
@@ -0,0 +1,15 @@
module internal/poly1305/_asm
go 1.23
require (
github.com/mmcloughlin/avo v0.6.0
golang.org/x/crypto v0.33.0
)
require (
golang.org/x/mod v0.20.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/tools v0.24.0 // indirect
)
+12
View File
@@ -0,0 +1,12 @@
github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY=
github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+126
View File
@@ -0,0 +1,126 @@
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
. "github.com/mmcloughlin/avo/build"
. "github.com/mmcloughlin/avo/operand"
. "github.com/mmcloughlin/avo/reg"
_ "golang.org/x/crypto/sha3"
)
//go:generate go run . -out ../sum_amd64.s -pkg poly1305
func main() {
Package("golang.org/x/crypto/internal/poly1305")
ConstraintExpr("gc,!purego")
update()
Generate()
}
func update() {
Implement("update")
Load(Param("state"), RDI)
MOVQ(NewParamAddr("msg_base", 8), RSI)
MOVQ(NewParamAddr("msg_len", 16), R15)
MOVQ(Mem{Base: DI}.Offset(0), R8) // h0
MOVQ(Mem{Base: DI}.Offset(8), R9) // h1
MOVQ(Mem{Base: DI}.Offset(16), R10) // h2
MOVQ(Mem{Base: DI}.Offset(24), R11) // r0
MOVQ(Mem{Base: DI}.Offset(32), R12) // r1
CMPQ(R15, Imm(16))
JB(LabelRef("bytes_between_0_and_15"))
Label("loop")
POLY1305_ADD(RSI, R8, R9, R10)
Label("multiply")
POLY1305_MUL(R8, R9, R10, R11, R12, RBX, RCX, R13, R14)
SUBQ(Imm(16), R15)
CMPQ(R15, Imm(16))
JAE(LabelRef("loop"))
Label("bytes_between_0_and_15")
TESTQ(R15, R15)
JZ(LabelRef("done"))
MOVQ(U32(1), RBX)
XORQ(RCX, RCX)
XORQ(R13, R13)
ADDQ(R15, RSI)
Label("flush_buffer")
SHLQ(Imm(8), RBX, RCX)
SHLQ(Imm(8), RBX)
MOVB(Mem{Base: SI}.Offset(-1), R13B)
XORQ(R13, RBX)
DECQ(RSI)
DECQ(R15)
JNZ(LabelRef("flush_buffer"))
ADDQ(RBX, R8)
ADCQ(RCX, R9)
ADCQ(Imm(0), R10)
MOVQ(U32(16), R15)
JMP(LabelRef("multiply"))
Label("done")
MOVQ(R8, Mem{Base: DI}.Offset(0))
MOVQ(R9, Mem{Base: DI}.Offset(8))
MOVQ(R10, Mem{Base: DI}.Offset(16))
RET()
}
func POLY1305_ADD(msg, h0, h1, h2 GPPhysical) {
ADDQ(Mem{Base: msg}.Offset(0), h0)
ADCQ(Mem{Base: msg}.Offset(8), h1)
ADCQ(Imm(1), h2)
LEAQ(Mem{Base: msg}.Offset(16), msg)
}
func POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3 GPPhysical) {
MOVQ(r0, RAX)
MULQ(h0)
MOVQ(RAX, t0)
MOVQ(RDX, t1)
MOVQ(r0, RAX)
MULQ(h1)
ADDQ(RAX, t1)
ADCQ(Imm(0), RDX)
MOVQ(r0, t2)
IMULQ(h2, t2)
ADDQ(RDX, t2)
MOVQ(r1, RAX)
MULQ(h0)
ADDQ(RAX, t1)
ADCQ(Imm(0), RDX)
MOVQ(RDX, h0)
MOVQ(r1, t3)
IMULQ(h2, t3)
MOVQ(r1, RAX)
MULQ(h1)
ADDQ(RAX, t2)
ADCQ(RDX, t3)
ADDQ(h0, t2)
ADCQ(Imm(0), t3)
MOVQ(t0, h0)
MOVQ(t1, h1)
MOVQ(t2, h2)
ANDQ(Imm(3), h2)
MOVQ(t2, t0)
ANDQ(I32(-4), t0)
ADDQ(t0, h0)
ADCQ(t3, h1)
ADCQ(Imm(0), h2)
SHRQ(Imm(2), t3, t2)
SHRQ(Imm(2), t3)
ADDQ(t2, h0)
ADCQ(t3, h1)
ADCQ(Imm(0), h2)
}
+1 -1
View File
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build (!amd64 && !ppc64le && !s390x) || !gc || purego
//go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !s390x) || !gc || purego
package poly1305
+59 -74
View File
@@ -1,108 +1,93 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Code generated by command: go run sum_amd64_asm.go -out ../sum_amd64.s -pkg poly1305. DO NOT EDIT.
//go:build gc && !purego
#include "textflag.h"
#define POLY1305_ADD(msg, h0, h1, h2) \
ADDQ 0(msg), h0; \
ADCQ 8(msg), h1; \
ADCQ $1, h2; \
LEAQ 16(msg), msg
#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3) \
MOVQ r0, AX; \
MULQ h0; \
MOVQ AX, t0; \
MOVQ DX, t1; \
MOVQ r0, AX; \
MULQ h1; \
ADDQ AX, t1; \
ADCQ $0, DX; \
MOVQ r0, t2; \
IMULQ h2, t2; \
ADDQ DX, t2; \
\
MOVQ r1, AX; \
MULQ h0; \
ADDQ AX, t1; \
ADCQ $0, DX; \
MOVQ DX, h0; \
MOVQ r1, t3; \
IMULQ h2, t3; \
MOVQ r1, AX; \
MULQ h1; \
ADDQ AX, t2; \
ADCQ DX, t3; \
ADDQ h0, t2; \
ADCQ $0, t3; \
\
MOVQ t0, h0; \
MOVQ t1, h1; \
MOVQ t2, h2; \
ANDQ $3, h2; \
MOVQ t2, t0; \
ANDQ $0xFFFFFFFFFFFFFFFC, t0; \
ADDQ t0, h0; \
ADCQ t3, h1; \
ADCQ $0, h2; \
SHRQ $2, t3, t2; \
SHRQ $2, t3; \
ADDQ t2, h0; \
ADCQ t3, h1; \
ADCQ $0, h2
// func update(state *[7]uint64, msg []byte)
// func update(state *macState, msg []byte)
TEXT ·update(SB), $0-32
MOVQ state+0(FP), DI
MOVQ msg_base+8(FP), SI
MOVQ msg_len+16(FP), R15
MOVQ 0(DI), R8 // h0
MOVQ 8(DI), R9 // h1
MOVQ 16(DI), R10 // h2
MOVQ 24(DI), R11 // r0
MOVQ 32(DI), R12 // r1
CMPQ R15, $16
MOVQ (DI), R8
MOVQ 8(DI), R9
MOVQ 16(DI), R10
MOVQ 24(DI), R11
MOVQ 32(DI), R12
CMPQ R15, $0x10
JB bytes_between_0_and_15
loop:
POLY1305_ADD(SI, R8, R9, R10)
ADDQ (SI), R8
ADCQ 8(SI), R9
ADCQ $0x01, R10
LEAQ 16(SI), SI
multiply:
POLY1305_MUL(R8, R9, R10, R11, R12, BX, CX, R13, R14)
SUBQ $16, R15
CMPQ R15, $16
JAE loop
MOVQ R11, AX
MULQ R8
MOVQ AX, BX
MOVQ DX, CX
MOVQ R11, AX
MULQ R9
ADDQ AX, CX
ADCQ $0x00, DX
MOVQ R11, R13
IMULQ R10, R13
ADDQ DX, R13
MOVQ R12, AX
MULQ R8
ADDQ AX, CX
ADCQ $0x00, DX
MOVQ DX, R8
MOVQ R12, R14
IMULQ R10, R14
MOVQ R12, AX
MULQ R9
ADDQ AX, R13
ADCQ DX, R14
ADDQ R8, R13
ADCQ $0x00, R14
MOVQ BX, R8
MOVQ CX, R9
MOVQ R13, R10
ANDQ $0x03, R10
MOVQ R13, BX
ANDQ $-4, BX
ADDQ BX, R8
ADCQ R14, R9
ADCQ $0x00, R10
SHRQ $0x02, R14, R13
SHRQ $0x02, R14
ADDQ R13, R8
ADCQ R14, R9
ADCQ $0x00, R10
SUBQ $0x10, R15
CMPQ R15, $0x10
JAE loop
bytes_between_0_and_15:
TESTQ R15, R15
JZ done
MOVQ $1, BX
MOVQ $0x00000001, BX
XORQ CX, CX
XORQ R13, R13
ADDQ R15, SI
flush_buffer:
SHLQ $8, BX, CX
SHLQ $8, BX
SHLQ $0x08, BX, CX
SHLQ $0x08, BX
MOVB -1(SI), R13
XORQ R13, BX
DECQ SI
DECQ R15
JNZ flush_buffer
ADDQ BX, R8
ADCQ CX, R9
ADCQ $0, R10
MOVQ $16, R15
ADCQ $0x00, R10
MOVQ $0x00000010, R15
JMP multiply
done:
MOVQ R8, 0(DI)
MOVQ R8, (DI)
MOVQ R9, 8(DI)
MOVQ R10, 16(DI)
RET
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build gc && !purego
//go:build gc && !purego && (amd64 || loong64 || ppc64 || ppc64le)
package poly1305
+123
View File
@@ -0,0 +1,123 @@
// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build gc && !purego
// func update(state *macState, msg []byte)
TEXT ·update(SB), $0-32
MOVV state+0(FP), R4
MOVV msg_base+8(FP), R5
MOVV msg_len+16(FP), R6
MOVV $0x10, R7
MOVV (R4), R8 // h0
MOVV 8(R4), R9 // h1
MOVV 16(R4), R10 // h2
MOVV 24(R4), R11 // r0
MOVV 32(R4), R12 // r1
BLT R6, R7, bytes_between_0_and_15
loop:
MOVV (R5), R14 // msg[0:8]
MOVV 8(R5), R16 // msg[8:16]
ADDV R14, R8, R8 // h0 (x1 + y1 = z1', if z1' < x1 then z1' overflow)
ADDV R16, R9, R27
SGTU R14, R8, R24 // h0.carry
SGTU R9, R27, R28
ADDV R27, R24, R9 // h1
SGTU R27, R9, R24
OR R24, R28, R24 // h1.carry
ADDV $0x01, R24, R24
ADDV R10, R24, R10 // h2
ADDV $16, R5, R5 // msg = msg[16:]
multiply:
MULV R8, R11, R14 // h0r0.lo
MULHVU R8, R11, R15 // h0r0.hi
MULV R9, R11, R13 // h1r0.lo
MULHVU R9, R11, R16 // h1r0.hi
ADDV R13, R15, R15
SGTU R13, R15, R24
ADDV R24, R16, R16
MULV R10, R11, R25
ADDV R16, R25, R25
MULV R8, R12, R13 // h0r1.lo
MULHVU R8, R12, R16 // h0r1.hi
ADDV R13, R15, R15
SGTU R13, R15, R24
ADDV R24, R16, R16
MOVV R16, R8
MULV R10, R12, R26 // h2r1
MULV R9, R12, R13 // h1r1.lo
MULHVU R9, R12, R16 // h1r1.hi
ADDV R13, R25, R25
ADDV R16, R26, R27
SGTU R13, R25, R24
ADDV R27, R24, R26
ADDV R8, R25, R25
SGTU R8, R25, R24
ADDV R24, R26, R26
AND $3, R25, R10
AND $-4, R25, R17
ADDV R17, R14, R8
ADDV R26, R15, R27
SGTU R17, R8, R24
SGTU R26, R27, R28
ADDV R27, R24, R9
SGTU R27, R9, R24
OR R24, R28, R24
ADDV R24, R10, R10
SLLV $62, R26, R27
SRLV $2, R25, R28
SRLV $2, R26, R26
OR R27, R28, R25
ADDV R25, R8, R8
ADDV R26, R9, R27
SGTU R25, R8, R24
SGTU R26, R27, R28
ADDV R27, R24, R9
SGTU R27, R9, R24
OR R24, R28, R24
ADDV R24, R10, R10
SUBV $16, R6, R6
BGE R6, R7, loop
bytes_between_0_and_15:
BEQ R6, R0, done
MOVV $1, R14
XOR R15, R15
ADDV R6, R5, R5
flush_buffer:
MOVBU -1(R5), R25
SRLV $56, R14, R24
SLLV $8, R15, R28
SLLV $8, R14, R14
OR R24, R28, R15
XOR R25, R14, R14
SUBV $1, R6, R6
SUBV $1, R5, R5
BNE R6, R0, flush_buffer
ADDV R14, R8, R8
SGTU R14, R8, R24
ADDV R15, R9, R27
SGTU R15, R27, R28
ADDV R27, R24, R9
SGTU R27, R9, R24
OR R24, R28, R24
ADDV R10, R24, R10
MOVV $16, R6
JMP multiply
done:
MOVV R8, (R4)
MOVV R9, 8(R4)
MOVV R10, 16(R4)
RET
-47
View File
@@ -1,47 +0,0 @@
// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build gc && !purego
package poly1305
//go:noescape
func update(state *macState, msg []byte)
// mac is a wrapper for macGeneric that redirects calls that would have gone to
// updateGeneric to update.
//
// Its Write and Sum methods are otherwise identical to the macGeneric ones, but
// using function pointers would carry a major performance cost.
type mac struct{ macGeneric }
func (h *mac) Write(p []byte) (int, error) {
nn := len(p)
if h.offset > 0 {
n := copy(h.buffer[h.offset:], p)
if h.offset+n < TagSize {
h.offset += n
return nn, nil
}
p = p[n:]
h.offset = 0
update(&h.macState, h.buffer[:])
}
if n := len(p) - (len(p) % TagSize); n > 0 {
update(&h.macState, p[:n])
p = p[n:]
}
if len(p) > 0 {
h.offset += copy(h.buffer[h.offset:], p)
}
return nn, nil
}
func (h *mac) Sum(out *[16]byte) {
state := h.macState
if h.offset > 0 {
update(&state, h.buffer[:h.offset])
}
finalize(out, &state.h, &state.s)
}
@@ -2,15 +2,25 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build gc && !purego
//go:build gc && !purego && (ppc64 || ppc64le)
#include "textflag.h"
// This was ported from the amd64 implementation.
#ifdef GOARCH_ppc64le
#define LE_MOVD MOVD
#define LE_MOVWZ MOVWZ
#define LE_MOVHZ MOVHZ
#else
#define LE_MOVD MOVDBR
#define LE_MOVWZ MOVWBR
#define LE_MOVHZ MOVHBR
#endif
#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \
MOVD (msg), t0; \
MOVD 8(msg), t1; \
LE_MOVD (msg)( R0), t0; \
LE_MOVD (msg)(R24), t1; \
MOVD $1, t2; \
ADDC t0, h0, h0; \
ADDE t1, h1, h1; \
@@ -50,10 +60,6 @@
ADDE t3, h1, h1; \
ADDZE h2
DATA ·poly1305Mask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF
DATA ·poly1305Mask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC
GLOBL ·poly1305Mask<>(SB), RODATA, $16
// func update(state *[7]uint64, msg []byte)
TEXT ·update(SB), $0-32
MOVD state+0(FP), R3
@@ -66,6 +72,8 @@ TEXT ·update(SB), $0-32
MOVD 24(R3), R11 // r0
MOVD 32(R3), R12 // r1
MOVD $8, R24
CMP R5, $16
BLT bytes_between_0_and_15
@@ -94,7 +102,7 @@ flush_buffer:
// Greater than 8 -- load the rightmost remaining bytes in msg
// and put into R17 (h1)
MOVD (R4)(R21), R17
LE_MOVD (R4)(R21), R17
MOVD $16, R22
// Find the offset to those bytes
@@ -118,7 +126,7 @@ just1:
BLT less8
// Exactly 8
MOVD (R4), R16
LE_MOVD (R4), R16
CMP R17, $0
@@ -133,7 +141,7 @@ less8:
MOVD $0, R22 // shift count
CMP R5, $4
BLT less4
MOVWZ (R4), R16
LE_MOVWZ (R4), R16
ADD $4, R4
ADD $-4, R5
MOVD $32, R22
@@ -141,7 +149,7 @@ less8:
less4:
CMP R5, $2
BLT less2
MOVHZ (R4), R21
LE_MOVHZ (R4), R21
SLD R22, R21, R21
OR R16, R21, R16
ADD $16, R22
+1 -13
View File
@@ -123,24 +123,12 @@ func TestSigning(t *testing.T) {
}
}
// We use this to make test keys, so that they aren't all the same.
type quickRand byte
func (qr *quickRand) Read(p []byte) (int, error) {
for i := range p {
p[i] = byte(*qr)
}
*qr++
return len(p), nil
}
func TestMultiSign(t *testing.T) {
if testing.Short() {
t.Skip("skipping long test in -short mode")
}
zero := quickRand(0)
config := packet.Config{Rand: &zero}
var config packet.Config
for nKeys := 0; nKeys < 4; nKeys++ {
nextTest:
+1 -1
View File
@@ -26,7 +26,7 @@ type pbeCipher interface {
create(key []byte) (cipher.Block, error)
// deriveKey returns a key derived from the given password and salt.
deriveKey(salt, password []byte, iterations int) []byte
// deriveKey returns an IV derived from the given password and salt.
// deriveIV returns an IV derived from the given password and salt.
deriveIV(salt, password []byte, iterations int) []byte
}
+14
View File
@@ -0,0 +1,14 @@
module salsa20/salsa/_asm
go 1.23
require (
github.com/mmcloughlin/avo v0.6.0
golang.org/x/crypto v0.33.0
)
require (
golang.org/x/mod v0.20.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/tools v0.24.0 // indirect
)
+10
View File
@@ -0,0 +1,10 @@
github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY=
github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+932
View File
@@ -0,0 +1,932 @@
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This code was translated into a form compatible with 6a from the public
// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html
package main
import (
. "github.com/mmcloughlin/avo/build"
"github.com/mmcloughlin/avo/ir"
. "github.com/mmcloughlin/avo/operand"
. "github.com/mmcloughlin/avo/reg"
_ "golang.org/x/crypto/salsa20/salsa"
)
//go:generate go run . -out ../salsa20_amd64.s -pkg salsa
func main() {
Package("golang.org/x/crypto/salsa20/salsa")
ConstraintExpr("amd64,!purego,gc")
salsa2020XORKeyStream()
Generate()
}
func salsa2020XORKeyStream() {
Implement("salsa2020XORKeyStream")
Attributes(0)
AllocLocal(456) // frame = 424 + 32 byte alignment
Comment("This needs up to 64 bytes at 360(R12); hence the non-obvious frame size.")
Load(Param("out"), RDI)
Load(Param("in"), RSI)
Load(Param("n"), RDX)
Load(Param("nonce"), RCX)
Load(Param("key"), R8)
MOVQ(RSP, R12)
ADDQ(Imm(31), R12)
ANDQ(I32(^31), R12)
MOVQ(RDX, R9)
MOVQ(RCX, RDX)
MOVQ(R8, R10)
CMPQ(R9, Imm(0))
JBE(LabelRef("DONE"))
START()
BYTESATLEAST256()
MAINLOOP1()
BYTESBETWEEN1AND255()
NOCOPY()
MAINLOOP2()
Label("BYTESATLEAST64")
Label("DONE")
RET()
Label("BYTESATLEAST65")
SUBQ(Imm(64), R9)
ADDQ(Imm(64), RDI)
ADDQ(Imm(64), RSI)
JMP(LabelRef("BYTESBETWEEN1AND255"))
}
func START() {
Label("START")
MOVL(Mem{Base: R10}.Offset(20), ECX)
MOVL(Mem{Base: R10}.Offset(0), R8L)
MOVL(Mem{Base: EDX}.Offset(0), EAX)
MOVL(Mem{Base: R10}.Offset(16), R11L)
MOVL(ECX, Mem{Base: R12}.Offset(0))
MOVL(R8L, Mem{Base: R12}.Offset(4))
MOVL(EAX, Mem{Base: R12}.Offset(8))
MOVL(R11L, Mem{Base: R12}.Offset(12))
MOVL(Mem{Base: EDX}.Offset(8), ECX)
MOVL(Mem{Base: R10}.Offset(24), R8L)
MOVL(Mem{Base: R10}.Offset(4), EAX)
MOVL(Mem{Base: EDX}.Offset(4), R11L)
MOVL(ECX, Mem{Base: R12}.Offset(16))
MOVL(R8L, Mem{Base: R12}.Offset(20))
MOVL(EAX, Mem{Base: R12}.Offset(24))
MOVL(R11L, Mem{Base: R12}.Offset(28))
MOVL(Mem{Base: EDX}.Offset(12), ECX)
MOVL(Mem{Base: R10}.Offset(12), EDX)
MOVL(Mem{Base: R10}.Offset(28), R8L)
MOVL(Mem{Base: R10}.Offset(8), EAX)
MOVL(EDX, Mem{Base: R12}.Offset(32))
MOVL(ECX, Mem{Base: R12}.Offset(36))
MOVL(R8L, Mem{Base: R12}.Offset(40))
MOVL(EAX, Mem{Base: R12}.Offset(44))
MOVQ(Imm(1634760805), RDX)
MOVQ(Imm(857760878), RCX)
MOVQ(Imm(2036477234), R8)
MOVQ(Imm(1797285236), RAX)
MOVL(EDX, Mem{Base: R12}.Offset(48))
MOVL(ECX, Mem{Base: R12}.Offset(52))
MOVL(R8L, Mem{Base: R12}.Offset(56))
MOVL(EAX, Mem{Base: R12}.Offset(60))
CMPQ(R9, U32(256))
JB(LabelRef("BYTESBETWEEN1AND255"))
MOVOA(Mem{Base: R12}.Offset(48), X0)
PSHUFL(Imm(0x55), X0, X1)
PSHUFL(Imm(0xAA), X0, X2)
PSHUFL(Imm(0xFF), X0, X3)
PSHUFL(Imm(0x00), X0, X0)
MOVOA(X1, Mem{Base: R12}.Offset(64))
MOVOA(X2, Mem{Base: R12}.Offset(80))
MOVOA(X3, Mem{Base: R12}.Offset(96))
MOVOA(X0, Mem{Base: R12}.Offset(112))
MOVOA(Mem{Base: R12}.Offset(0), X0)
PSHUFL(Imm(0xAA), X0, X1)
PSHUFL(Imm(0xFF), X0, X2)
PSHUFL(Imm(0x00), X0, X3)
PSHUFL(Imm(0x55), X0, X0)
MOVOA(X1, Mem{Base: R12}.Offset(128))
MOVOA(X2, Mem{Base: R12}.Offset(144))
MOVOA(X3, Mem{Base: R12}.Offset(160))
MOVOA(X0, Mem{Base: R12}.Offset(176))
MOVOA(Mem{Base: R12}.Offset(16), X0)
PSHUFL(Imm(0xFF), X0, X1)
PSHUFL(Imm(0x55), X0, X2)
PSHUFL(Imm(0xAA), X0, X0)
MOVOA(X1, Mem{Base: R12}.Offset(192))
MOVOA(X2, Mem{Base: R12}.Offset(208))
MOVOA(X0, Mem{Base: R12}.Offset(224))
MOVOA(Mem{Base: R12}.Offset(32), X0)
PSHUFL(Imm(0x00), X0, X1)
PSHUFL(Imm(0xAA), X0, X2)
PSHUFL(Imm(0xFF), X0, X0)
MOVOA(X1, Mem{Base: R12}.Offset(240))
MOVOA(X2, Mem{Base: R12}.Offset(256))
MOVOA(X0, Mem{Base: R12}.Offset(272))
}
func BYTESATLEAST256() {
Label("BYTESATLEAST256")
MOVL(Mem{Base: R12}.Offset(16), EDX)
MOVL(Mem{Base: R12}.Offset(36), ECX)
MOVL(EDX, Mem{Base: R12}.Offset(288))
MOVL(ECX, Mem{Base: R12}.Offset(304))
SHLQ(Imm(32), RCX)
ADDQ(RCX, RDX)
ADDQ(Imm(1), RDX)
MOVQ(RDX, RCX)
SHRQ(Imm(32), RCX)
MOVL(EDX, Mem{Base: R12}.Offset(292))
MOVL(ECX, Mem{Base: R12}.Offset(308))
ADDQ(Imm(1), RDX)
MOVQ(RDX, RCX)
SHRQ(Imm(32), RCX)
MOVL(EDX, Mem{Base: R12}.Offset(296))
MOVL(ECX, Mem{Base: R12}.Offset(312))
ADDQ(Imm(1), RDX)
MOVQ(RDX, RCX)
SHRQ(Imm(32), RCX)
MOVL(EDX, Mem{Base: R12}.Offset(300))
MOVL(ECX, Mem{Base: R12}.Offset(316))
ADDQ(Imm(1), RDX)
MOVQ(RDX, RCX)
SHRQ(Imm(32), RCX)
MOVL(EDX, Mem{Base: R12}.Offset(16))
MOVL(ECX, Mem{Base: R12}.Offset(36))
MOVQ(R9, Mem{Base: R12}.Offset(352))
MOVQ(U32(20), RDX)
MOVOA(Mem{Base: R12}.Offset(64), X0)
MOVOA(Mem{Base: R12}.Offset(80), X1)
MOVOA(Mem{Base: R12}.Offset(96), X2)
MOVOA(Mem{Base: R12}.Offset(256), X3)
MOVOA(Mem{Base: R12}.Offset(272), X4)
MOVOA(Mem{Base: R12}.Offset(128), X5)
MOVOA(Mem{Base: R12}.Offset(144), X6)
MOVOA(Mem{Base: R12}.Offset(176), X7)
MOVOA(Mem{Base: R12}.Offset(192), X8)
MOVOA(Mem{Base: R12}.Offset(208), X9)
MOVOA(Mem{Base: R12}.Offset(224), X10)
MOVOA(Mem{Base: R12}.Offset(304), X11)
MOVOA(Mem{Base: R12}.Offset(112), X12)
MOVOA(Mem{Base: R12}.Offset(160), X13)
MOVOA(Mem{Base: R12}.Offset(240), X14)
MOVOA(Mem{Base: R12}.Offset(288), X15)
}
func MAINLOOP1() {
Label("MAINLOOP1")
MOVOA(X1, Mem{Base: R12}.Offset(320))
MOVOA(X2, Mem{Base: R12}.Offset(336))
MOVOA(X13, X1)
PADDL(X12, X1)
MOVOA(X1, X2)
PSLLL(Imm(7), X1)
PXOR(X1, X14)
PSRLL(Imm(25), X2)
PXOR(X2, X14)
MOVOA(X7, X1)
PADDL(X0, X1)
MOVOA(X1, X2)
PSLLL(Imm(7), X1)
PXOR(X1, X11)
PSRLL(Imm(25), X2)
PXOR(X2, X11)
MOVOA(X12, X1)
PADDL(X14, X1)
MOVOA(X1, X2)
PSLLL(Imm(9), X1)
PXOR(X1, X15)
PSRLL(Imm(23), X2)
PXOR(X2, X15)
MOVOA(X0, X1)
PADDL(X11, X1)
MOVOA(X1, X2)
PSLLL(Imm(9), X1)
PXOR(X1, X9)
PSRLL(Imm(23), X2)
PXOR(X2, X9)
MOVOA(X14, X1)
PADDL(X15, X1)
MOVOA(X1, X2)
PSLLL(Imm(13), X1)
PXOR(X1, X13)
PSRLL(Imm(19), X2)
PXOR(X2, X13)
MOVOA(X11, X1)
PADDL(X9, X1)
MOVOA(X1, X2)
PSLLL(Imm(13), X1)
PXOR(X1, X7)
PSRLL(Imm(19), X2)
PXOR(X2, X7)
MOVOA(X15, X1)
PADDL(X13, X1)
MOVOA(X1, X2)
PSLLL(Imm(18), X1)
PXOR(X1, X12)
PSRLL(Imm(14), X2)
PXOR(X2, X12)
MOVOA(Mem{Base: R12}.Offset(320), X1)
MOVOA(X12, Mem{Base: R12}.Offset(320))
MOVOA(X9, X2)
PADDL(X7, X2)
MOVOA(X2, X12)
PSLLL(Imm(18), X2)
PXOR(X2, X0)
PSRLL(Imm(14), X12)
PXOR(X12, X0)
MOVOA(X5, X2)
PADDL(X1, X2)
MOVOA(X2, X12)
PSLLL(Imm(7), X2)
PXOR(X2, X3)
PSRLL(Imm(25), X12)
PXOR(X12, X3)
MOVOA(Mem{Base: R12}.Offset(336), X2)
MOVOA(X0, Mem{Base: R12}.Offset(336))
MOVOA(X6, X0)
PADDL(X2, X0)
MOVOA(X0, X12)
PSLLL(Imm(7), X0)
PXOR(X0, X4)
PSRLL(Imm(25), X12)
PXOR(X12, X4)
MOVOA(X1, X0)
PADDL(X3, X0)
MOVOA(X0, X12)
PSLLL(Imm(9), X0)
PXOR(X0, X10)
PSRLL(Imm(23), X12)
PXOR(X12, X10)
MOVOA(X2, X0)
PADDL(X4, X0)
MOVOA(X0, X12)
PSLLL(Imm(9), X0)
PXOR(X0, X8)
PSRLL(Imm(23), X12)
PXOR(X12, X8)
MOVOA(X3, X0)
PADDL(X10, X0)
MOVOA(X0, X12)
PSLLL(Imm(13), X0)
PXOR(X0, X5)
PSRLL(Imm(19), X12)
PXOR(X12, X5)
MOVOA(X4, X0)
PADDL(X8, X0)
MOVOA(X0, X12)
PSLLL(Imm(13), X0)
PXOR(X0, X6)
PSRLL(Imm(19), X12)
PXOR(X12, X6)
MOVOA(X10, X0)
PADDL(X5, X0)
MOVOA(X0, X12)
PSLLL(Imm(18), X0)
PXOR(X0, X1)
PSRLL(Imm(14), X12)
PXOR(X12, X1)
MOVOA(Mem{Base: R12}.Offset(320), X0)
MOVOA(X1, Mem{Base: R12}.Offset(320))
MOVOA(X4, X1)
PADDL(X0, X1)
MOVOA(X1, X12)
PSLLL(Imm(7), X1)
PXOR(X1, X7)
PSRLL(Imm(25), X12)
PXOR(X12, X7)
MOVOA(X8, X1)
PADDL(X6, X1)
MOVOA(X1, X12)
PSLLL(Imm(18), X1)
PXOR(X1, X2)
PSRLL(Imm(14), X12)
PXOR(X12, X2)
MOVOA(Mem{Base: R12}.Offset(336), X12)
MOVOA(X2, Mem{Base: R12}.Offset(336))
MOVOA(X14, X1)
PADDL(X12, X1)
MOVOA(X1, X2)
PSLLL(Imm(7), X1)
PXOR(X1, X5)
PSRLL(Imm(25), X2)
PXOR(X2, X5)
MOVOA(X0, X1)
PADDL(X7, X1)
MOVOA(X1, X2)
PSLLL(Imm(9), X1)
PXOR(X1, X10)
PSRLL(Imm(23), X2)
PXOR(X2, X10)
MOVOA(X12, X1)
PADDL(X5, X1)
MOVOA(X1, X2)
PSLLL(Imm(9), X1)
PXOR(X1, X8)
PSRLL(Imm(23), X2)
PXOR(X2, X8)
MOVOA(X7, X1)
PADDL(X10, X1)
MOVOA(X1, X2)
PSLLL(Imm(13), X1)
PXOR(X1, X4)
PSRLL(Imm(19), X2)
PXOR(X2, X4)
MOVOA(X5, X1)
PADDL(X8, X1)
MOVOA(X1, X2)
PSLLL(Imm(13), X1)
PXOR(X1, X14)
PSRLL(Imm(19), X2)
PXOR(X2, X14)
MOVOA(X10, X1)
PADDL(X4, X1)
MOVOA(X1, X2)
PSLLL(Imm(18), X1)
PXOR(X1, X0)
PSRLL(Imm(14), X2)
PXOR(X2, X0)
MOVOA(Mem{Base: R12}.Offset(320), X1)
MOVOA(X0, Mem{Base: R12}.Offset(320))
MOVOA(X8, X0)
PADDL(X14, X0)
MOVOA(X0, X2)
PSLLL(Imm(18), X0)
PXOR(X0, X12)
PSRLL(Imm(14), X2)
PXOR(X2, X12)
MOVOA(X11, X0)
PADDL(X1, X0)
MOVOA(X0, X2)
PSLLL(Imm(7), X0)
PXOR(X0, X6)
PSRLL(Imm(25), X2)
PXOR(X2, X6)
MOVOA(Mem{Base: R12}.Offset(336), X2)
MOVOA(X12, Mem{Base: R12}.Offset(336))
MOVOA(X3, X0)
PADDL(X2, X0)
MOVOA(X0, X12)
PSLLL(Imm(7), X0)
PXOR(X0, X13)
PSRLL(Imm(25), X12)
PXOR(X12, X13)
MOVOA(X1, X0)
PADDL(X6, X0)
MOVOA(X0, X12)
PSLLL(Imm(9), X0)
PXOR(X0, X15)
PSRLL(Imm(23), X12)
PXOR(X12, X15)
MOVOA(X2, X0)
PADDL(X13, X0)
MOVOA(X0, X12)
PSLLL(Imm(9), X0)
PXOR(X0, X9)
PSRLL(Imm(23), X12)
PXOR(X12, X9)
MOVOA(X6, X0)
PADDL(X15, X0)
MOVOA(X0, X12)
PSLLL(Imm(13), X0)
PXOR(X0, X11)
PSRLL(Imm(19), X12)
PXOR(X12, X11)
MOVOA(X13, X0)
PADDL(X9, X0)
MOVOA(X0, X12)
PSLLL(Imm(13), X0)
PXOR(X0, X3)
PSRLL(Imm(19), X12)
PXOR(X12, X3)
MOVOA(X15, X0)
PADDL(X11, X0)
MOVOA(X0, X12)
PSLLL(Imm(18), X0)
PXOR(X0, X1)
PSRLL(Imm(14), X12)
PXOR(X12, X1)
MOVOA(X9, X0)
PADDL(X3, X0)
MOVOA(X0, X12)
PSLLL(Imm(18), X0)
PXOR(X0, X2)
PSRLL(Imm(14), X12)
PXOR(X12, X2)
MOVOA(Mem{Base: R12}.Offset(320), X12)
MOVOA(Mem{Base: R12}.Offset(336), X0)
SUBQ(Imm(2), RDX)
JA(LabelRef("MAINLOOP1"))
PADDL(Mem{Base: R12}.Offset(112), X12)
PADDL(Mem{Base: R12}.Offset(176), X7)
PADDL(Mem{Base: R12}.Offset(224), X10)
PADDL(Mem{Base: R12}.Offset(272), X4)
MOVD(X12, EDX)
MOVD(X7, ECX)
MOVD(X10, R8)
MOVD(X4, R9)
PSHUFL(Imm(0x39), X12, X12)
PSHUFL(Imm(0x39), X7, X7)
PSHUFL(Imm(0x39), X10, X10)
PSHUFL(Imm(0x39), X4, X4)
XORL(Mem{Base: SI}.Offset(0), EDX)
XORL(Mem{Base: SI}.Offset(4), ECX)
XORL(Mem{Base: SI}.Offset(8), R8L)
XORL(Mem{Base: SI}.Offset(12), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(0))
MOVL(ECX, Mem{Base: DI}.Offset(4))
MOVL(R8L, Mem{Base: DI}.Offset(8))
MOVL(R9L, Mem{Base: DI}.Offset(12))
MOVD(X12, EDX)
MOVD(X7, ECX)
MOVD(X10, R8)
MOVD(X4, R9)
PSHUFL(Imm(0x39), X12, X12)
PSHUFL(Imm(0x39), X7, X7)
PSHUFL(Imm(0x39), X10, X10)
PSHUFL(Imm(0x39), X4, X4)
XORL(Mem{Base: SI}.Offset(64), EDX)
XORL(Mem{Base: SI}.Offset(68), ECX)
XORL(Mem{Base: SI}.Offset(72), R8L)
XORL(Mem{Base: SI}.Offset(76), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(64))
MOVL(ECX, Mem{Base: DI}.Offset(68))
MOVL(R8L, Mem{Base: DI}.Offset(72))
MOVL(R9L, Mem{Base: DI}.Offset(76))
MOVD(X12, EDX)
MOVD(X7, ECX)
MOVD(X10, R8)
MOVD(X4, R9)
PSHUFL(Imm(0x39), X12, X12)
PSHUFL(Imm(0x39), X7, X7)
PSHUFL(Imm(0x39), X10, X10)
PSHUFL(Imm(0x39), X4, X4)
XORL(Mem{Base: SI}.Offset(128), EDX)
XORL(Mem{Base: SI}.Offset(132), ECX)
XORL(Mem{Base: SI}.Offset(136), R8L)
XORL(Mem{Base: SI}.Offset(140), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(128))
MOVL(ECX, Mem{Base: DI}.Offset(132))
MOVL(R8L, Mem{Base: DI}.Offset(136))
MOVL(R9L, Mem{Base: DI}.Offset(140))
MOVD(X12, EDX)
MOVD(X7, ECX)
MOVD(X10, R8)
MOVD(X4, R9)
XORL(Mem{Base: SI}.Offset(192), EDX)
XORL(Mem{Base: SI}.Offset(196), ECX)
XORL(Mem{Base: SI}.Offset(200), R8L)
XORL(Mem{Base: SI}.Offset(204), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(192))
MOVL(ECX, Mem{Base: DI}.Offset(196))
MOVL(R8L, Mem{Base: DI}.Offset(200))
MOVL(R9L, Mem{Base: DI}.Offset(204))
PADDL(Mem{Base: R12}.Offset(240), X14)
PADDL(Mem{Base: R12}.Offset(64), X0)
PADDL(Mem{Base: R12}.Offset(128), X5)
PADDL(Mem{Base: R12}.Offset(192), X8)
MOVD(X14, EDX)
MOVD(X0, ECX)
MOVD(X5, R8)
MOVD(X8, R9)
PSHUFL(Imm(0x39), X14, X14)
PSHUFL(Imm(0x39), X0, X0)
PSHUFL(Imm(0x39), X5, X5)
PSHUFL(Imm(0x39), X8, X8)
XORL(Mem{Base: SI}.Offset(16), EDX)
XORL(Mem{Base: SI}.Offset(20), ECX)
XORL(Mem{Base: SI}.Offset(24), R8L)
XORL(Mem{Base: SI}.Offset(28), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(16))
MOVL(ECX, Mem{Base: DI}.Offset(20))
MOVL(R8L, Mem{Base: DI}.Offset(24))
MOVL(R9L, Mem{Base: DI}.Offset(28))
MOVD(X14, EDX)
MOVD(X0, ECX)
MOVD(X5, R8)
MOVD(X8, R9)
PSHUFL(Imm(0x39), X14, X14)
PSHUFL(Imm(0x39), X0, X0)
PSHUFL(Imm(0x39), X5, X5)
PSHUFL(Imm(0x39), X8, X8)
XORL(Mem{Base: SI}.Offset(80), EDX)
XORL(Mem{Base: SI}.Offset(84), ECX)
XORL(Mem{Base: SI}.Offset(88), R8L)
XORL(Mem{Base: SI}.Offset(92), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(80))
MOVL(ECX, Mem{Base: DI}.Offset(84))
MOVL(R8L, Mem{Base: DI}.Offset(88))
MOVL(R9L, Mem{Base: DI}.Offset(92))
MOVD(X14, EDX)
MOVD(X0, ECX)
MOVD(X5, R8)
MOVD(X8, R9)
PSHUFL(Imm(0x39), X14, X14)
PSHUFL(Imm(0x39), X0, X0)
PSHUFL(Imm(0x39), X5, X5)
PSHUFL(Imm(0x39), X8, X8)
XORL(Mem{Base: SI}.Offset(144), EDX)
XORL(Mem{Base: SI}.Offset(148), ECX)
XORL(Mem{Base: SI}.Offset(152), R8L)
XORL(Mem{Base: SI}.Offset(156), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(144))
MOVL(ECX, Mem{Base: DI}.Offset(148))
MOVL(R8L, Mem{Base: DI}.Offset(152))
MOVL(R9L, Mem{Base: DI}.Offset(156))
MOVD(X14, EDX)
MOVD(X0, ECX)
MOVD(X5, R8)
MOVD(X8, R9)
XORL(Mem{Base: SI}.Offset(208), EDX)
XORL(Mem{Base: SI}.Offset(212), ECX)
XORL(Mem{Base: SI}.Offset(216), R8L)
XORL(Mem{Base: SI}.Offset(220), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(208))
MOVL(ECX, Mem{Base: DI}.Offset(212))
MOVL(R8L, Mem{Base: DI}.Offset(216))
MOVL(R9L, Mem{Base: DI}.Offset(220))
PADDL(Mem{Base: R12}.Offset(288), X15)
PADDL(Mem{Base: R12}.Offset(304), X11)
PADDL(Mem{Base: R12}.Offset(80), X1)
PADDL(Mem{Base: R12}.Offset(144), X6)
MOVD(X15, EDX)
MOVD(X11, ECX)
MOVD(X1, R8)
MOVD(X6, R9)
PSHUFL(Imm(0x39), X15, X15)
PSHUFL(Imm(0x39), X11, X11)
PSHUFL(Imm(0x39), X1, X1)
PSHUFL(Imm(0x39), X6, X6)
XORL(Mem{Base: SI}.Offset(32), EDX)
XORL(Mem{Base: SI}.Offset(36), ECX)
XORL(Mem{Base: SI}.Offset(40), R8L)
XORL(Mem{Base: SI}.Offset(44), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(32))
MOVL(ECX, Mem{Base: DI}.Offset(36))
MOVL(R8L, Mem{Base: DI}.Offset(40))
MOVL(R9L, Mem{Base: DI}.Offset(44))
MOVD(X15, EDX)
MOVD(X11, ECX)
MOVD(X1, R8)
MOVD(X6, R9)
PSHUFL(Imm(0x39), X15, X15)
PSHUFL(Imm(0x39), X11, X11)
PSHUFL(Imm(0x39), X1, X1)
PSHUFL(Imm(0x39), X6, X6)
XORL(Mem{Base: SI}.Offset(96), EDX)
XORL(Mem{Base: SI}.Offset(100), ECX)
XORL(Mem{Base: SI}.Offset(104), R8L)
XORL(Mem{Base: SI}.Offset(108), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(96))
MOVL(ECX, Mem{Base: DI}.Offset(100))
MOVL(R8L, Mem{Base: DI}.Offset(104))
MOVL(R9L, Mem{Base: DI}.Offset(108))
MOVD(X15, EDX)
MOVD(X11, ECX)
MOVD(X1, R8)
MOVD(X6, R9)
PSHUFL(Imm(0x39), X15, X15)
PSHUFL(Imm(0x39), X11, X11)
PSHUFL(Imm(0x39), X1, X1)
PSHUFL(Imm(0x39), X6, X6)
XORL(Mem{Base: SI}.Offset(160), EDX)
XORL(Mem{Base: SI}.Offset(164), ECX)
XORL(Mem{Base: SI}.Offset(168), R8L)
XORL(Mem{Base: SI}.Offset(172), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(160))
MOVL(ECX, Mem{Base: DI}.Offset(164))
MOVL(R8L, Mem{Base: DI}.Offset(168))
MOVL(R9L, Mem{Base: DI}.Offset(172))
MOVD(X15, EDX)
MOVD(X11, ECX)
MOVD(X1, R8)
MOVD(X6, R9)
XORL(Mem{Base: SI}.Offset(224), EDX)
XORL(Mem{Base: SI}.Offset(228), ECX)
XORL(Mem{Base: SI}.Offset(232), R8L)
XORL(Mem{Base: SI}.Offset(236), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(224))
MOVL(ECX, Mem{Base: DI}.Offset(228))
MOVL(R8L, Mem{Base: DI}.Offset(232))
MOVL(R9L, Mem{Base: DI}.Offset(236))
PADDL(Mem{Base: R12}.Offset(160), X13)
PADDL(Mem{Base: R12}.Offset(208), X9)
PADDL(Mem{Base: R12}.Offset(256), X3)
PADDL(Mem{Base: R12}.Offset(96), X2)
MOVD(X13, EDX)
MOVD(X9, ECX)
MOVD(X3, R8)
MOVD(X2, R9)
PSHUFL(Imm(0x39), X13, X13)
PSHUFL(Imm(0x39), X9, X9)
PSHUFL(Imm(0x39), X3, X3)
PSHUFL(Imm(0x39), X2, X2)
XORL(Mem{Base: SI}.Offset(48), EDX)
XORL(Mem{Base: SI}.Offset(52), ECX)
XORL(Mem{Base: SI}.Offset(56), R8L)
XORL(Mem{Base: SI}.Offset(60), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(48))
MOVL(ECX, Mem{Base: DI}.Offset(52))
MOVL(R8L, Mem{Base: DI}.Offset(56))
MOVL(R9L, Mem{Base: DI}.Offset(60))
MOVD(X13, EDX)
MOVD(X9, ECX)
MOVD(X3, R8)
MOVD(X2, R9)
PSHUFL(Imm(0x39), X13, X13)
PSHUFL(Imm(0x39), X9, X9)
PSHUFL(Imm(0x39), X3, X3)
PSHUFL(Imm(0x39), X2, X2)
XORL(Mem{Base: SI}.Offset(112), EDX)
XORL(Mem{Base: SI}.Offset(116), ECX)
XORL(Mem{Base: SI}.Offset(120), R8L)
XORL(Mem{Base: SI}.Offset(124), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(112))
MOVL(ECX, Mem{Base: DI}.Offset(116))
MOVL(R8L, Mem{Base: DI}.Offset(120))
MOVL(R9L, Mem{Base: DI}.Offset(124))
MOVD(X13, EDX)
MOVD(X9, ECX)
MOVD(X3, R8)
MOVD(X2, R9)
PSHUFL(Imm(0x39), X13, X13)
PSHUFL(Imm(0x39), X9, X9)
PSHUFL(Imm(0x39), X3, X3)
PSHUFL(Imm(0x39), X2, X2)
XORL(Mem{Base: SI}.Offset(176), EDX)
XORL(Mem{Base: SI}.Offset(180), ECX)
XORL(Mem{Base: SI}.Offset(184), R8L)
XORL(Mem{Base: SI}.Offset(188), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(176))
MOVL(ECX, Mem{Base: DI}.Offset(180))
MOVL(R8L, Mem{Base: DI}.Offset(184))
MOVL(R9L, Mem{Base: DI}.Offset(188))
MOVD(X13, EDX)
MOVD(X9, ECX)
MOVD(X3, R8)
MOVD(X2, R9)
XORL(Mem{Base: SI}.Offset(240), EDX)
XORL(Mem{Base: SI}.Offset(244), ECX)
XORL(Mem{Base: SI}.Offset(248), R8L)
XORL(Mem{Base: SI}.Offset(252), R9L)
MOVL(EDX, Mem{Base: DI}.Offset(240))
MOVL(ECX, Mem{Base: DI}.Offset(244))
MOVL(R8L, Mem{Base: DI}.Offset(248))
MOVL(R9L, Mem{Base: DI}.Offset(252))
MOVQ(Mem{Base: R12}.Offset(352), R9)
SUBQ(U32(256), R9)
ADDQ(U32(256), RSI)
ADDQ(U32(256), RDI)
CMPQ(R9, U32(256))
JAE(LabelRef("BYTESATLEAST256"))
CMPQ(R9, Imm(0))
JBE(LabelRef("DONE"))
}
func BYTESBETWEEN1AND255() {
Label("BYTESBETWEEN1AND255")
CMPQ(R9, Imm(64))
JAE(LabelRef("NOCOPY"))
MOVQ(RDI, RDX)
LEAQ(Mem{Base: R12}.Offset(360), RDI)
MOVQ(R9, RCX)
// Hack to get Avo to emit:
// REP; MOVSB
Instruction(&ir.Instruction{Opcode: "REP; MOVSB"})
LEAQ(Mem{Base: R12}.Offset(360), RDI)
LEAQ(Mem{Base: R12}.Offset(360), RSI)
}
func NOCOPY() {
Label("NOCOPY")
MOVQ(R9, Mem{Base: R12}.Offset(352))
MOVOA(Mem{Base: R12}.Offset(48), X0)
MOVOA(Mem{Base: R12}.Offset(0), X1)
MOVOA(Mem{Base: R12}.Offset(16), X2)
MOVOA(Mem{Base: R12}.Offset(32), X3)
MOVOA(X1, X4)
MOVQ(U32(20), RCX)
}
func MAINLOOP2() {
Label("MAINLOOP2")
PADDL(X0, X4)
MOVOA(X0, X5)
MOVOA(X4, X6)
PSLLL(Imm(7), X4)
PSRLL(Imm(25), X6)
PXOR(X4, X3)
PXOR(X6, X3)
PADDL(X3, X5)
MOVOA(X3, X4)
MOVOA(X5, X6)
PSLLL(Imm(9), X5)
PSRLL(Imm(23), X6)
PXOR(X5, X2)
PSHUFL(Imm(0x93), X3, X3)
PXOR(X6, X2)
PADDL(X2, X4)
MOVOA(X2, X5)
MOVOA(X4, X6)
PSLLL(Imm(13), X4)
PSRLL(Imm(19), X6)
PXOR(X4, X1)
PSHUFL(Imm(0x4E), X2, X2)
PXOR(X6, X1)
PADDL(X1, X5)
MOVOA(X3, X4)
MOVOA(X5, X6)
PSLLL(Imm(18), X5)
PSRLL(Imm(14), X6)
PXOR(X5, X0)
PSHUFL(Imm(0x39), X1, X1)
PXOR(X6, X0)
PADDL(X0, X4)
MOVOA(X0, X5)
MOVOA(X4, X6)
PSLLL(Imm(7), X4)
PSRLL(Imm(25), X6)
PXOR(X4, X1)
PXOR(X6, X1)
PADDL(X1, X5)
MOVOA(X1, X4)
MOVOA(X5, X6)
PSLLL(Imm(9), X5)
PSRLL(Imm(23), X6)
PXOR(X5, X2)
PSHUFL(Imm(0x93), X1, X1)
PXOR(X6, X2)
PADDL(X2, X4)
MOVOA(X2, X5)
MOVOA(X4, X6)
PSLLL(Imm(13), X4)
PSRLL(Imm(19), X6)
PXOR(X4, X3)
PSHUFL(Imm(0x4E), X2, X2)
PXOR(X6, X3)
PADDL(X3, X5)
MOVOA(X1, X4)
MOVOA(X5, X6)
PSLLL(Imm(18), X5)
PSRLL(Imm(14), X6)
PXOR(X5, X0)
PSHUFL(Imm(0x39), X3, X3)
PXOR(X6, X0)
PADDL(X0, X4)
MOVOA(X0, X5)
MOVOA(X4, X6)
PSLLL(Imm(7), X4)
PSRLL(Imm(25), X6)
PXOR(X4, X3)
PXOR(X6, X3)
PADDL(X3, X5)
MOVOA(X3, X4)
MOVOA(X5, X6)
PSLLL(Imm(9), X5)
PSRLL(Imm(23), X6)
PXOR(X5, X2)
PSHUFL(Imm(0x93), X3, X3)
PXOR(X6, X2)
PADDL(X2, X4)
MOVOA(X2, X5)
MOVOA(X4, X6)
PSLLL(Imm(13), X4)
PSRLL(Imm(19), X6)
PXOR(X4, X1)
PSHUFL(Imm(0x4E), X2, X2)
PXOR(X6, X1)
PADDL(X1, X5)
MOVOA(X3, X4)
MOVOA(X5, X6)
PSLLL(Imm(18), X5)
PSRLL(Imm(14), X6)
PXOR(X5, X0)
PSHUFL(Imm(0x39), X1, X1)
PXOR(X6, X0)
PADDL(X0, X4)
MOVOA(X0, X5)
MOVOA(X4, X6)
PSLLL(Imm(7), X4)
PSRLL(Imm(25), X6)
PXOR(X4, X1)
PXOR(X6, X1)
PADDL(X1, X5)
MOVOA(X1, X4)
MOVOA(X5, X6)
PSLLL(Imm(9), X5)
PSRLL(Imm(23), X6)
PXOR(X5, X2)
PSHUFL(Imm(0x93), X1, X1)
PXOR(X6, X2)
PADDL(X2, X4)
MOVOA(X2, X5)
MOVOA(X4, X6)
PSLLL(Imm(13), X4)
PSRLL(Imm(19), X6)
PXOR(X4, X3)
PSHUFL(Imm(0x4E), X2, X2)
PXOR(X6, X3)
SUBQ(Imm(4), RCX)
PADDL(X3, X5)
MOVOA(X1, X4)
MOVOA(X5, X6)
PSLLL(Imm(18), X5)
PXOR(X7, X7)
PSRLL(Imm(14), X6)
PXOR(X5, X0)
PSHUFL(Imm(0x39), X3, X3)
PXOR(X6, X0)
JA(LabelRef("MAINLOOP2"))
PADDL(Mem{Base: R12}.Offset(48), X0)
PADDL(Mem{Base: R12}.Offset(0), X1)
PADDL(Mem{Base: R12}.Offset(16), X2)
PADDL(Mem{Base: R12}.Offset(32), X3)
MOVD(X0, ECX)
MOVD(X1, R8)
MOVD(X2, R9)
MOVD(X3, EAX)
PSHUFL(Imm(0x39), X0, X0)
PSHUFL(Imm(0x39), X1, X1)
PSHUFL(Imm(0x39), X2, X2)
PSHUFL(Imm(0x39), X3, X3)
XORL(Mem{Base: SI}.Offset(0), ECX)
XORL(Mem{Base: SI}.Offset(48), R8L)
XORL(Mem{Base: SI}.Offset(32), R9L)
XORL(Mem{Base: SI}.Offset(16), EAX)
MOVL(ECX, Mem{Base: DI}.Offset(0))
MOVL(R8L, Mem{Base: DI}.Offset(48))
MOVL(R9L, Mem{Base: DI}.Offset(32))
MOVL(EAX, Mem{Base: DI}.Offset(16))
MOVD(X0, ECX)
MOVD(X1, R8)
MOVD(X2, R9)
MOVD(X3, EAX)
PSHUFL(Imm(0x39), X0, X0)
PSHUFL(Imm(0x39), X1, X1)
PSHUFL(Imm(0x39), X2, X2)
PSHUFL(Imm(0x39), X3, X3)
XORL(Mem{Base: SI}.Offset(20), ECX)
XORL(Mem{Base: SI}.Offset(4), R8L)
XORL(Mem{Base: SI}.Offset(52), R9L)
XORL(Mem{Base: SI}.Offset(36), EAX)
MOVL(ECX, Mem{Base: DI}.Offset(20))
MOVL(R8L, Mem{Base: DI}.Offset(4))
MOVL(R9L, Mem{Base: DI}.Offset(52))
MOVL(EAX, Mem{Base: DI}.Offset(36))
MOVD(X0, ECX)
MOVD(X1, R8)
MOVD(X2, R9)
MOVD(X3, EAX)
PSHUFL(Imm(0x39), X0, X0)
PSHUFL(Imm(0x39), X1, X1)
PSHUFL(Imm(0x39), X2, X2)
PSHUFL(Imm(0x39), X3, X3)
XORL(Mem{Base: SI}.Offset(40), ECX)
XORL(Mem{Base: SI}.Offset(24), R8L)
XORL(Mem{Base: SI}.Offset(8), R9L)
XORL(Mem{Base: SI}.Offset(56), EAX)
MOVL(ECX, Mem{Base: DI}.Offset(40))
MOVL(R8L, Mem{Base: DI}.Offset(24))
MOVL(R9L, Mem{Base: DI}.Offset(8))
MOVL(EAX, Mem{Base: DI}.Offset(56))
MOVD(X0, ECX)
MOVD(X1, R8)
MOVD(X2, R9)
MOVD(X3, EAX)
XORL(Mem{Base: SI}.Offset(60), ECX)
XORL(Mem{Base: SI}.Offset(44), R8L)
XORL(Mem{Base: SI}.Offset(28), R9L)
XORL(Mem{Base: SI}.Offset(12), EAX)
MOVL(ECX, Mem{Base: DI}.Offset(60))
MOVL(R8L, Mem{Base: DI}.Offset(44))
MOVL(R9L, Mem{Base: DI}.Offset(28))
MOVL(EAX, Mem{Base: DI}.Offset(12))
MOVQ(Mem{Base: R12}.Offset(352), R9)
MOVL(Mem{Base: R12}.Offset(16), ECX)
MOVL(Mem{Base: R12}.Offset(36), R8L)
ADDQ(Imm(1), RCX)
SHLQ(Imm(32), R8)
ADDQ(R8, RCX)
MOVQ(RCX, R8)
SHRQ(Imm(32), R8)
MOVL(ECX, Mem{Base: R12}.Offset(16))
MOVL(R8L, Mem{Base: R12}.Offset(36))
CMPQ(R9, Imm(64))
JA(LabelRef("BYTESATLEAST65"))
JAE(LabelRef("BYTESATLEAST64"))
MOVQ(RDI, RSI)
MOVQ(RDX, RDI)
MOVQ(R9, RCX)
// Hack to get Avo to emit:
// REP; MOVSB
Instruction(&ir.Instruction{Opcode: "REP; MOVSB"})
}
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -4,12 +4,12 @@ go 1.22
require (
github.com/mmcloughlin/avo v0.6.0
golang.org/x/crypto v0.25.0
golang.org/x/crypto v0.33.0
)
require (
golang.org/x/mod v0.19.0 // indirect
golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.22.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/tools v0.23.0 // indirect
)
+4 -4
View File
@@ -1,12 +1,12 @@
github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY=
github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8=
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
+4
View File
@@ -5,6 +5,10 @@
// Package sha3 implements the SHA-3 fixed-output-length hash functions and
// the SHAKE variable-output-length hash functions defined by FIPS-202.
//
// All types in this package also implement [encoding.BinaryMarshaler],
// [encoding.BinaryAppender] and [encoding.BinaryUnmarshaler] to marshal and
// unmarshal the internal state of the hash.
//
// Both types of hash function use the "sponge" construction and the Keccak
// permutation. For a detailed specification see http://keccak.noekeon.org/
//
+25 -6
View File
@@ -48,33 +48,52 @@ func init() {
crypto.RegisterHash(crypto.SHA3_512, New512)
}
const (
dsbyteSHA3 = 0b00000110
dsbyteKeccak = 0b00000001
dsbyteShake = 0b00011111
dsbyteCShake = 0b00000100
// rateK[c] is the rate in bytes for Keccak[c] where c is the capacity in
// bits. Given the sponge size is 1600 bits, the rate is 1600 - c bits.
rateK256 = (1600 - 256) / 8
rateK448 = (1600 - 448) / 8
rateK512 = (1600 - 512) / 8
rateK768 = (1600 - 768) / 8
rateK1024 = (1600 - 1024) / 8
)
func new224Generic() *state {
return &state{rate: 144, outputLen: 28, dsbyte: 0x06}
return &state{rate: rateK448, outputLen: 28, dsbyte: dsbyteSHA3}
}
func new256Generic() *state {
return &state{rate: 136, outputLen: 32, dsbyte: 0x06}
return &state{rate: rateK512, outputLen: 32, dsbyte: dsbyteSHA3}
}
func new384Generic() *state {
return &state{rate: 104, outputLen: 48, dsbyte: 0x06}
return &state{rate: rateK768, outputLen: 48, dsbyte: dsbyteSHA3}
}
func new512Generic() *state {
return &state{rate: 72, outputLen: 64, dsbyte: 0x06}
return &state{rate: rateK1024, outputLen: 64, dsbyte: dsbyteSHA3}
}
// NewLegacyKeccak256 creates a new Keccak-256 hash.
//
// Only use this function if you require compatibility with an existing cryptosystem
// that uses non-standard padding. All other users should use New256 instead.
func NewLegacyKeccak256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x01} }
func NewLegacyKeccak256() hash.Hash {
return &state{rate: rateK512, outputLen: 32, dsbyte: dsbyteKeccak}
}
// NewLegacyKeccak512 creates a new Keccak-512 hash.
//
// Only use this function if you require compatibility with an existing cryptosystem
// that uses non-standard padding. All other users should use New512 instead.
func NewLegacyKeccak512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x01} }
func NewLegacyKeccak512() hash.Hash {
return &state{rate: rateK1024, outputLen: 64, dsbyte: dsbyteKeccak}
}
// Sum224 returns the SHA3-224 digest of the data.
func Sum224(data []byte) (digest [28]byte) {
+122 -63
View File
@@ -4,6 +4,15 @@
package sha3
import (
"crypto/subtle"
"encoding/binary"
"errors"
"unsafe"
"golang.org/x/sys/cpu"
)
// spongeDirection indicates the direction bytes are flowing through the sponge.
type spongeDirection int
@@ -14,16 +23,13 @@ const (
spongeSqueezing
)
const (
// maxRate is the maximum size of the internal buffer. SHAKE-256
// currently needs the largest buffer.
maxRate = 168
)
type state struct {
// Generic sponge components.
a [25]uint64 // main state of the hash
rate int // the number of bytes of state to use
a [1600 / 8]byte // main state of the hash
// a[n:rate] is the buffer. If absorbing, it's the remaining space to XOR
// into before running the permutation. If squeezing, it's the remaining
// output to produce before running the permutation.
n, rate int
// dsbyte contains the "domain separation" bits and the first bit of
// the padding. Sections 6.1 and 6.2 of [1] separate the outputs of the
@@ -39,10 +45,6 @@ type state struct {
// Extendable-Output Functions (May 2014)"
dsbyte byte
i, n int // storage[i:n] is the buffer, i is only used while squeezing
storage [maxRate]byte
// Specific to SHA-3 and SHAKE.
outputLen int // the default output size in bytes
state spongeDirection // whether the sponge is absorbing or squeezing
}
@@ -61,7 +63,7 @@ func (d *state) Reset() {
d.a[i] = 0
}
d.state = spongeAbsorbing
d.i, d.n = 0, 0
d.n = 0
}
func (d *state) clone() *state {
@@ -69,22 +71,25 @@ func (d *state) clone() *state {
return &ret
}
// permute applies the KeccakF-1600 permutation. It handles
// any input-output buffering.
// permute applies the KeccakF-1600 permutation.
func (d *state) permute() {
switch d.state {
case spongeAbsorbing:
// If we're absorbing, we need to xor the input into the state
// before applying the permutation.
xorIn(d, d.storage[:d.rate])
d.n = 0
keccakF1600(&d.a)
case spongeSqueezing:
// If we're squeezing, we need to apply the permutation before
// copying more output.
keccakF1600(&d.a)
d.i = 0
copyOut(d, d.storage[:d.rate])
var a *[25]uint64
if cpu.IsBigEndian {
a = new([25]uint64)
for i := range a {
a[i] = binary.LittleEndian.Uint64(d.a[i*8:])
}
} else {
a = (*[25]uint64)(unsafe.Pointer(&d.a))
}
keccakF1600(a)
d.n = 0
if cpu.IsBigEndian {
for i := range a {
binary.LittleEndian.PutUint64(d.a[i*8:], a[i])
}
}
}
@@ -92,53 +97,36 @@ func (d *state) permute() {
// the multi-bitrate 10..1 padding rule, and permutes the state.
func (d *state) padAndPermute() {
// Pad with this instance's domain-separator bits. We know that there's
// at least one byte of space in d.buf because, if it were full,
// at least one byte of space in the sponge because, if it were full,
// permute would have been called to empty it. dsbyte also contains the
// first one bit for the padding. See the comment in the state struct.
d.storage[d.n] = d.dsbyte
d.n++
for d.n < d.rate {
d.storage[d.n] = 0
d.n++
}
d.a[d.n] ^= d.dsbyte
// This adds the final one bit for the padding. Because of the way that
// bits are numbered from the LSB upwards, the final bit is the MSB of
// the last byte.
d.storage[d.rate-1] ^= 0x80
d.a[d.rate-1] ^= 0x80
// Apply the permutation
d.permute()
d.state = spongeSqueezing
d.n = d.rate
copyOut(d, d.storage[:d.rate])
}
// Write absorbs more data into the hash's state. It panics if any
// output has already been read.
func (d *state) Write(p []byte) (written int, err error) {
func (d *state) Write(p []byte) (n int, err error) {
if d.state != spongeAbsorbing {
panic("sha3: Write after Read")
}
written = len(p)
n = len(p)
for len(p) > 0 {
if d.n == 0 && len(p) >= d.rate {
// The fast path; absorb a full "rate" bytes of input and apply the permutation.
xorIn(d, p[:d.rate])
p = p[d.rate:]
keccakF1600(&d.a)
} else {
// The slow path; buffer the input until we can fill the sponge, and then xor it in.
todo := d.rate - d.n
if todo > len(p) {
todo = len(p)
}
d.n += copy(d.storage[d.n:], p[:todo])
p = p[todo:]
x := subtle.XORBytes(d.a[d.n:d.rate], d.a[d.n:d.rate], p)
d.n += x
p = p[x:]
// If the sponge is full, apply the permutation.
if d.n == d.rate {
d.permute()
}
// If the sponge is full, apply the permutation.
if d.n == d.rate {
d.permute()
}
}
@@ -156,14 +144,14 @@ func (d *state) Read(out []byte) (n int, err error) {
// Now, do the squeezing.
for len(out) > 0 {
n := copy(out, d.storage[d.i:d.n])
d.i += n
out = out[n:]
// Apply the permutation if we've squeezed the sponge dry.
if d.i == d.rate {
if d.n == d.rate {
d.permute()
}
x := copy(out, d.a[d.n:d.rate])
d.n += x
out = out[x:]
}
return
@@ -183,3 +171,74 @@ func (d *state) Sum(in []byte) []byte {
dup.Read(hash)
return append(in, hash...)
}
const (
magicSHA3 = "sha\x08"
magicShake = "sha\x09"
magicCShake = "sha\x0a"
magicKeccak = "sha\x0b"
// magic || rate || main state || n || sponge direction
marshaledSize = len(magicSHA3) + 1 + 200 + 1 + 1
)
func (d *state) MarshalBinary() ([]byte, error) {
return d.AppendBinary(make([]byte, 0, marshaledSize))
}
func (d *state) AppendBinary(b []byte) ([]byte, error) {
switch d.dsbyte {
case dsbyteSHA3:
b = append(b, magicSHA3...)
case dsbyteShake:
b = append(b, magicShake...)
case dsbyteCShake:
b = append(b, magicCShake...)
case dsbyteKeccak:
b = append(b, magicKeccak...)
default:
panic("unknown dsbyte")
}
// rate is at most 168, and n is at most rate.
b = append(b, byte(d.rate))
b = append(b, d.a[:]...)
b = append(b, byte(d.n), byte(d.state))
return b, nil
}
func (d *state) UnmarshalBinary(b []byte) error {
if len(b) != marshaledSize {
return errors.New("sha3: invalid hash state")
}
magic := string(b[:len(magicSHA3)])
b = b[len(magicSHA3):]
switch {
case magic == magicSHA3 && d.dsbyte == dsbyteSHA3:
case magic == magicShake && d.dsbyte == dsbyteShake:
case magic == magicCShake && d.dsbyte == dsbyteCShake:
case magic == magicKeccak && d.dsbyte == dsbyteKeccak:
default:
return errors.New("sha3: invalid hash state identifier")
}
rate := int(b[0])
b = b[1:]
if rate != d.rate {
return errors.New("sha3: invalid hash state function")
}
copy(d.a[:], b)
b = b[len(d.a):]
n, state := int(b[0]), spongeDirection(b[1])
if n > d.rate {
return errors.New("sha3: invalid hash state")
}
d.n = n
if state != spongeAbsorbing && state != spongeSqueezing {
return errors.New("sha3: invalid hash state")
}
d.state = state
return nil
}
+149
View File
@@ -13,10 +13,12 @@ package sha3
import (
"bytes"
"compress/flate"
"encoding"
"encoding/hex"
"encoding/json"
"fmt"
"hash"
"io"
"math/rand"
"os"
"strings"
@@ -375,6 +377,153 @@ func TestClone(t *testing.T) {
}
}
func TestCSHAKEAccumulated(t *testing.T) {
// Generated with pycryptodome@3.20.0
//
// from Crypto.Hash import cSHAKE128
// rng = cSHAKE128.new()
// acc = cSHAKE128.new()
// for n in range(200):
// N = rng.read(n)
// for s in range(200):
// S = rng.read(s)
// c = cSHAKE128.cSHAKE_XOF(data=None, custom=S, capacity=256, function=N)
// c.update(rng.read(100))
// acc.update(c.read(200))
// c = cSHAKE128.cSHAKE_XOF(data=None, custom=S, capacity=256, function=N)
// c.update(rng.read(168))
// acc.update(c.read(200))
// c = cSHAKE128.cSHAKE_XOF(data=None, custom=S, capacity=256, function=N)
// c.update(rng.read(200))
// acc.update(c.read(200))
// print(acc.read(32).hex())
//
// and with @noble/hashes@v1.5.0
//
// import { bytesToHex } from "@noble/hashes/utils";
// import { cshake128 } from "@noble/hashes/sha3-addons";
// const rng = cshake128.create();
// const acc = cshake128.create();
// for (let n = 0; n < 200; n++) {
// const N = rng.xof(n);
// for (let s = 0; s < 200; s++) {
// const S = rng.xof(s);
// let c = cshake128.create({ NISTfn: N, personalization: S });
// c.update(rng.xof(100));
// acc.update(c.xof(200));
// c = cshake128.create({ NISTfn: N, personalization: S });
// c.update(rng.xof(168));
// acc.update(c.xof(200));
// c = cshake128.create({ NISTfn: N, personalization: S });
// c.update(rng.xof(200));
// acc.update(c.xof(200));
// }
// }
// console.log(bytesToHex(acc.xof(32)));
//
t.Run("cSHAKE128", func(t *testing.T) {
testCSHAKEAccumulated(t, NewCShake128, rateK256,
"bb14f8657c6ec5403d0b0e2ef3d3393497e9d3b1a9a9e8e6c81dbaa5fd809252")
})
t.Run("cSHAKE256", func(t *testing.T) {
testCSHAKEAccumulated(t, NewCShake256, rateK512,
"0baaf9250c6e25f0c14ea5c7f9bfde54c8a922c8276437db28f3895bdf6eeeef")
})
}
func testCSHAKEAccumulated(t *testing.T, newCShake func(N, S []byte) ShakeHash, rate int64, exp string) {
rnd := newCShake(nil, nil)
acc := newCShake(nil, nil)
for n := 0; n < 200; n++ {
N := make([]byte, n)
rnd.Read(N)
for s := 0; s < 200; s++ {
S := make([]byte, s)
rnd.Read(S)
c := newCShake(N, S)
io.CopyN(c, rnd, 100 /* < rate */)
io.CopyN(acc, c, 200)
c.Reset()
io.CopyN(c, rnd, rate)
io.CopyN(acc, c, 200)
c.Reset()
io.CopyN(c, rnd, 200 /* > rate */)
io.CopyN(acc, c, 200)
}
}
if got := hex.EncodeToString(acc.Sum(nil)[:32]); got != exp {
t.Errorf("got %s, want %s", got, exp)
}
}
func TestCSHAKELargeS(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
// See https://go.dev/issue/66232.
const s = (1<<32)/8 + 1000 // s * 8 > 2^32
S := make([]byte, s)
rnd := NewShake128()
rnd.Read(S)
c := NewCShake128(nil, S)
io.CopyN(c, rnd, 1000)
// Generated with pycryptodome@3.20.0
//
// from Crypto.Hash import cSHAKE128
// rng = cSHAKE128.new()
// S = rng.read(536871912)
// c = cSHAKE128.new(custom=S)
// c.update(rng.read(1000))
// print(c.read(32).hex())
//
exp := "2cb9f237767e98f2614b8779cf096a52da9b3a849280bbddec820771ae529cf0"
if got := hex.EncodeToString(c.Sum(nil)); got != exp {
t.Errorf("got %s, want %s", got, exp)
}
}
func TestMarshalUnmarshal(t *testing.T) {
t.Run("SHA3-224", func(t *testing.T) { testMarshalUnmarshal(t, New224()) })
t.Run("SHA3-256", func(t *testing.T) { testMarshalUnmarshal(t, New256()) })
t.Run("SHA3-384", func(t *testing.T) { testMarshalUnmarshal(t, New384()) })
t.Run("SHA3-512", func(t *testing.T) { testMarshalUnmarshal(t, New512()) })
t.Run("SHAKE128", func(t *testing.T) { testMarshalUnmarshal(t, NewShake128()) })
t.Run("SHAKE256", func(t *testing.T) { testMarshalUnmarshal(t, NewShake256()) })
t.Run("cSHAKE128", func(t *testing.T) { testMarshalUnmarshal(t, NewCShake128([]byte("N"), []byte("S"))) })
t.Run("cSHAKE256", func(t *testing.T) { testMarshalUnmarshal(t, NewCShake256([]byte("N"), []byte("S"))) })
t.Run("Keccak-256", func(t *testing.T) { testMarshalUnmarshal(t, NewLegacyKeccak256()) })
t.Run("Keccak-512", func(t *testing.T) { testMarshalUnmarshal(t, NewLegacyKeccak512()) })
}
// TODO(filippo): move this to crypto/internal/cryptotest.
func testMarshalUnmarshal(t *testing.T, h hash.Hash) {
buf := make([]byte, 200)
rand.Read(buf)
n := rand.Intn(200)
h.Write(buf)
want := h.Sum(nil)
h.Reset()
h.Write(buf[:n])
b, err := h.(encoding.BinaryMarshaler).MarshalBinary()
if err != nil {
t.Errorf("MarshalBinary: %v", err)
}
h.Write(bytes.Repeat([]byte{0}, 200))
if err := h.(encoding.BinaryUnmarshaler).UnmarshalBinary(b); err != nil {
t.Errorf("UnmarshalBinary: %v", err)
}
h.Write(buf[n:])
got := h.Sum(nil)
if !bytes.Equal(got, want) {
t.Errorf("got %x, want %x", got, want)
}
}
// BenchmarkPermutationFunction measures the speed of the permutation function
// with no input data.
func BenchmarkPermutationFunction(b *testing.B) {
+53 -34
View File
@@ -16,9 +16,12 @@ package sha3
// [2] https://doi.org/10.6028/NIST.SP.800-185
import (
"bytes"
"encoding/binary"
"errors"
"hash"
"io"
"math/bits"
)
// ShakeHash defines the interface to hash functions that support
@@ -50,44 +53,36 @@ type cshakeState struct {
initBlock []byte
}
// Consts for configuring initial SHA-3 state
const (
dsbyteShake = 0x1f
dsbyteCShake = 0x04
rate128 = 168
rate256 = 136
)
func bytepad(input []byte, w int) []byte {
// leftEncode always returns max 9 bytes
buf := make([]byte, 0, 9+len(input)+w)
buf = append(buf, leftEncode(uint64(w))...)
buf = append(buf, input...)
padlen := w - (len(buf) % w)
return append(buf, make([]byte, padlen)...)
func bytepad(data []byte, rate int) []byte {
out := make([]byte, 0, 9+len(data)+rate-1)
out = append(out, leftEncode(uint64(rate))...)
out = append(out, data...)
if padlen := rate - len(out)%rate; padlen < rate {
out = append(out, make([]byte, padlen)...)
}
return out
}
func leftEncode(value uint64) []byte {
var b [9]byte
binary.BigEndian.PutUint64(b[1:], value)
// Trim all but last leading zero bytes
i := byte(1)
for i < 8 && b[i] == 0 {
i++
func leftEncode(x uint64) []byte {
// Let n be the smallest positive integer for which 2^(8n) > x.
n := (bits.Len64(x) + 7) / 8
if n == 0 {
n = 1
}
// Prepend number of encoded bytes
b[i-1] = 9 - i
return b[i-1:]
// Return n || x with n as a byte and x an n bytes in big-endian order.
b := make([]byte, 9)
binary.BigEndian.PutUint64(b[1:], x)
b = b[9-n-1:]
b[0] = byte(n)
return b
}
func newCShake(N, S []byte, rate, outputLen int, dsbyte byte) ShakeHash {
c := cshakeState{state: &state{rate: rate, outputLen: outputLen, dsbyte: dsbyte}}
// leftEncode returns max 9 bytes
c.initBlock = make([]byte, 0, 9*2+len(N)+len(S))
c.initBlock = append(c.initBlock, leftEncode(uint64(len(N)*8))...)
c.initBlock = make([]byte, 0, 9+len(N)+9+len(S)) // leftEncode returns max 9 bytes
c.initBlock = append(c.initBlock, leftEncode(uint64(len(N))*8)...)
c.initBlock = append(c.initBlock, N...)
c.initBlock = append(c.initBlock, leftEncode(uint64(len(S)*8))...)
c.initBlock = append(c.initBlock, leftEncode(uint64(len(S))*8)...)
c.initBlock = append(c.initBlock, S...)
c.Write(bytepad(c.initBlock, c.rate))
return &c
@@ -111,6 +106,30 @@ func (c *state) Clone() ShakeHash {
return c.clone()
}
func (c *cshakeState) MarshalBinary() ([]byte, error) {
return c.AppendBinary(make([]byte, 0, marshaledSize+len(c.initBlock)))
}
func (c *cshakeState) AppendBinary(b []byte) ([]byte, error) {
b, err := c.state.AppendBinary(b)
if err != nil {
return nil, err
}
b = append(b, c.initBlock...)
return b, nil
}
func (c *cshakeState) UnmarshalBinary(b []byte) error {
if len(b) <= marshaledSize {
return errors.New("sha3: invalid hash state")
}
if err := c.state.UnmarshalBinary(b[:marshaledSize]); err != nil {
return err
}
c.initBlock = bytes.Clone(b[marshaledSize:])
return nil
}
// NewShake128 creates a new SHAKE128 variable-output-length ShakeHash.
// Its generic security strength is 128 bits against all attacks if at
// least 32 bytes of its output are used.
@@ -126,11 +145,11 @@ func NewShake256() ShakeHash {
}
func newShake128Generic() *state {
return &state{rate: rate128, outputLen: 32, dsbyte: dsbyteShake}
return &state{rate: rateK256, outputLen: 32, dsbyte: dsbyteShake}
}
func newShake256Generic() *state {
return &state{rate: rate256, outputLen: 64, dsbyte: dsbyteShake}
return &state{rate: rateK512, outputLen: 64, dsbyte: dsbyteShake}
}
// NewCShake128 creates a new instance of cSHAKE128 variable-output-length ShakeHash,
@@ -143,7 +162,7 @@ func NewCShake128(N, S []byte) ShakeHash {
if len(N) == 0 && len(S) == 0 {
return NewShake128()
}
return newCShake(N, S, rate128, 32, dsbyteCShake)
return newCShake(N, S, rateK256, 32, dsbyteCShake)
}
// NewCShake256 creates a new instance of cSHAKE256 variable-output-length ShakeHash,
@@ -156,7 +175,7 @@ func NewCShake256(N, S []byte) ShakeHash {
if len(N) == 0 && len(S) == 0 {
return NewShake256()
}
return newCShake(N, S, rate256, 64, dsbyteCShake)
return newCShake(N, S, rateK512, 64, dsbyteCShake)
}
// ShakeSum128 writes an arbitrary-length digest of data into hash.
-40
View File
@@ -1,40 +0,0 @@
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package sha3
import (
"crypto/subtle"
"encoding/binary"
"unsafe"
"golang.org/x/sys/cpu"
)
// xorIn xors the bytes in buf into the state.
func xorIn(d *state, buf []byte) {
if cpu.IsBigEndian {
for i := 0; len(buf) >= 8; i++ {
a := binary.LittleEndian.Uint64(buf)
d.a[i] ^= a
buf = buf[8:]
}
} else {
ab := (*[25 * 64 / 8]byte)(unsafe.Pointer(&d.a))
subtle.XORBytes(ab[:], ab[:], buf)
}
}
// copyOut copies uint64s to a byte buffer.
func copyOut(d *state, b []byte) {
if cpu.IsBigEndian {
for i := 0; len(b) >= 8; i++ {
binary.LittleEndian.PutUint64(b, d.a[i])
b = b[8:]
}
} else {
ab := (*[25 * 64 / 8]byte)(unsafe.Pointer(&d.a))
copy(b, ab[:])
}
}
+9
View File
@@ -175,6 +175,15 @@ func (r *keyring) Add(key AddedKey) error {
p.expire = &t
}
// If we already have a Signer with the same public key, replace it with the
// new one.
for idx, k := range r.keys {
if bytes.Equal(k.signer.PublicKey().Marshal(), p.signer.PublicKey().Marshal()) {
r.keys[idx] = p
return nil
}
}
r.keys = append(r.keys, p)
return nil
+46
View File
@@ -29,6 +29,10 @@ func validateListedKeys(t *testing.T, a Agent, expectedKeys []string) {
t.Fatalf("failed to list keys: %v", err)
return
}
if len(listedKeys) != len(expectedKeys) {
t.Fatalf("expeted %d key, got %d", len(expectedKeys), len(listedKeys))
return
}
actualKeys := make(map[string]bool)
for _, key := range listedKeys {
actualKeys[key.Comment] = true
@@ -74,3 +78,45 @@ func TestKeyringAddingAndRemoving(t *testing.T) {
}
validateListedKeys(t, k, []string{})
}
func TestAddDuplicateKey(t *testing.T) {
keyNames := []string{"rsa", "user"}
k := NewKeyring()
for _, keyName := range keyNames {
addTestKey(t, k, keyName)
}
validateListedKeys(t, k, keyNames)
// Add the keys again.
for _, keyName := range keyNames {
addTestKey(t, k, keyName)
}
validateListedKeys(t, k, keyNames)
// Add an existing key with an updated comment.
keyName := keyNames[0]
addedKey := AddedKey{
PrivateKey: testPrivateKeys[keyName],
Comment: "comment updated",
}
err := k.Add(addedKey)
if err != nil {
t.Fatalf("failed to add key %q: %v", keyName, err)
}
// Check the that key is found and the comment was updated.
keys, err := k.List()
if err != nil {
t.Fatalf("failed to list keys: %v", err)
}
if len(keys) != len(keyNames) {
t.Fatalf("expected %d keys, got %d", len(keyNames), len(keys))
}
isFound := false
for _, key := range keys {
if key.Comment == addedKey.Comment {
isFound = true
}
}
if !isFound {
t.Fatal("key with the updated comment not found")
}
}
+6 -8
View File
@@ -15,14 +15,12 @@ import (
"reflect"
"testing"
"time"
"golang.org/x/crypto/ssh/testdata"
)
// Cert generated by ssh-keygen 6.0p1 Debian-4.
// % ssh-keygen -s ca-key -I test user-key
const exampleSSHCert = `ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgb1srW/W3ZDjYAO45xLYAwzHBDLsJ4Ux6ICFIkTjb1LEAAAADAQABAAAAYQCkoR51poH0wE8w72cqSB8Sszx+vAhzcMdCO0wqHTj7UNENHWEXGrU0E0UQekD7U+yhkhtoyjbPOVIP7hNa6aRk/ezdh/iUnCIt4Jt1v3Z1h1P+hA4QuYFMHNB+rmjPwAcAAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAAAAAAP//////////AAAAAAAAAIIAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAAHcAAAAHc3NoLXJzYQAAAAMBAAEAAABhANFS2kaktpSGc+CcmEKPyw9mJC4nZKxHKTgLVZeaGbFZOvJTNzBspQHdy7Q1uKSfktxpgjZnksiu/tFF9ngyY2KFoc+U88ya95IZUycBGCUbBQ8+bhDtw/icdDGQD5WnUwAAAG8AAAAHc3NoLXJzYQAAAGC8Y9Z2LQKhIhxf52773XaWrXdxP0t3GBVo4A10vUWiYoAGepr6rQIoGGXFxT4B9Gp+nEBJjOwKDXPrAevow0T9ca8gZN+0ykbhSrXLE5Ao48rqr3zP4O1/9P7e6gp0gw8=`
func TestParseCert(t *testing.T) {
authKeyBytes := []byte(exampleSSHCert)
authKeyBytes := bytes.TrimSuffix(testdata.SSHCertificates["rsa"], []byte(" host.example.com\n"))
key, _, _, rest, err := ParseAuthorizedKey(authKeyBytes)
if err != nil {
@@ -103,7 +101,7 @@ func TestParseCertWithOptions(t *testing.T) {
}
func TestValidateCert(t *testing.T) {
key, _, _, _, err := ParseAuthorizedKey([]byte(exampleSSHCert))
key, _, _, _, err := ParseAuthorizedKey(testdata.SSHCertificates["rsa-user-testcertificate"])
if err != nil {
t.Fatalf("ParseAuthorizedKey: %v", err)
}
@@ -116,7 +114,7 @@ func TestValidateCert(t *testing.T) {
return bytes.Equal(k.Marshal(), validCert.SignatureKey.Marshal())
}
if err := checker.CheckCert("user", validCert); err != nil {
if err := checker.CheckCert("testcertificate", validCert); err != nil {
t.Errorf("Unable to validate certificate: %v", err)
}
invalidCert := &Certificate{
@@ -125,7 +123,7 @@ func TestValidateCert(t *testing.T) {
ValidBefore: CertTimeInfinity,
Signature: &Signature{},
}
if err := checker.CheckCert("user", invalidCert); err == nil {
if err := checker.CheckCert("testcertificate", invalidCert); err == nil {
t.Error("Invalid cert signature passed validation")
}
}
+5
View File
@@ -555,6 +555,7 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe
}
gotMsgExtInfo := false
gotUserAuthInfoRequest := false
for {
packet, err := c.readPacket()
if err != nil {
@@ -585,6 +586,9 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe
if msg.PartialSuccess {
return authPartialSuccess, msg.Methods, nil
}
if !gotUserAuthInfoRequest {
return authFailure, msg.Methods, unexpectedMessageError(msgUserAuthInfoRequest, packet[0])
}
return authFailure, msg.Methods, nil
case msgUserAuthSuccess:
return authSuccess, nil, nil
@@ -596,6 +600,7 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe
if err := Unmarshal(packet, &msg); err != nil {
return authFailure, nil, err
}
gotUserAuthInfoRequest = true
// Manually unpack the prompt/echo pairs.
rest := msg.Prompts
+108 -8
View File
@@ -38,7 +38,7 @@ func tryAuth(t *testing.T, config *ClientConfig) error {
return err
}
// tryAuth runs a handshake with a given config against an SSH server
// tryAuthWithGSSAPIWithMICConfig runs a handshake with a given config against an SSH server
// with a given GSSAPIWithMICConfig and config serverConfig. Returns both client and server side errors.
func tryAuthWithGSSAPIWithMICConfig(t *testing.T, clientConfig *ClientConfig, gssAPIWithMICConfig *GSSAPIWithMICConfig) error {
err, _ := tryAuthBothSides(t, clientConfig, gssAPIWithMICConfig)
@@ -641,17 +641,28 @@ func TestClientAuthMaxAuthTries(t *testing.T) {
defer c1.Close()
defer c2.Close()
go newServer(c1, serverConfig)
_, _, _, err = NewClientConn(c2, "", clientConfig)
if tries > 2 {
if err == nil {
errCh := make(chan error, 1)
go func() {
_, err := newServer(c1, serverConfig)
errCh <- err
}()
_, _, _, cliErr := NewClientConn(c2, "", clientConfig)
srvErr := <-errCh
if tries > serverConfig.MaxAuthTries {
if cliErr == nil {
t.Fatalf("client: got no error, want %s", expectedErr)
} else if err.Error() != expectedErr.Error() {
} else if cliErr.Error() != expectedErr.Error() {
t.Fatalf("client: got %s, want %s", err, expectedErr)
}
var authErr *ServerAuthError
if !errors.As(srvErr, &authErr) {
t.Errorf("expected ServerAuthError, got: %v", srvErr)
}
} else {
if err != nil {
t.Fatalf("client: got %s, want no error", err)
if cliErr != nil {
t.Fatalf("client: got %s, want no error", cliErr)
}
}
}
@@ -1282,3 +1293,92 @@ func TestCertAuthOpenSSHCompat(t *testing.T) {
t.Fatalf("unable to dial remote side: %s", err)
}
}
func TestKeyboardInteractiveAuthEarlyFail(t *testing.T) {
const maxAuthTries = 2
c1, c2, err := netPipe()
if err != nil {
t.Fatalf("netPipe: %v", err)
}
defer c1.Close()
defer c2.Close()
// Start testserver
serverConfig := &ServerConfig{
MaxAuthTries: maxAuthTries,
KeyboardInteractiveCallback: func(c ConnMetadata,
client KeyboardInteractiveChallenge) (*Permissions, error) {
// Fail keyboard-interactive authentication early before
// any prompt is sent to client.
return nil, errors.New("keyboard-interactive auth failed")
},
PasswordCallback: func(c ConnMetadata,
pass []byte) (*Permissions, error) {
if string(pass) == clientPassword {
return nil, nil
}
return nil, errors.New("password auth failed")
},
}
serverConfig.AddHostKey(testSigners["rsa"])
serverDone := make(chan struct{})
go func() {
defer func() { serverDone <- struct{}{} }()
conn, chans, reqs, err := NewServerConn(c2, serverConfig)
if err != nil {
return
}
_ = conn.Close()
discarderDone := make(chan struct{})
go func() {
defer func() { discarderDone <- struct{}{} }()
DiscardRequests(reqs)
}()
for newChannel := range chans {
newChannel.Reject(Prohibited,
"testserver not accepting requests")
}
<-discarderDone
}()
// Connect to testserver, expect KeyboardInteractive() to be not called,
// PasswordCallback() to be called and connection to succeed.
passwordCallbackCalled := false
clientConfig := &ClientConfig{
User: "testuser",
Auth: []AuthMethod{
RetryableAuthMethod(KeyboardInteractive(func(name,
instruction string, questions []string,
echos []bool) ([]string, error) {
t.Errorf("unexpected call to KeyboardInteractive()")
return []string{clientPassword}, nil
}), maxAuthTries),
RetryableAuthMethod(PasswordCallback(func() (secret string,
err error) {
t.Logf("PasswordCallback()")
passwordCallbackCalled = true
return clientPassword, nil
}), maxAuthTries),
},
HostKeyCallback: InsecureIgnoreHostKey(),
}
conn, _, _, err := NewClientConn(c1, "", clientConfig)
if err != nil {
t.Errorf("unexpected NewClientConn() error: %v", err)
}
if conn != nil {
conn.Close()
}
// Wait for server to finish.
<-serverDone
if !passwordCallbackCalled {
t.Errorf("expected PasswordCallback() to be called")
}
}
+50 -14
View File
@@ -5,7 +5,6 @@
package ssh
import (
"crypto/rand"
"errors"
"fmt"
"io"
@@ -25,6 +24,11 @@ const debugHandshake = false
// quickly.
const chanSize = 16
// maxPendingPackets sets the maximum number of packets to queue while waiting
// for KEX to complete. This limits the total pending data to maxPendingPackets
// * maxPacket bytes, which is ~16.8MB.
const maxPendingPackets = 64
// keyingTransport is a packet based transport that supports key
// changes. It need not be thread-safe. It should pass through
// msgNewKeys in both directions.
@@ -73,13 +77,22 @@ type handshakeTransport struct {
incoming chan []byte
readError error
mu sync.Mutex
writeError error
sentInitPacket []byte
sentInitMsg *kexInitMsg
pendingPackets [][]byte // Used when a key exchange is in progress.
mu sync.Mutex
// Condition for the above mutex. It is used to notify a completed key
// exchange or a write failure. Writes can wait for this condition while a
// key exchange is in progress.
writeCond *sync.Cond
writeError error
sentInitPacket []byte
sentInitMsg *kexInitMsg
// Used to queue writes when a key exchange is in progress. The length is
// limited by pendingPacketsSize. Once full, writes will block until the key
// exchange is completed or an error occurs. If not empty, it is emptied
// all at once when the key exchange is completed in kexLoop.
pendingPackets [][]byte
writePacketsLeft uint32
writeBytesLeft int64
userAuthComplete bool // whether the user authentication phase is complete
// If the read loop wants to schedule a kex, it pings this
// channel, and the write loop will send out a kex
@@ -133,6 +146,7 @@ func newHandshakeTransport(conn keyingTransport, config *Config, clientVersion,
config: config,
}
t.writeCond = sync.NewCond(&t.mu)
t.resetReadThresholds()
t.resetWriteThresholds()
@@ -259,6 +273,7 @@ func (t *handshakeTransport) recordWriteError(err error) {
defer t.mu.Unlock()
if t.writeError == nil && err != nil {
t.writeError = err
t.writeCond.Broadcast()
}
}
@@ -362,6 +377,8 @@ write:
}
}
t.pendingPackets = t.pendingPackets[:0]
// Unblock writePacket if waiting for KEX.
t.writeCond.Broadcast()
t.mu.Unlock()
}
@@ -483,7 +500,7 @@ func (t *handshakeTransport) sendKexInit() error {
CompressionClientServer: supportedCompressions,
CompressionServerClient: supportedCompressions,
}
io.ReadFull(rand.Reader, msg.Cookie[:])
io.ReadFull(t.config.Rand, msg.Cookie[:])
// We mutate the KexAlgos slice, in order to add the kex-strict extension algorithm,
// and possibly to add the ext-info extension algorithm. Since the slice may be the
@@ -552,26 +569,44 @@ func (t *handshakeTransport) sendKexInit() error {
return nil
}
var errSendBannerPhase = errors.New("ssh: SendAuthBanner outside of authentication phase")
func (t *handshakeTransport) writePacket(p []byte) error {
t.mu.Lock()
defer t.mu.Unlock()
switch p[0] {
case msgKexInit:
return errors.New("ssh: only handshakeTransport can send kexInit")
case msgNewKeys:
return errors.New("ssh: only handshakeTransport can send newKeys")
case msgUserAuthBanner:
if t.userAuthComplete {
return errSendBannerPhase
}
case msgUserAuthSuccess:
t.userAuthComplete = true
}
t.mu.Lock()
defer t.mu.Unlock()
if t.writeError != nil {
return t.writeError
}
if t.sentInitMsg != nil {
// Copy the packet so the writer can reuse the buffer.
cp := make([]byte, len(p))
copy(cp, p)
t.pendingPackets = append(t.pendingPackets, cp)
return nil
if len(t.pendingPackets) < maxPendingPackets {
// Copy the packet so the writer can reuse the buffer.
cp := make([]byte, len(p))
copy(cp, p)
t.pendingPackets = append(t.pendingPackets, cp)
return nil
}
for t.sentInitMsg != nil {
// Block and wait for KEX to complete or an error.
t.writeCond.Wait()
if t.writeError != nil {
return t.writeError
}
}
}
if t.writeBytesLeft > 0 {
@@ -588,6 +623,7 @@ func (t *handshakeTransport) writePacket(p []byte) error {
if err := t.pushPacket(p); err != nil {
t.writeError = err
t.writeCond.Broadcast()
}
return nil
+220
View File
@@ -539,6 +539,226 @@ func TestDisconnect(t *testing.T) {
}
}
type mockKeyingTransport struct {
packetConn
kexInitAllowed chan struct{}
kexInitSent chan struct{}
}
func (n *mockKeyingTransport) prepareKeyChange(*algorithms, *kexResult) error {
return nil
}
func (n *mockKeyingTransport) writePacket(packet []byte) error {
if packet[0] == msgKexInit {
<-n.kexInitAllowed
n.kexInitSent <- struct{}{}
}
return n.packetConn.writePacket(packet)
}
func (n *mockKeyingTransport) readPacket() ([]byte, error) {
return n.packetConn.readPacket()
}
func (n *mockKeyingTransport) setStrictMode() error { return nil }
func (n *mockKeyingTransport) setInitialKEXDone() {}
func TestHandshakePendingPacketsWait(t *testing.T) {
a, b := memPipe()
trS := &mockKeyingTransport{
packetConn: a,
kexInitAllowed: make(chan struct{}, 2),
kexInitSent: make(chan struct{}, 2),
}
// Allow the first KEX.
trS.kexInitAllowed <- struct{}{}
trC := &mockKeyingTransport{
packetConn: b,
kexInitAllowed: make(chan struct{}, 2),
kexInitSent: make(chan struct{}, 2),
}
// Allow the first KEX.
trC.kexInitAllowed <- struct{}{}
clientConf := &ClientConfig{
HostKeyCallback: InsecureIgnoreHostKey(),
}
clientConf.SetDefaults()
v := []byte("version")
client := newClientTransport(trC, v, v, clientConf, "addr", nil)
serverConf := &ServerConfig{}
serverConf.AddHostKey(testSigners["ecdsa"])
serverConf.AddHostKey(testSigners["rsa"])
serverConf.SetDefaults()
server := newServerTransport(trS, v, v, serverConf)
if err := server.waitSession(); err != nil {
t.Fatalf("server.waitSession: %v", err)
}
if err := client.waitSession(); err != nil {
t.Fatalf("client.waitSession: %v", err)
}
<-trC.kexInitSent
<-trS.kexInitSent
// Allow and request new KEX server side.
trS.kexInitAllowed <- struct{}{}
server.requestKeyExchange()
// Wait until the KEX init is sent.
<-trS.kexInitSent
// The client is not allowed to respond to the KEX, so writes will be
// blocked on the server side once the packets queue is full.
for i := 0; i < maxPendingPackets; i++ {
p := []byte{msgRequestSuccess, byte(i)}
if err := server.writePacket(p); err != nil {
t.Errorf("unexpected write error: %v", err)
}
}
// The packets queue is now full, the next write will block.
server.mu.Lock()
if len(server.pendingPackets) != maxPendingPackets {
t.Errorf("unexpected pending packets size; got: %d, want: %d", len(server.pendingPackets), maxPendingPackets)
}
server.mu.Unlock()
writeDone := make(chan struct{})
go func() {
defer close(writeDone)
p := []byte{msgRequestSuccess, byte(65)}
// This write will block until KEX completes.
err := server.writePacket(p)
if err != nil {
t.Errorf("unexpected write error: %v", err)
}
}()
// Consume packets on the client side
readDone := make(chan bool)
go func() {
defer close(readDone)
for {
if _, err := client.readPacket(); err != nil {
if err != io.EOF {
t.Errorf("unexpected read error: %v", err)
}
break
}
}
}()
// Allow the client to reply to the KEX and so unblock the write goroutine.
trC.kexInitAllowed <- struct{}{}
<-trC.kexInitSent
<-writeDone
// Close the client to unblock the read goroutine.
client.Close()
<-readDone
server.Close()
}
func TestHandshakePendingPacketsError(t *testing.T) {
a, b := memPipe()
trS := &mockKeyingTransport{
packetConn: a,
kexInitAllowed: make(chan struct{}, 2),
kexInitSent: make(chan struct{}, 2),
}
// Allow the first KEX.
trS.kexInitAllowed <- struct{}{}
trC := &mockKeyingTransport{
packetConn: b,
kexInitAllowed: make(chan struct{}, 2),
kexInitSent: make(chan struct{}, 2),
}
// Allow the first KEX.
trC.kexInitAllowed <- struct{}{}
clientConf := &ClientConfig{
HostKeyCallback: InsecureIgnoreHostKey(),
}
clientConf.SetDefaults()
v := []byte("version")
client := newClientTransport(trC, v, v, clientConf, "addr", nil)
serverConf := &ServerConfig{}
serverConf.AddHostKey(testSigners["ecdsa"])
serverConf.AddHostKey(testSigners["rsa"])
serverConf.SetDefaults()
server := newServerTransport(trS, v, v, serverConf)
if err := server.waitSession(); err != nil {
t.Fatalf("server.waitSession: %v", err)
}
if err := client.waitSession(); err != nil {
t.Fatalf("client.waitSession: %v", err)
}
<-trC.kexInitSent
<-trS.kexInitSent
// Allow and request new KEX server side.
trS.kexInitAllowed <- struct{}{}
server.requestKeyExchange()
// Wait until the KEX init is sent.
<-trS.kexInitSent
// The client is not allowed to respond to the KEX, so writes will be
// blocked on the server side once the packets queue is full.
for i := 0; i < maxPendingPackets; i++ {
p := []byte{msgRequestSuccess, byte(i)}
if err := server.writePacket(p); err != nil {
t.Errorf("unexpected write error: %v", err)
}
}
// The packets queue is now full, the next write will block.
writeDone := make(chan struct{})
go func() {
defer close(writeDone)
p := []byte{msgRequestSuccess, byte(65)}
// This write will block until KEX completes.
err := server.writePacket(p)
if err != io.EOF {
t.Errorf("unexpected write error: %v", err)
}
}()
// Consume packets on the client side
readDone := make(chan bool)
go func() {
defer close(readDone)
for {
if _, err := client.readPacket(); err != nil {
if err != io.EOF {
t.Errorf("unexpected read error: %v", err)
}
break
}
}
}()
// Close the server to unblock the write after an error
server.Close()
<-writeDone
// Unblock the pending write and close the client to unblock the read
// goroutine.
trC.kexInitAllowed <- struct{}{}
client.Close()
<-readDone
}
func TestHandshakeRekeyDefault(t *testing.T) {
clientConf := &ClientConfig{
Config: Config{
+12 -26
View File
@@ -302,8 +302,8 @@ func (k *KnownKey) String() string {
// applications can offer an interactive prompt to the user.
type KeyError struct {
// Want holds the accepted host keys. For each key algorithm,
// there can be one hostkey. If Want is empty, the host is
// unknown. If Want is non-empty, there was a mismatch, which
// there can be multiple hostkeys. If Want is empty, the host
// is unknown. If Want is non-empty, there was a mismatch, which
// can signify a MITM attack.
Want []KnownKey
}
@@ -358,34 +358,20 @@ func (db *hostKeyDB) checkAddr(a addr, remoteKey ssh.PublicKey) error {
// is just a key for the IP address, but not for the
// hostname?
// Algorithm => key.
knownKeys := map[string]KnownKey{}
keyErr := &KeyError{}
for _, l := range db.lines {
if l.match(a) {
typ := l.knownKey.Key.Type()
if _, ok := knownKeys[typ]; !ok {
knownKeys[typ] = l.knownKey
}
if !l.match(a) {
continue
}
keyErr.Want = append(keyErr.Want, l.knownKey)
if keyEq(l.knownKey.Key, remoteKey) {
return nil
}
}
keyErr := &KeyError{}
for _, v := range knownKeys {
keyErr.Want = append(keyErr.Want, v)
}
// Unknown remote host.
if len(knownKeys) == 0 {
return keyErr
}
// If the remote host starts using a different, unknown key type, we
// also interpret that as a mismatch.
if known, ok := knownKeys[remoteKey.Type()]; !ok || !keyEq(known.Key, remoteKey) {
return keyErr
}
return nil
return keyErr
}
// The Read function parses file contents.
+13 -11
View File
@@ -201,17 +201,6 @@ func TestHostNamePrecedence(t *testing.T) {
}
}
func TestDBOrderingPrecedenceKeyType(t *testing.T) {
str := fmt.Sprintf("server.org,%s %s\nserver.org,%s %s", testAddr, edKeyStr, testAddr, alternateEdKeyStr)
db := testDB(t, str)
if err := db.check("server.org:22", testAddr, alternateEdKey); err == nil {
t.Errorf("check succeeded")
} else if _, ok := err.(*KeyError); !ok {
t.Errorf("got %T, want *KeyError", err)
}
}
func TestNegate(t *testing.T) {
str := fmt.Sprintf("%s,!server.org %s", testAddr, edKeyStr)
db := testDB(t, str)
@@ -354,3 +343,16 @@ func TestHashedHostkeyCheck(t *testing.T) {
t.Errorf("got error %v, want %v", got, want)
}
}
func TestIssue36126(t *testing.T) {
str := fmt.Sprintf("server.org,%s %s\nserver.org,%s %s", testAddr, edKeyStr, testAddr, alternateEdKeyStr)
db := testDB(t, str)
if err := db.check("server.org:22", testAddr, edKey); err != nil {
t.Errorf("should have passed the check, got %v", err)
}
if err := db.check("server.org:22", testAddr, alternateEdKey); err != nil {
t.Errorf("should have passed the check, got %v", err)
}
}
+2
View File
@@ -818,6 +818,8 @@ func decode(packet []byte) (interface{}, error) {
return new(userAuthSuccessMsg), nil
case msgUserAuthFailure:
msg = new(userAuthFailureMsg)
case msgUserAuthBanner:
msg = new(userAuthBannerMsg)
case msgUserAuthPubKeyOk:
msg = new(userAuthPubKeyOkMsg)
case msgGlobalRequest:
+56
View File
@@ -206,6 +206,62 @@ func TestMarshalMultiTag(t *testing.T) {
}
}
func TestDecode(t *testing.T) {
rnd := rand.New(rand.NewSource(0))
kexInit := new(kexInitMsg).Generate(rnd, 10).Interface()
kexDHInit := new(kexDHInitMsg).Generate(rnd, 10).Interface()
kexDHReply := new(kexDHReplyMsg)
kexDHReply.Y = randomInt(rnd)
// Note: userAuthSuccessMsg can't be tested directly since it
// doesn't have a field for sshtype. So it's tested separately
// at the end.
decodeMessageTypes := []interface{}{
new(disconnectMsg),
new(serviceRequestMsg),
new(serviceAcceptMsg),
new(extInfoMsg),
kexInit,
kexDHInit,
kexDHReply,
new(userAuthRequestMsg),
new(userAuthFailureMsg),
new(userAuthBannerMsg),
new(userAuthPubKeyOkMsg),
new(globalRequestMsg),
new(globalRequestSuccessMsg),
new(globalRequestFailureMsg),
new(channelOpenMsg),
new(channelDataMsg),
new(channelOpenConfirmMsg),
new(channelOpenFailureMsg),
new(windowAdjustMsg),
new(channelEOFMsg),
new(channelCloseMsg),
new(channelRequestMsg),
new(channelRequestSuccessMsg),
new(channelRequestFailureMsg),
new(userAuthGSSAPIToken),
new(userAuthGSSAPIMIC),
new(userAuthGSSAPIErrTok),
new(userAuthGSSAPIError),
}
for _, msg := range decodeMessageTypes {
decoded, err := decode(Marshal(msg))
if err != nil {
t.Errorf("error decoding %T", msg)
} else if reflect.TypeOf(msg) != reflect.TypeOf(decoded) {
t.Errorf("error decoding %T, unexpected %T", msg, decoded)
}
}
userAuthSuccess, err := decode([]byte{msgUserAuthSuccess})
if err != nil {
t.Errorf("error decoding userAuthSuccessMsg")
} else if reflect.TypeOf(userAuthSuccess) != reflect.TypeOf((*userAuthSuccessMsg)(nil)) {
t.Errorf("error decoding userAuthSuccessMsg, unexpected %T", userAuthSuccess)
}
}
func randomBytes(out []byte, rand *rand.Rand) {
for i := 0; i < len(out); i++ {
out[i] = byte(rand.Int31())
+187
View File
@@ -0,0 +1,187 @@
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build go1.24
package ssh
import (
"crypto"
"crypto/mlkem"
"crypto/sha256"
"errors"
"fmt"
"io"
"runtime"
"slices"
"golang.org/x/crypto/curve25519"
)
const (
kexAlgoMLKEM768xCurve25519SHA256 = "mlkem768x25519-sha256"
)
func init() {
// After Go 1.24rc1 mlkem swapped the order of return values of Encapsulate.
// See #70950.
if runtime.Version() == "go1.24rc1" {
return
}
supportedKexAlgos = slices.Insert(supportedKexAlgos, 0, kexAlgoMLKEM768xCurve25519SHA256)
preferredKexAlgos = slices.Insert(preferredKexAlgos, 0, kexAlgoMLKEM768xCurve25519SHA256)
kexAlgoMap[kexAlgoMLKEM768xCurve25519SHA256] = &mlkem768WithCurve25519sha256{}
}
// mlkem768WithCurve25519sha256 implements the hybrid ML-KEM768 with
// curve25519-sha256 key exchange method, as described by
// draft-kampanakis-curdle-ssh-pq-ke-05 section 2.3.3.
type mlkem768WithCurve25519sha256 struct{}
func (kex *mlkem768WithCurve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) {
var c25519kp curve25519KeyPair
if err := c25519kp.generate(rand); err != nil {
return nil, err
}
seed := make([]byte, mlkem.SeedSize)
if _, err := io.ReadFull(rand, seed); err != nil {
return nil, err
}
mlkemDk, err := mlkem.NewDecapsulationKey768(seed)
if err != nil {
return nil, err
}
hybridKey := append(mlkemDk.EncapsulationKey().Bytes(), c25519kp.pub[:]...)
if err := c.writePacket(Marshal(&kexECDHInitMsg{hybridKey})); err != nil {
return nil, err
}
packet, err := c.readPacket()
if err != nil {
return nil, err
}
var reply kexECDHReplyMsg
if err = Unmarshal(packet, &reply); err != nil {
return nil, err
}
if len(reply.EphemeralPubKey) != mlkem.CiphertextSize768+32 {
return nil, errors.New("ssh: peer's mlkem768x25519 public value has wrong length")
}
// Perform KEM decapsulate operation to obtain shared key from ML-KEM.
mlkem768Secret, err := mlkemDk.Decapsulate(reply.EphemeralPubKey[:mlkem.CiphertextSize768])
if err != nil {
return nil, err
}
// Complete Curve25519 ECDH to obtain its shared key.
c25519Secret, err := curve25519.X25519(c25519kp.priv[:], reply.EphemeralPubKey[mlkem.CiphertextSize768:])
if err != nil {
return nil, fmt.Errorf("ssh: peer's mlkem768x25519 public value is not valid: %w", err)
}
// Compute actual shared key.
h := sha256.New()
h.Write(mlkem768Secret)
h.Write(c25519Secret)
secret := h.Sum(nil)
h.Reset()
magics.write(h)
writeString(h, reply.HostKey)
writeString(h, hybridKey)
writeString(h, reply.EphemeralPubKey)
K := make([]byte, stringLength(len(secret)))
marshalString(K, secret)
h.Write(K)
return &kexResult{
H: h.Sum(nil),
K: K,
HostKey: reply.HostKey,
Signature: reply.Signature,
Hash: crypto.SHA256,
}, nil
}
func (kex *mlkem768WithCurve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (*kexResult, error) {
packet, err := c.readPacket()
if err != nil {
return nil, err
}
var kexInit kexECDHInitMsg
if err = Unmarshal(packet, &kexInit); err != nil {
return nil, err
}
if len(kexInit.ClientPubKey) != mlkem.EncapsulationKeySize768+32 {
return nil, errors.New("ssh: peer's ML-KEM768/curve25519 public value has wrong length")
}
encapsulationKey, err := mlkem.NewEncapsulationKey768(kexInit.ClientPubKey[:mlkem.EncapsulationKeySize768])
if err != nil {
return nil, fmt.Errorf("ssh: peer's ML-KEM768 encapsulation key is not valid: %w", err)
}
// Perform KEM encapsulate operation to obtain ciphertext and shared key.
mlkem768Secret, mlkem768Ciphertext := encapsulationKey.Encapsulate()
// Perform server side of Curve25519 ECDH to obtain server public value and
// shared key.
var c25519kp curve25519KeyPair
if err := c25519kp.generate(rand); err != nil {
return nil, err
}
c25519Secret, err := curve25519.X25519(c25519kp.priv[:], kexInit.ClientPubKey[mlkem.EncapsulationKeySize768:])
if err != nil {
return nil, fmt.Errorf("ssh: peer's ML-KEM768/curve25519 public value is not valid: %w", err)
}
hybridKey := append(mlkem768Ciphertext, c25519kp.pub[:]...)
// Compute actual shared key.
h := sha256.New()
h.Write(mlkem768Secret)
h.Write(c25519Secret)
secret := h.Sum(nil)
hostKeyBytes := priv.PublicKey().Marshal()
h.Reset()
magics.write(h)
writeString(h, hostKeyBytes)
writeString(h, kexInit.ClientPubKey)
writeString(h, hybridKey)
K := make([]byte, stringLength(len(secret)))
marshalString(K, secret)
h.Write(K)
H := h.Sum(nil)
sig, err := signAndMarshal(priv, rand, H, algo)
if err != nil {
return nil, err
}
reply := kexECDHReplyMsg{
EphemeralPubKey: hybridKey,
HostKey: hostKeyBytes,
Signature: sig,
}
if err := c.writePacket(Marshal(&reply)); err != nil {
return nil, err
}
return &kexResult{
H: H,
K: K,
HostKey: hostKeyBytes,
Signature: sig,
Hash: crypto.SHA256,
}, nil
}
+50 -19
View File
@@ -59,6 +59,27 @@ type GSSAPIWithMICConfig struct {
Server GSSAPIServer
}
// SendAuthBanner implements [ServerPreAuthConn].
func (s *connection) SendAuthBanner(msg string) error {
return s.transport.writePacket(Marshal(&userAuthBannerMsg{
Message: msg,
}))
}
func (*connection) unexportedMethodForFutureProofing() {}
// ServerPreAuthConn is the interface available on an incoming server
// connection before authentication has completed.
type ServerPreAuthConn interface {
unexportedMethodForFutureProofing() // permits growing ServerPreAuthConn safely later, ala testing.TB
ConnMetadata
// SendAuthBanner sends a banner message to the client.
// It returns an error once the authentication phase has ended.
SendAuthBanner(string) error
}
// ServerConfig holds server specific configuration data.
type ServerConfig struct {
// Config contains configuration shared between client and server.
@@ -118,6 +139,12 @@ type ServerConfig struct {
// attempts.
AuthLogCallback func(conn ConnMetadata, method string, err error)
// PreAuthConnCallback, if non-nil, is called upon receiving a new connection
// before any authentication has started. The provided ServerPreAuthConn
// can be used at any time before authentication is complete, including
// after this callback has returned.
PreAuthConnCallback func(ServerPreAuthConn)
// ServerVersion is the version identification string to announce in
// the public handshake.
// If empty, a reasonable default is used.
@@ -149,7 +176,7 @@ func (s *ServerConfig) AddHostKey(key Signer) {
}
// cachedPubKey contains the results of querying whether a public key is
// acceptable for a user.
// acceptable for a user. This is a FIFO cache.
type cachedPubKey struct {
user string
pubKeyData []byte
@@ -157,7 +184,13 @@ type cachedPubKey struct {
perms *Permissions
}
const maxCachedPubKeys = 16
// maxCachedPubKeys is the number of cache entries we store.
//
// Due to consistent misuse of the PublicKeyCallback API, we have reduced this
// to 1, such that the only key in the cache is the most recently seen one. This
// forces the behavior that the last call to PublicKeyCallback will always be
// with the key that is used for authentication.
const maxCachedPubKeys = 1
// pubKeyCache caches tests for public keys. Since SSH clients
// will query whether a public key is acceptable before attempting to
@@ -179,9 +212,10 @@ func (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) {
// add adds the given tuple to the cache.
func (c *pubKeyCache) add(candidate cachedPubKey) {
if len(c.keys) < maxCachedPubKeys {
c.keys = append(c.keys, candidate)
if len(c.keys) >= maxCachedPubKeys {
c.keys = c.keys[1:]
}
c.keys = append(c.keys, candidate)
}
// ServerConn is an authenticated SSH connection, as seen from the
@@ -481,6 +515,10 @@ func (b *BannerError) Error() string {
}
func (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, error) {
if config.PreAuthConnCallback != nil {
config.PreAuthConnCallback(s)
}
sessionID := s.transport.getSessionID()
var cache pubKeyCache
var perms *Permissions
@@ -488,7 +526,7 @@ func (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, err
authFailures := 0
noneAuthCount := 0
var authErrs []error
var displayedBanner bool
var calledBannerCallback bool
partialSuccessReturned := false
// Set the initial authentication callbacks from the config. They can be
// changed if a PartialSuccessError is returned.
@@ -510,8 +548,8 @@ userAuthLoop:
if err := s.transport.writePacket(Marshal(discMsg)); err != nil {
return nil, err
}
return nil, discMsg
authErrs = append(authErrs, discMsg)
return nil, &ServerAuthError{Errors: authErrs}
}
var userAuthReq userAuthRequestMsg
@@ -535,14 +573,10 @@ userAuthLoop:
s.user = userAuthReq.User
if !displayedBanner && config.BannerCallback != nil {
displayedBanner = true
msg := config.BannerCallback(s)
if msg != "" {
bannerMsg := &userAuthBannerMsg{
Message: msg,
}
if err := s.transport.writePacket(Marshal(bannerMsg)); err != nil {
if !calledBannerCallback && config.BannerCallback != nil {
calledBannerCallback = true
if msg := config.BannerCallback(s); msg != "" {
if err := s.SendAuthBanner(msg); err != nil {
return nil, err
}
}
@@ -755,10 +789,7 @@ userAuthLoop:
var bannerErr *BannerError
if errors.As(authErr, &bannerErr) {
if bannerErr.Message != "" {
bannerMsg := &userAuthBannerMsg{
Message: bannerErr.Message,
}
if err := s.transport.writePacket(Marshal(bannerMsg)); err != nil {
if err := s.SendAuthBanner(bannerErr.Message); err != nil {
return nil, err
}
}
+135
View File
@@ -5,6 +5,7 @@
package ssh
import (
"bytes"
"errors"
"fmt"
"io"
@@ -299,6 +300,140 @@ func TestBannerError(t *testing.T) {
}
}
func TestPublicKeyCallbackLastSeen(t *testing.T) {
var lastSeenKey PublicKey
c1, c2, err := netPipe()
if err != nil {
t.Fatalf("netPipe: %v", err)
}
defer c1.Close()
defer c2.Close()
serverConf := &ServerConfig{
PublicKeyCallback: func(conn ConnMetadata, key PublicKey) (*Permissions, error) {
lastSeenKey = key
fmt.Printf("seen %#v\n", key)
if _, ok := key.(*dsaPublicKey); !ok {
return nil, errors.New("nope")
}
return nil, nil
},
}
serverConf.AddHostKey(testSigners["ecdsap256"])
done := make(chan struct{})
go func() {
defer close(done)
NewServerConn(c1, serverConf)
}()
clientConf := ClientConfig{
User: "user",
Auth: []AuthMethod{
PublicKeys(testSigners["rsa"], testSigners["dsa"], testSigners["ed25519"]),
},
HostKeyCallback: InsecureIgnoreHostKey(),
}
_, _, _, err = NewClientConn(c2, "", &clientConf)
if err != nil {
t.Fatal(err)
}
<-done
expectedPublicKey := testSigners["dsa"].PublicKey().Marshal()
lastSeenMarshalled := lastSeenKey.Marshal()
if !bytes.Equal(lastSeenMarshalled, expectedPublicKey) {
t.Errorf("unexpected key: got %#v, want %#v", lastSeenKey, testSigners["dsa"].PublicKey())
}
}
func TestPreAuthConnAndBanners(t *testing.T) {
testDone := make(chan struct{})
defer close(testDone)
authConnc := make(chan ServerPreAuthConn, 1)
serverConfig := &ServerConfig{
PreAuthConnCallback: func(c ServerPreAuthConn) {
t.Logf("got ServerPreAuthConn: %v", c)
authConnc <- c // for use later in the test
for _, s := range []string{"hello1", "hello2"} {
if err := c.SendAuthBanner(s); err != nil {
t.Errorf("failed to send banner %q: %v", s, err)
}
}
// Now start a goroutine to spam SendAuthBanner in hopes
// of hitting a race.
go func() {
for {
select {
case <-testDone:
return
default:
if err := c.SendAuthBanner("attempted-race"); err != nil && err != errSendBannerPhase {
t.Errorf("unexpected error from SendAuthBanner: %v", err)
}
time.Sleep(5 * time.Millisecond)
}
}
}()
},
NoClientAuth: true,
NoClientAuthCallback: func(ConnMetadata) (*Permissions, error) {
t.Logf("got NoClientAuthCallback")
return &Permissions{}, nil
},
}
serverConfig.AddHostKey(testSigners["rsa"])
var banners []string
clientConfig := &ClientConfig{
User: "test",
HostKeyCallback: InsecureIgnoreHostKey(),
BannerCallback: func(msg string) error {
if msg != "attempted-race" {
banners = append(banners, msg)
}
return nil
},
}
c1, c2, err := netPipe()
if err != nil {
t.Fatalf("netPipe: %v", err)
}
defer c1.Close()
defer c2.Close()
go newServer(c1, serverConfig)
c, _, _, err := NewClientConn(c2, "", clientConfig)
if err != nil {
t.Fatalf("client connection failed: %v", err)
}
defer c.Close()
wantBanners := []string{
"hello1",
"hello2",
}
if !reflect.DeepEqual(banners, wantBanners) {
t.Errorf("got banners:\n%q\nwant banners:\n%q", banners, wantBanners)
}
// Now that we're authenticated, verify that use of SendBanner
// is an error.
var bc ServerPreAuthConn
select {
case bc = <-authConnc:
default:
t.Fatal("expected ServerPreAuthConn")
}
if err := bc.SendAuthBanner("wrong-phase"); err == nil {
t.Error("unexpected success of SendAuthBanner after authentication")
} else if err != errSendBannerPhase {
t.Errorf("unexpected error: %v; want %v", err, errSendBannerPhase)
}
}
type markerConn struct {
closed uint32
used uint32
+1 -1
View File
@@ -459,7 +459,7 @@ func (c *Client) dial(laddr string, lport int, raddr string, rport int) (Channel
return nil, err
}
go DiscardRequests(in)
return ch, err
return ch, nil
}
type tcpChan struct {
-31
View File
@@ -1,31 +0,0 @@
// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
package test
import (
"testing"
)
func TestBannerCallbackAgainstOpenSSH(t *testing.T) {
server := newServer(t)
clientConf := clientConfig()
var receivedBanner string
clientConf.BannerCallback = func(message string) error {
receivedBanner = message
return nil
}
conn := server.Dial(clientConf)
defer conn.Close()
expected := "Server Banner"
if receivedBanner != expected {
t.Fatalf("got %v; want %v", receivedBanner, expected)
}
}
+1 -1
View File
@@ -94,7 +94,7 @@ func testPortForward(t *testing.T, n, listenAddr string) {
if len(sent) != len(read) {
t.Fatalf("got %d bytes, want %d", len(read), len(sent))
}
if bytes.Compare(sent, read) != 0 {
if !bytes.Equal(sent, read) {
t.Fatalf("read back data does not match")
}
+504
View File
@@ -0,0 +1,504 @@
// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package test
import (
"bytes"
"errors"
"fmt"
"io"
"net"
"os"
"os/exec"
"path/filepath"
"runtime"
"strconv"
"strings"
"sync"
"testing"
"time"
"golang.org/x/crypto/internal/testenv"
"golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh/testdata"
)
// serverPort contains the port that OpenSSH will listen on. OpenSSH can't take
// "0" as an argument here so we have to pick a number and hope that it's not in
// use on the machine. Since this only occurs when -update is given and thus
// when there's a human watching the test, this isn't too bad.
const serverPort = 24222
var (
storeUsernameOnce sync.Once
)
type clientTest struct {
// name is a freeform string identifying the test and the file in which
// the expected results will be stored.
name string
// config contains the client configuration to use for this test.
config *ssh.ClientConfig
// expectError defines the error string to check if the connection is
// expected to fail.
expectError string
// successCallback defines a callback to execute after the client connection
// is established.
successCallback func(t *testing.T, client *ssh.Client)
}
// connFromCommand starts the reference server process, connects to it and
// returns a recordingConn for the connection. It must be closed before Waiting
// for child.
func (test *clientTest) connFromCommand(t *testing.T, config string) *recordingConn {
sshd, err := exec.LookPath("sshd")
if err != nil {
t.Skipf("sshd not found, skipping test: %v", err)
}
dir, err := os.MkdirTemp("", "sshtest")
if err != nil {
t.Fatal(err)
}
f, err := os.Create(filepath.Join(dir, "sshd_config"))
if err != nil {
t.Fatal(err)
}
if _, ok := configTmpl[config]; ok == false {
t.Fatal(fmt.Errorf("Invalid server config '%s'", config))
}
configVars := map[string]string{
"Dir": dir,
}
err = configTmpl[config].Execute(f, configVars)
if err != nil {
t.Fatal(err)
}
f.Close()
writeFile(filepath.Join(dir, "banner"), []byte("Server Banner"))
for k, v := range testdata.PEMBytes {
filename := "id_" + k
writeFile(filepath.Join(dir, filename), v)
writeFile(filepath.Join(dir, filename+".pub"), ssh.MarshalAuthorizedKey(testPublicKeys[k]))
}
var authkeys bytes.Buffer
for k := range testdata.PEMBytes {
authkeys.Write(ssh.MarshalAuthorizedKey(testPublicKeys[k]))
}
writeFile(filepath.Join(dir, "authorized_keys"), authkeys.Bytes())
cmd := testenv.Command(t, sshd, "-D", "-e", "-f", f.Name(), "-p", strconv.Itoa(serverPort))
cmd.Stdin = nil
var output bytes.Buffer
cmd.Stdout = &output
cmd.Stderr = &output
if err := cmd.Start(); err != nil {
t.Fatal(err)
}
t.Cleanup(func() {
if err := os.RemoveAll(dir); err != nil {
t.Error(err)
}
// Don't check for errors; if it fails it's most
// likely "os: process already finished", and we don't
// care about that. Use os.Interrupt, so child
// processes are killed too.
cmd.Process.Signal(os.Interrupt)
cmd.Wait()
if t.Failed() {
t.Logf("OpenSSH output:\n\n%s", cmd.Stdout)
}
})
var tcpConn net.Conn
for i := uint(0); i < 5; i++ {
tcpConn, err = net.DialTCP("tcp", nil, &net.TCPAddr{
IP: net.IPv4(127, 0, 0, 1),
Port: serverPort,
})
if err == nil {
break
}
time.Sleep((1 << i) * 5 * time.Millisecond)
}
if err != nil {
t.Fatalf("error connecting to the OpenSSH server: %v (%v)\n\n%s", err, cmd.Wait(), output.Bytes())
}
record := &recordingConn{
Conn: tcpConn,
clientToServer: true,
}
return record
}
func (test *clientTest) dataPath() string {
return filepath.Join("..", "testdata", "Client-"+test.name)
}
func (test *clientTest) usernameDataPath() string {
return filepath.Join("..", "testdata", "Client-username")
}
func (test *clientTest) loadData() (flows [][]byte, err error) {
in, err := os.Open(test.dataPath())
if err != nil {
return nil, err
}
defer in.Close()
return parseTestData(in)
}
func (test *clientTest) storeUsername() (err error) {
storeUsernameOnce.Do(func() {
err = os.WriteFile(test.usernameDataPath(), []byte(username()), 0666)
})
return err
}
func (test *clientTest) loadUsername() (string, error) {
data, err := os.ReadFile(test.usernameDataPath())
return string(data), err
}
func (test *clientTest) run(t *testing.T, write bool) {
var clientConn net.Conn
var recordingConn *recordingConn
setDeterministicRandomSource(&test.config.Config)
if write {
// We store the username used when we record the connection so we can
// reuse the same username when running tests.
if err := test.storeUsername(); err != nil {
t.Fatalf("failed to store username to %q: %v", test.usernameDataPath(), err)
}
recordingConn = test.connFromCommand(t, "default")
clientConn = recordingConn
} else {
username, err := test.loadUsername()
if err != nil {
t.Fatalf("failed to load username from %q: %v", test.usernameDataPath(), err)
}
test.config.User = username
timer := time.AfterFunc(10*time.Second, func() {
fmt.Println("This test may be stuck, try running using -timeout 10s")
})
t.Cleanup(func() {
timer.Stop()
})
flows, err := test.loadData()
if err != nil {
t.Fatalf("failed to load data from %s: %v", test.dataPath(), err)
}
clientConn = newReplayingConn(t, flows)
}
c, chans, reqs, err := ssh.NewClientConn(clientConn, "", test.config)
if err != nil {
if test.expectError == "" {
t.Fatal(err)
} else {
if !strings.Contains(err.Error(), test.expectError) {
t.Fatalf("%q not found in %v", test.expectError, err)
}
}
} else {
if test.expectError != "" {
t.Error("dial should have failed.")
}
client := ssh.NewClient(c, chans, reqs)
if test.successCallback != nil {
test.successCallback(t, client)
}
if err := client.Close(); err != nil {
t.Fatal(err)
}
}
if write {
path := test.dataPath()
out, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
t.Fatalf("Failed to create output file: %v", err)
}
defer out.Close()
recordingConn.Close()
recordingConn.WriteTo(out)
t.Logf("Wrote %s\n", path)
}
}
func recordingsClientConfig() *ssh.ClientConfig {
config := clientConfig()
config.SetDefaults()
// Remove ML-KEM since it only works with Go 1.24.
if config.KeyExchanges[0] == "mlkem768x25519-sha256" {
config.KeyExchanges = config.KeyExchanges[1:]
}
config.Auth = []ssh.AuthMethod{
ssh.PublicKeys(testSigners["rsa"]),
}
return config
}
func TestClientKeyExchanges(t *testing.T) {
config := ssh.ClientConfig{}
config.SetDefaults()
var keyExchanges []string
for _, kex := range config.KeyExchanges {
// Exclude ecdh for now, to make them determistic we should use see a
// stream of fixed bytes as the random source.
if !strings.HasPrefix(kex, "ecdh-") {
keyExchanges = append(keyExchanges, kex)
}
}
// Add diffie-hellman-group-exchange-sha256 and
// diffie-hellman-group16-sha512 as they are not enabled by default.
keyExchanges = append(keyExchanges, "diffie-hellman-group-exchange-sha256", "diffie-hellman-group16-sha512")
for _, kex := range keyExchanges {
c := recordingsClientConfig()
c.KeyExchanges = []string{kex}
test := clientTest{
name: "KEX-" + kex,
config: c,
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
}
func TestClientCiphers(t *testing.T) {
config := ssh.ClientConfig{}
config.SetDefaults()
for _, ciph := range config.Ciphers {
c := recordingsClientConfig()
c.Ciphers = []string{ciph}
test := clientTest{
name: "Cipher-" + ciph,
config: c,
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
}
func TestClientMACs(t *testing.T) {
config := ssh.ClientConfig{}
config.SetDefaults()
for _, mac := range config.MACs {
c := recordingsClientConfig()
c.MACs = []string{mac}
test := clientTest{
name: "MAC-" + mac,
config: c,
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
}
func TestBannerCallback(t *testing.T) {
var receivedBanner string
config := recordingsClientConfig()
config.BannerCallback = func(message string) error {
receivedBanner = message
return nil
}
test := clientTest{
name: "BannerCallback",
config: config,
successCallback: func(t *testing.T, client *ssh.Client) {
expected := "Server Banner"
if receivedBanner != expected {
t.Fatalf("got %v; want %v", receivedBanner, expected)
}
},
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
func TestRunCommandSuccess(t *testing.T) {
if runtime.GOARCH == "wasm" {
t.Skip("skipping test, executing a command, session.Run(), is not supported on wasm")
}
test := clientTest{
name: "RunCommandSuccess",
config: recordingsClientConfig(),
successCallback: func(t *testing.T, client *ssh.Client) {
session, err := client.NewSession()
if err != nil {
t.Fatalf("session failed: %v", err)
}
defer session.Close()
err = session.Run("true")
if err != nil {
t.Fatalf("session failed: %v", err)
}
},
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
func TestHostKeyCheck(t *testing.T) {
config := recordingsClientConfig()
hostDB := hostKeyDB()
config.HostKeyCallback = hostDB.Check
// change the keys.
hostDB.keys[ssh.KeyAlgoRSA][25]++
hostDB.keys[ssh.KeyAlgoDSA][25]++
hostDB.keys[ssh.KeyAlgoECDSA256][25]++
test := clientTest{
name: "HostKeyCheck",
config: config,
expectError: "host key mismatch",
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
func TestRunCommandStdin(t *testing.T) {
if runtime.GOARCH == "wasm" {
t.Skip("skipping test, executing a command, session.Run(), is not supported on wasm")
}
test := clientTest{
name: "RunCommandStdin",
config: recordingsClientConfig(),
successCallback: func(t *testing.T, client *ssh.Client) {
session, err := client.NewSession()
if err != nil {
t.Fatalf("session failed: %v", err)
}
defer session.Close()
r, w := io.Pipe()
defer r.Close()
defer w.Close()
session.Stdin = r
err = session.Run("true")
if err != nil {
t.Fatalf("session failed: %v", err)
}
},
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
func TestRunCommandStdinError(t *testing.T) {
if runtime.GOARCH == "wasm" {
t.Skip("skipping test, executing a command, session.Run(), is not supported on wasm")
}
test := clientTest{
name: "RunCommandStdinError",
config: recordingsClientConfig(),
successCallback: func(t *testing.T, client *ssh.Client) {
session, err := client.NewSession()
if err != nil {
t.Fatalf("session failed: %v", err)
}
defer session.Close()
r, w := io.Pipe()
defer r.Close()
session.Stdin = r
pipeErr := errors.New("closing write end of pipe")
w.CloseWithError(pipeErr)
err = session.Run("true")
if err != pipeErr {
t.Fatalf("expected %v, found %v", pipeErr, err)
}
},
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
func TestRunCommandFailed(t *testing.T) {
if runtime.GOARCH == "wasm" {
t.Skip("skipping test, executing a command, session.Run(), is not supported on wasm")
}
test := clientTest{
name: "RunCommandFailed",
config: recordingsClientConfig(),
successCallback: func(t *testing.T, client *ssh.Client) {
session, err := client.NewSession()
if err != nil {
t.Fatalf("session failed: %v", err)
}
defer session.Close()
// Trigger a failure by attempting to execute a non-existent
// command.
err = session.Run(`non-existent command`)
if err == nil {
t.Fatalf("session succeeded: %v", err)
}
},
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
func TestWindowChange(t *testing.T) {
if runtime.GOARCH == "wasm" {
t.Skip("skipping test, stdin/out are not supported on wasm")
}
test := clientTest{
name: "WindowChange",
config: recordingsClientConfig(),
successCallback: func(t *testing.T, client *ssh.Client) {
session, err := client.NewSession()
if err != nil {
t.Fatalf("session failed: %v", err)
}
defer session.Close()
stdout, err := session.StdoutPipe()
if err != nil {
t.Fatalf("unable to acquire stdout pipe: %s", err)
}
stdin, err := session.StdinPipe()
if err != nil {
t.Fatalf("unable to acquire stdin pipe: %s", err)
}
tm := ssh.TerminalModes{ssh.ECHO: 0}
if err = session.RequestPty("xterm", 80, 40, tm); err != nil {
t.Fatalf("req-pty failed: %s", err)
}
if err := session.WindowChange(100, 100); err != nil {
t.Fatalf("window-change failed: %s", err)
}
err = session.Shell()
if err != nil {
t.Fatalf("session failed: %s", err)
}
stdin.Write([]byte("stty size && exit\n"))
var buf bytes.Buffer
if _, err := io.Copy(&buf, stdout); err != nil {
t.Fatalf("reading failed: %s", err)
}
if sttyOutput := buf.String(); !strings.Contains(sttyOutput, "100 100") {
t.Fatalf("terminal WindowChange failure: expected \"100 100\" stty output, got %s", sttyOutput)
}
},
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
+284
View File
@@ -0,0 +1,284 @@
// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package test
import (
"bytes"
"errors"
"fmt"
"net"
"os"
"os/exec"
"path/filepath"
"strconv"
"strings"
"testing"
"time"
"golang.org/x/crypto/internal/testenv"
"golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh/testdata"
)
type serverTest struct {
// name is a freeform string identifying the test and the file in which
// the expected results will be stored.
name string
// config contains the server configuration to use for this test.
config *ssh.ServerConfig
}
// connFromCommand starts opens a listening socket and starts the reference
// client to connect to it. It returns a recordingConn that wraps the resulting
// connection.
func (test *serverTest) connFromCommand(t *testing.T) (conn *recordingConn, err error) {
sshCLI, err := exec.LookPath("ssh")
if err != nil {
t.Skipf("skipping test: %v", err)
}
l, err := net.ListenTCP("tcp", &net.TCPAddr{
IP: net.IPv4(127, 0, 0, 1),
Port: 0,
})
if err != nil {
return nil, err
}
defer l.Close()
port := l.Addr().(*net.TCPAddr).Port
dir, err := os.MkdirTemp("", "sshtest")
if err != nil {
t.Fatal(err)
}
filename := "id_ed25519"
writeFile(filepath.Join(dir, filename), testdata.PEMBytes["ed25519"])
writeFile(filepath.Join(dir, filename+".pub"), ssh.MarshalAuthorizedKey(testPublicKeys["ed25519"]))
var args []string
args = append(args, "-v", "-i", filepath.Join(dir, filename), "-o", "StrictHostKeyChecking=no")
args = append(args, "-oKexAlgorithms=+diffie-hellman-group14-sha1")
args = append(args, "-p", strconv.Itoa(port))
args = append(args, "testuser@127.0.0.1")
args = append(args, "true")
cmd := testenv.Command(t, sshCLI, args...)
cmd.Stdin = nil
var output bytes.Buffer
cmd.Stdout = &output
cmd.Stderr = &output
if err := cmd.Start(); err != nil {
return nil, err
}
t.Cleanup(func() {
if err := os.RemoveAll(dir); err != nil {
t.Error(err)
}
// Don't check for errors; if it fails it's most
// likely "os: process already finished", and we don't
// care about that.
cmd.Process.Kill()
cmd.Wait()
if t.Failed() {
t.Logf("OpenSSH output:\n\n%s", cmd.Stdout)
}
})
connChan := make(chan any, 1)
go func() {
tcpConn, err := l.Accept()
if err != nil {
connChan <- err
return
}
connChan <- tcpConn
}()
var tcpConn net.Conn
select {
case connOrError := <-connChan:
if err, ok := connOrError.(error); ok {
return nil, err
}
tcpConn = connOrError.(net.Conn)
case <-time.After(2 * time.Second):
return nil, errors.New("timed out waiting for connection from child process")
}
record := &recordingConn{
Conn: tcpConn,
clientToServer: false,
}
return record, nil
}
func (test *serverTest) dataPath() string {
return filepath.Join("..", "testdata", "Server-"+test.name)
}
func (test *serverTest) loadData() (flows [][]byte, err error) {
in, err := os.Open(test.dataPath())
if err != nil {
return nil, err
}
defer in.Close()
return parseTestData(in)
}
func (test *serverTest) run(t *testing.T, write bool) {
var serverConn net.Conn
var recordingConn *recordingConn
setDeterministicRandomSource(&test.config.Config)
if write {
var err error
recordingConn, err = test.connFromCommand(t)
if err != nil {
t.Fatalf("Failed to start subcommand: %v", err)
}
serverConn = recordingConn
} else {
timer := time.AfterFunc(10*time.Second, func() {
fmt.Println("This test may be stuck, try running using -timeout 10s")
})
t.Cleanup(func() {
timer.Stop()
})
flows, err := test.loadData()
if err != nil {
t.Fatalf("Failed to load data from %s", test.dataPath())
}
serverConn = newReplayingConn(t, flows)
}
server, chans, reqs, err := ssh.NewServerConn(serverConn, test.config)
if err != nil {
t.Fatalf("Failed to create server conn: %v", err)
}
defer server.Close()
go ssh.DiscardRequests(reqs)
done := make(chan bool)
for newChannel := range chans {
if newChannel.ChannelType() != "session" {
newChannel.Reject(ssh.UnknownChannelType, "unknown channel type")
continue
}
channel, requests, err := newChannel.Accept()
if err != nil {
continue
}
go func(in <-chan *ssh.Request) {
for req := range in {
switch req.Type {
case "exec":
if req.WantReply {
req.Reply(true, nil)
}
channel.SendRequest("exit-status", false, ssh.Marshal(&exitStatusMsg{Status: 0}))
channel.Close()
done <- true
default:
if req.WantReply {
req.Reply(false, nil)
}
}
}
}(requests)
}
<-done
if write {
path := test.dataPath()
out, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
t.Fatalf("Failed to create output file: %v", err)
}
defer out.Close()
recordingConn.Close()
recordingConn.WriteTo(out)
t.Logf("Wrote %s\n", path)
}
}
func recordingsServerConfig() *ssh.ServerConfig {
config := &ssh.ServerConfig{
PublicKeyCallback: func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) {
return nil, nil
},
}
config.SetDefaults()
// Remove ML-KEM since it only works with Go 1.24.
config.SetDefaults()
if config.KeyExchanges[0] == "mlkem768x25519-sha256" {
config.KeyExchanges = config.KeyExchanges[1:]
}
config.AddHostKey(testSigners["rsa"])
return config
}
func TestServerKeyExchanges(t *testing.T) {
config := ssh.ClientConfig{}
config.SetDefaults()
var keyExchanges []string
for _, kex := range config.KeyExchanges {
// Exclude ecdh for now, to make them determistic we should use see a
// stream of fixed bytes as the random source.
// Exclude ML-KEM because server side is not deterministic.
if !strings.HasPrefix(kex, "ecdh-") && !strings.HasPrefix(kex, "mlkem") {
keyExchanges = append(keyExchanges, kex)
}
}
// Add diffie-hellman-group16-sha512 as it is not enabled by default.
keyExchanges = append(keyExchanges, "diffie-hellman-group16-sha512")
for _, kex := range keyExchanges {
c := recordingsServerConfig()
c.KeyExchanges = []string{kex}
test := serverTest{
name: "KEX-" + kex,
config: c,
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
}
func TestServerCiphers(t *testing.T) {
config := ssh.ClientConfig{}
config.SetDefaults()
for _, ciph := range config.Ciphers {
c := recordingsServerConfig()
c.Ciphers = []string{ciph}
test := serverTest{
name: "Cipher-" + ciph,
config: c,
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
}
func TestServerMACs(t *testing.T) {
config := ssh.ClientConfig{}
config.SetDefaults()
for _, mac := range config.MACs {
c := recordingsServerConfig()
c.MACs = []string{mac}
test := serverTest{
name: "MAC-" + mac,
config: c,
}
runTestAndUpdateIfNeeded(t, test.name, test.run)
}
}
+433
View File
@@ -0,0 +1,433 @@
// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package test
import (
"bufio"
"bytes"
"encoding/hex"
"errors"
"flag"
"fmt"
"io"
"log"
"net"
"os"
"os/user"
"strconv"
"strings"
"sync"
"testing"
"text/template"
"time"
"golang.org/x/crypto/sha3"
"golang.org/x/crypto/ssh"
)
const (
defaultSSHDConfig = `
Protocol 2
Banner {{.Dir}}/banner
HostKey {{.Dir}}/id_rsa
HostKey {{.Dir}}/id_dsa
HostKey {{.Dir}}/id_ecdsa
HostCertificate {{.Dir}}/id_rsa-sha2-512-cert.pub
Pidfile {{.Dir}}/sshd.pid
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel DEBUG2
LoginGraceTime 120
PermitRootLogin no
StrictModes no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile {{.Dir}}/authorized_keys
TrustedUserCAKeys {{.Dir}}/id_ecdsa.pub
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PubkeyAcceptedKeyTypes=*
# In recent versions of OpenSSH, Diffie-Hellman key exchange algorithms
# are disabled by default. However, they are still included in our default
# Key Exchange (KEX) configuration. We explicitly enable them here to
# maintain compatibility for our test cases.
KexAlgorithms +diffie-hellman-group14-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group-exchange-sha256
`
multiAuthSshdConfigTail = `
UsePAM yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
AuthenticationMethods {{.AuthMethods}}
`
maxAuthTriesSshdConfigTail = `
PasswordAuthentication yes
MaxAuthTries 1
`
)
var configTmpl = map[string]*template.Template{
"default": template.Must(template.New("").Parse(defaultSSHDConfig)),
"MultiAuth": template.Must(template.New("").Parse(defaultSSHDConfig + multiAuthSshdConfigTail)),
"MaxAuthTries": template.Must(template.New("").Parse(defaultSSHDConfig + maxAuthTriesSshdConfigTail))}
type server struct {
t *testing.T
configfile string
testUser string // test username for sshd
testPasswd string // test password for sshd
sshdTestPwSo string // dynamic library to inject a custom password into sshd
lastDialConn net.Conn
}
type storedHostKey struct {
// keys map from an algorithm string to binary key data.
keys map[string][]byte
// checkCount counts the Check calls. Used for testing
// rekeying.
checkCount int
}
func (k *storedHostKey) Add(key ssh.PublicKey) {
if k.keys == nil {
k.keys = map[string][]byte{}
}
k.keys[key.Type()] = key.Marshal()
}
func (k *storedHostKey) Check(addr string, remote net.Addr, key ssh.PublicKey) error {
k.checkCount++
algo := key.Type()
if k.keys == nil || !bytes.Equal(key.Marshal(), k.keys[algo]) {
return fmt.Errorf("host key mismatch. Got %q, want %q", key, k.keys[algo])
}
return nil
}
func hostKeyDB() *storedHostKey {
keyChecker := &storedHostKey{}
keyChecker.Add(testPublicKeys["ecdsa"])
keyChecker.Add(testPublicKeys["rsa"])
keyChecker.Add(testPublicKeys["dsa"])
return keyChecker
}
func clientConfig() *ssh.ClientConfig {
config := &ssh.ClientConfig{
User: username(),
Auth: []ssh.AuthMethod{
ssh.PublicKeys(testSigners["user"]),
},
HostKeyCallback: hostKeyDB().Check,
HostKeyAlgorithms: []string{ // by default, don't allow certs as this affects the hostKeyDB checker
ssh.KeyAlgoECDSA256, ssh.KeyAlgoECDSA384, ssh.KeyAlgoECDSA521,
ssh.KeyAlgoRSA, ssh.KeyAlgoDSA,
ssh.KeyAlgoED25519,
},
}
return config
}
// SSH reference tests run a connection against a reference implementation
// (OpenSSH) of SSH and record the bytes of the resulting connection. The Go
// code, during a test, is configured with deterministic randomness and so the
// reference test can be reproduced exactly in the future.
//
// In order to save everyone who wishes to run the tests from needing the
// reference implementation installed, the reference connections are saved in
// files in the testdata directory. Thus running the tests involves nothing
// external, but creating and updating them requires the reference
// implementation.
//
// Tests can be updated by running them with the -update flag. This will cause
// the test files for failing tests to be regenerated. Since the reference
// implementation will always generate fresh random numbers, large parts of the
// reference connection will always change.
var (
update = flag.Bool("update", false, "update golden files on failure")
)
func runTestAndUpdateIfNeeded(t *testing.T, name string, run func(t *testing.T, update bool)) {
success := t.Run(name, func(t *testing.T) {
if !*update {
t.Parallel()
}
run(t, false)
})
if !success && *update {
t.Run(name+"#update", func(t *testing.T) {
run(t, true)
})
}
}
// recordingConn is a net.Conn that records the traffic that passes through it.
// WriteTo can be used to produce output that can be later be loaded with
// ParseTestData.
type recordingConn struct {
net.Conn
clientToServer bool
sync.Mutex
flows [][]byte
reading bool
}
func (r *recordingConn) Read(b []byte) (n int, err error) {
if n, err = r.Conn.Read(b); n == 0 {
return
}
b = b[:n]
r.Lock()
defer r.Unlock()
if l := len(r.flows); l == 0 || !r.reading {
buf := make([]byte, len(b))
copy(buf, b)
r.flows = append(r.flows, buf)
} else {
r.flows[l-1] = append(r.flows[l-1], b[:n]...)
}
r.reading = true
return
}
func (r *recordingConn) Write(b []byte) (n int, err error) {
if n, err = r.Conn.Write(b); n == 0 {
return
}
b = b[:n]
r.Lock()
defer r.Unlock()
if l := len(r.flows); l == 0 || r.reading {
buf := make([]byte, len(b))
copy(buf, b)
r.flows = append(r.flows, buf)
} else {
r.flows[l-1] = append(r.flows[l-1], b[:n]...)
}
r.reading = false
return
}
// WriteTo writes Go source code to w that contains the recorded traffic.
func (r *recordingConn) WriteTo(w io.Writer) (int64, error) {
var written int64
for i, flow := range r.flows {
source, dest := "client", "server"
if !r.clientToServer {
source, dest = dest, source
}
n, err := fmt.Fprintf(w, ">>> Flow %d (%s to %s)\n", i+1, source, dest)
written += int64(n)
if err != nil {
return written, err
}
dumper := hex.Dumper(w)
n, err = dumper.Write(flow)
written += int64(n)
if err != nil {
return written, err
}
err = dumper.Close()
if err != nil {
return written, err
}
r.clientToServer = !r.clientToServer
}
return written, nil
}
func parseTestData(r io.Reader) (flows [][]byte, err error) {
var currentFlow []byte
scanner := bufio.NewScanner(r)
for scanner.Scan() {
line := scanner.Text()
// If the line starts with ">>> " then it marks the beginning
// of a new flow.
if strings.HasPrefix(line, ">>> ") {
if len(currentFlow) > 0 || len(flows) > 0 {
flows = append(flows, currentFlow)
currentFlow = nil
}
continue
}
// Otherwise the line is a line of hex dump that looks like:
// 00000170 fc f5 06 bf (...) |.....X{&?......!|
// (Some bytes have been omitted from the middle section.)
_, after, ok := strings.Cut(line, " ")
if !ok {
return nil, errors.New("invalid test data")
}
line = after
before, _, ok := strings.Cut(line, "|")
if !ok {
return nil, errors.New("invalid test data")
}
line = before
hexBytes := strings.Fields(line)
for _, hexByte := range hexBytes {
val, err := strconv.ParseUint(hexByte, 16, 8)
if err != nil {
return nil, errors.New("invalid hex byte in test data: " + err.Error())
}
currentFlow = append(currentFlow, byte(val))
}
}
if len(currentFlow) > 0 {
flows = append(flows, currentFlow)
}
return flows, nil
}
func newReplayingConn(t testing.TB, flows [][]byte) net.Conn {
r := &replayingConn{
t: t,
flows: flows,
reading: false,
}
r.readCond = sync.NewCond(&r.Mutex)
return r
}
// replayingConn is a net.Conn that replays flows recorded by recordingConn.
type replayingConn struct {
t testing.TB
sync.Mutex
flows [][]byte
reading bool
// SSH channels use a read loop goroutine, we use this condition to wait
// until we are ready to read/write.
readCond *sync.Cond
}
var _ net.Conn = (*replayingConn)(nil)
func (r *replayingConn) Read(b []byte) (n int, err error) {
r.Lock()
defer r.Unlock()
for !r.reading {
r.readCond.Wait()
}
// Some tests run commands that return no output.
if len(r.flows) == 0 {
return 0, nil
}
n = copy(b, r.flows[0])
r.flows[0] = r.flows[0][n:]
if len(r.flows[0]) == 0 {
r.flows = r.flows[1:]
r.reading = false
r.readCond.Broadcast()
if len(r.flows) == 0 {
return n, io.EOF
}
}
return n, nil
}
func (r *replayingConn) Write(b []byte) (n int, err error) {
r.Lock()
defer r.Unlock()
for r.reading {
r.readCond.Wait()
}
if !bytes.HasPrefix(r.flows[0], b) {
r.t.Errorf("write mismatch: expected %x, got %x", r.flows[0], b)
r.reading = true
r.readCond.Broadcast()
return 0, fmt.Errorf("write mismatch")
}
r.flows[0] = r.flows[0][len(b):]
if len(r.flows[0]) == 0 {
r.flows = r.flows[1:]
r.reading = true
r.readCond.Broadcast()
}
return len(b), nil
}
func (r *replayingConn) Close() error {
r.Lock()
defer r.Unlock()
if len(r.flows) > 0 {
r.t.Errorf("closed with unfinished flows: %d", len(r.flows))
return fmt.Errorf("unexpected close")
}
return nil
}
func (r *replayingConn) LocalAddr() net.Addr { return nil }
func (r *replayingConn) RemoteAddr() net.Addr { return nil }
func (r *replayingConn) SetDeadline(_ time.Time) error { return nil }
func (r *replayingConn) SetReadDeadline(_ time.Time) error { return nil }
func (r *replayingConn) SetWriteDeadline(_ time.Time) error { return nil }
func username() string {
var username string
if user, err := user.Current(); err == nil {
username = user.Username
} else {
// user.Current() currently requires cgo. If an error is
// returned attempt to get the username from the environment.
log.Printf("user.Current: %v; falling back on $USER", err)
username = os.Getenv("USER")
}
if username == "" {
panic("Unable to get username")
}
return username
}
func writeFile(path string, contents []byte) {
f, err := os.OpenFile(path, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0600)
if err != nil {
panic(err)
}
defer f.Close()
if _, err := f.Write(contents); err != nil {
panic(err)
}
}
// setDeterministicRandomSource sets a deterministic random source for the
// provided ssh.Config. It is intended solely for use in test cases, as
// deterministic randomness is insecure and should never be used in production
// environments. A deterministic random source is required to enable consistent
// testing against recorded session files.
func setDeterministicRandomSource(config *ssh.Config) {
config.Rand = sha3.NewShake128()
}
func TestMain(m *testing.M) {
flag.Usage = func() {
fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n", os.Args)
flag.PrintDefaults()
}
flag.Parse()
os.Exit(m.Run())
}
-205
View File
@@ -10,7 +10,6 @@ package test
import (
"bytes"
"errors"
"fmt"
"io"
"path/filepath"
@@ -29,108 +28,6 @@ func skipIfIssue64959(t *testing.T, err error) {
}
}
func TestRunCommandSuccess(t *testing.T) {
server := newServer(t)
conn := server.Dial(clientConfig())
defer conn.Close()
session, err := conn.NewSession()
if err != nil {
skipIfIssue64959(t, err)
t.Fatalf("session failed: %v", err)
}
defer session.Close()
err = session.Run("true")
if err != nil {
t.Fatalf("session failed: %v", err)
}
}
func TestHostKeyCheck(t *testing.T) {
server := newServer(t)
conf := clientConfig()
hostDB := hostKeyDB()
conf.HostKeyCallback = hostDB.Check
// change the keys.
hostDB.keys[ssh.KeyAlgoRSA][25]++
hostDB.keys[ssh.KeyAlgoDSA][25]++
hostDB.keys[ssh.KeyAlgoECDSA256][25]++
conn, err := server.TryDial(conf)
if err == nil {
conn.Close()
t.Fatalf("dial should have failed.")
} else if !strings.Contains(err.Error(), "host key mismatch") {
t.Fatalf("'host key mismatch' not found in %v", err)
}
}
func TestRunCommandStdin(t *testing.T) {
server := newServer(t)
conn := server.Dial(clientConfig())
defer conn.Close()
session, err := conn.NewSession()
if err != nil {
skipIfIssue64959(t, err)
t.Fatalf("session failed: %v", err)
}
defer session.Close()
r, w := io.Pipe()
defer r.Close()
defer w.Close()
session.Stdin = r
err = session.Run("true")
if err != nil {
t.Fatalf("session failed: %v", err)
}
}
func TestRunCommandStdinError(t *testing.T) {
server := newServer(t)
conn := server.Dial(clientConfig())
defer conn.Close()
session, err := conn.NewSession()
if err != nil {
skipIfIssue64959(t, err)
t.Fatalf("session failed: %v", err)
}
defer session.Close()
r, w := io.Pipe()
defer r.Close()
session.Stdin = r
pipeErr := errors.New("closing write end of pipe")
w.CloseWithError(pipeErr)
err = session.Run("true")
if err != pipeErr {
t.Fatalf("expected %v, found %v", pipeErr, err)
}
}
func TestRunCommandFailed(t *testing.T) {
server := newServer(t)
conn := server.Dial(clientConfig())
defer conn.Close()
session, err := conn.NewSession()
if err != nil {
skipIfIssue64959(t, err)
t.Fatalf("session failed: %v", err)
}
defer session.Close()
err = session.Run(`bash -c "kill -9 $$"`)
if err == nil {
t.Fatalf("session succeeded: %v", err)
}
}
func TestRunCommandWeClosed(t *testing.T) {
server := newServer(t)
conn := server.Dial(clientConfig())
@@ -290,59 +187,6 @@ func TestValidTerminalMode(t *testing.T) {
}
}
func TestWindowChange(t *testing.T) {
if runtime.GOOS == "aix" {
// On AIX, sshd cannot acquire /dev/pts/* if launched as
// a non-root user.
t.Skipf("skipping on %s", runtime.GOOS)
}
server := newServer(t)
conn := server.Dial(clientConfig())
defer conn.Close()
session, err := conn.NewSession()
if err != nil {
skipIfIssue64959(t, err)
t.Fatalf("session failed: %v", err)
}
defer session.Close()
stdout, err := session.StdoutPipe()
if err != nil {
t.Fatalf("unable to acquire stdout pipe: %s", err)
}
stdin, err := session.StdinPipe()
if err != nil {
t.Fatalf("unable to acquire stdin pipe: %s", err)
}
tm := ssh.TerminalModes{ssh.ECHO: 0}
if err = session.RequestPty("xterm", 80, 40, tm); err != nil {
t.Fatalf("req-pty failed: %s", err)
}
if err := session.WindowChange(100, 100); err != nil {
t.Fatalf("window-change failed: %s", err)
}
err = session.Shell()
if err != nil {
t.Fatalf("session failed: %s", err)
}
stdin.Write([]byte("stty size && exit\n"))
var buf bytes.Buffer
if _, err := io.Copy(&buf, stdout); err != nil {
t.Fatalf("reading failed: %s", err)
}
if sttyOutput := buf.String(); !strings.Contains(sttyOutput, "100 100") {
t.Fatalf("terminal WindowChange failure: expected \"100 100\" stty output, got %s", sttyOutput)
}
}
func testOneCipher(t *testing.T, cipher string, cipherOrder []string) {
server := newServer(t)
conf := clientConfig()
@@ -396,55 +240,6 @@ func TestCiphers(t *testing.T) {
}
}
func TestMACs(t *testing.T) {
var config ssh.Config
config.SetDefaults()
macOrder := config.MACs
for _, mac := range macOrder {
t.Run(mac, func(t *testing.T) {
server := newServer(t)
conf := clientConfig()
conf.MACs = []string{mac}
// Don't fail if sshd doesn't have the MAC.
conf.MACs = append(conf.MACs, macOrder...)
if conn, err := server.TryDial(conf); err == nil {
conn.Close()
} else {
t.Fatalf("failed for MAC %q", mac)
}
})
}
}
func TestKeyExchanges(t *testing.T) {
var config ssh.Config
config.SetDefaults()
kexOrder := config.KeyExchanges
// Based on the discussion in #17230, the key exchange algorithms
// diffie-hellman-group-exchange-sha1 and diffie-hellman-group-exchange-sha256
// are not included in the default list of supported kex so we have to add them
// here manually.
kexOrder = append(kexOrder, "diffie-hellman-group-exchange-sha1", "diffie-hellman-group-exchange-sha256")
// The key exchange algorithms diffie-hellman-group16-sha512 is disabled by
// default so we add it here manually.
kexOrder = append(kexOrder, "diffie-hellman-group16-sha512")
for _, kex := range kexOrder {
t.Run(kex, func(t *testing.T) {
server := newServer(t)
conf := clientConfig()
// Don't fail if sshd doesn't have the kex.
conf.KeyExchanges = append([]string{kex}, kexOrder...)
conn, err := server.TryDial(conf)
if err == nil {
conn.Close()
} else {
t.Errorf("failed for kex %q", kex)
}
})
}
}
func TestClientAuthAlgorithms(t *testing.T) {
for _, key := range []string{
"rsa",
-133
View File
@@ -13,140 +13,18 @@ import (
"crypto/rand"
"encoding/base64"
"fmt"
"log"
"net"
"os"
"os/exec"
"os/user"
"path/filepath"
"testing"
"text/template"
"golang.org/x/crypto/internal/testenv"
"golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh/testdata"
)
const (
defaultSshdConfig = `
Protocol 2
Banner {{.Dir}}/banner
HostKey {{.Dir}}/id_rsa
HostKey {{.Dir}}/id_dsa
HostKey {{.Dir}}/id_ecdsa
HostCertificate {{.Dir}}/id_rsa-sha2-512-cert.pub
Pidfile {{.Dir}}/sshd.pid
#UsePrivilegeSeparation no
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel DEBUG2
LoginGraceTime 120
PermitRootLogin no
StrictModes no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile {{.Dir}}/authorized_keys
TrustedUserCAKeys {{.Dir}}/id_ecdsa.pub
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PubkeyAcceptedKeyTypes=*
`
multiAuthSshdConfigTail = `
UsePAM yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
AuthenticationMethods {{.AuthMethods}}
`
maxAuthTriesSshdConfigTail = `
PasswordAuthentication yes
MaxAuthTries 1
`
)
var configTmpl = map[string]*template.Template{
"default": template.Must(template.New("").Parse(defaultSshdConfig)),
"MultiAuth": template.Must(template.New("").Parse(defaultSshdConfig + multiAuthSshdConfigTail)),
"MaxAuthTries": template.Must(template.New("").Parse(defaultSshdConfig + maxAuthTriesSshdConfigTail))}
type server struct {
t *testing.T
configfile string
testUser string // test username for sshd
testPasswd string // test password for sshd
sshdTestPwSo string // dynamic library to inject a custom password into sshd
lastDialConn net.Conn
}
func username() string {
var username string
if user, err := user.Current(); err == nil {
username = user.Username
} else {
// user.Current() currently requires cgo. If an error is
// returned attempt to get the username from the environment.
log.Printf("user.Current: %v; falling back on $USER", err)
username = os.Getenv("USER")
}
if username == "" {
panic("Unable to get username")
}
return username
}
type storedHostKey struct {
// keys map from an algorithm string to binary key data.
keys map[string][]byte
// checkCount counts the Check calls. Used for testing
// rekeying.
checkCount int
}
func (k *storedHostKey) Add(key ssh.PublicKey) {
if k.keys == nil {
k.keys = map[string][]byte{}
}
k.keys[key.Type()] = key.Marshal()
}
func (k *storedHostKey) Check(addr string, remote net.Addr, key ssh.PublicKey) error {
k.checkCount++
algo := key.Type()
if k.keys == nil || bytes.Compare(key.Marshal(), k.keys[algo]) != 0 {
return fmt.Errorf("host key mismatch. Got %q, want %q", key, k.keys[algo])
}
return nil
}
func hostKeyDB() *storedHostKey {
keyChecker := &storedHostKey{}
keyChecker.Add(testPublicKeys["ecdsa"])
keyChecker.Add(testPublicKeys["rsa"])
keyChecker.Add(testPublicKeys["dsa"])
return keyChecker
}
func clientConfig() *ssh.ClientConfig {
config := &ssh.ClientConfig{
User: username(),
Auth: []ssh.AuthMethod{
ssh.PublicKeys(testSigners["user"]),
},
HostKeyCallback: hostKeyDB().Check,
HostKeyAlgorithms: []string{ // by default, don't allow certs as this affects the hostKeyDB checker
ssh.KeyAlgoECDSA256, ssh.KeyAlgoECDSA384, ssh.KeyAlgoECDSA521,
ssh.KeyAlgoRSA, ssh.KeyAlgoDSA,
ssh.KeyAlgoED25519,
},
}
return config
}
// unixConnection creates two halves of a connected net.UnixConn. It
// is used for connecting the Go SSH client with sshd without opening
// ports.
@@ -262,17 +140,6 @@ func (s *server) Dial(config *ssh.ClientConfig) *ssh.Client {
return conn
}
func writeFile(path string, contents []byte) {
f, err := os.OpenFile(path, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0600)
if err != nil {
panic(err)
}
defer f.Close()
if _, err := f.Write(contents); err != nil {
panic(err)
}
}
// generate random password
func randomPassword() (string, error) {
b := make([]byte, 12)
+298
View File
@@ -0,0 +1,298 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 03 2c 11 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |...,....+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |.laes128-gcm@ope|
00000150 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 35 36 2d |nssh.com,aes256-|
00000160 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |gcm@openssh.com,|
00000170 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 33 30 |chacha20-poly130|
00000180 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 |5@openssh.com,ae|
00000190 73 31 32 38 2d 63 74 72 2c 61 65 73 31 39 32 2d |s128-ctr,aes192-|
000001a0 63 74 72 2c 61 65 73 32 35 36 2d 63 74 72 00 00 |ctr,aes256-ctr..|
000001b0 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |.laes128-gcm@ope|
000001c0 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 35 36 2d |nssh.com,aes256-|
000001d0 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |gcm@openssh.com,|
000001e0 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 33 30 |chacha20-poly130|
000001f0 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 |5@openssh.com,ae|
00000200 73 31 32 38 2d 63 74 72 2c 61 65 73 31 39 32 2d |s128-ctr,aes192-|
00000210 63 74 72 2c 61 65 73 32 35 36 2d 63 74 72 00 00 |ctr,aes256-ctr..|
00000220 00 6e 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d |.nhmac-sha2-256-|
00000230 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000240 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 |hmac-sha2-512-et|
00000250 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d |m@openssh.com,hm|
00000260 61 63 2d 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 |ac-sha2-256,hmac|
00000270 2d 73 68 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 |-sha2-512,hmac-s|
00000280 68 61 31 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 |ha1,hmac-sha1-96|
00000290 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d 32 35 |...nhmac-sha2-25|
000002a0 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f |6-etm@openssh.co|
000002b0 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d |m,hmac-sha2-512-|
000002c0 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
000002d0 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c 68 6d |hmac-sha2-256,hm|
000002e0 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d 61 63 |ac-sha2-512,hmac|
000002f0 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 31 2d |-sha1,hmac-sha1-|
00000300 39 36 00 00 00 04 6e 6f 6e 65 00 00 00 04 6e 6f |96....none....no|
00000310 6e 65 00 00 00 00 00 00 00 00 00 00 00 00 00 d7 |ne..............|
00000320 3b 80 93 f6 ef bc 88 eb 1a 6e ac fa 66 ef 26 3c |;........n..f.&<|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 c8 9f 47 8f 1d b3 6c e4 86 d8 |........G...l...|
00000010 29 d2 db 83 c7 ee 00 00 01 7a 73 6e 74 72 75 70 |)........zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 aa 80 4b 53 a8 4b |...,..... ..KS.K|
00000010 4c 0f fa ac a3 b8 5f 64 7d 36 42 e7 1d 56 45 7e |L....._d}6B..VE~|
00000020 2b ac e0 f9 e7 60 f5 d7 55 37 b8 cc 87 3c 23 dc |+....`..U7...<#.|
>>> Flow 6 (server to client)
00000000 00 00 01 04 0a 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 37 00 93 5e 60 8c 9f e2 e0 4b |..... 7..^`....K|
00000080 59 97 5c 6f d4 5a 3e 25 f8 fb 08 72 92 05 4d 6c |Y.\o.Z>%...r..Ml|
00000090 80 c4 27 0e ec 26 00 00 00 64 00 00 00 13 65 63 |..'..&...d....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 49 00 00 00 21 00 ec c1 21 3e be 3c |6...I...!...!>.<|
000000c0 7a 50 7b 47 eb c2 92 bf 0b 93 cf 59 b5 84 2c f5 |zP{G.......Y..,.|
000000d0 bf 9b 2d 01 cc 2e 42 15 b0 04 00 00 00 20 61 99 |..-...B...... a.|
000000e0 9e 54 45 c1 54 a4 da d6 0b 3a d1 09 24 0f a0 b1 |.TE.T....:..$...|
000000f0 66 b9 6f 06 a4 f4 09 7e 51 3f 5a e2 98 6c 00 00 |f.o....~Q?Z..l..|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 57 9a 3e 61 |...........@W.>a|
00000120 04 0a 62 05 83 8d 82 84 8a e6 91 0b 2c 28 d5 ce |..b.........,(..|
00000130 b8 06 56 59 54 af 80 60 6c 9b 8c a5 1c 8a 5a 30 |..VYT..`l.....Z0|
00000140 e3 70 23 61 86 ed a3 6a b6 fc 8d b8 d0 c3 72 25 |.p#a...j......r%|
00000150 1c 4c 5c 84 a5 77 59 83 31 52 1b f4 09 8c 9f a7 |.L\..wY.1R......|
00000160 b5 b2 ca f2 2c 8d ca 8f 2f 49 b9 83 65 af 97 5d |....,.../I..e..]|
00000170 a3 a9 02 97 8f ee 42 30 9a 6c 8a 38 2c 23 33 1b |......B0.l.8,#3.|
00000180 16 08 cd 7e 5e 2a 9b b4 34 26 9e 3b cb ec 37 0b |...~^*..4&.;..7.|
00000190 39 8e 39 62 80 57 a2 95 d7 0d b6 ce 02 d8 66 b0 |9.9b.W........f.|
000001a0 15 c4 cf 77 01 80 7b 42 41 96 4d 92 d6 5d b3 03 |...w..{BA.M..]..|
000001b0 f3 83 22 c8 fe a7 7a c3 a4 aa 6a 75 23 de 4a 30 |.."...z...ju#.J0|
000001c0 76 e6 8d 2a c7 3a c8 1a 60 f3 db ce 8a 53 44 2f |v..*.:..`....SD/|
000001d0 ff 02 38 3e 23 28 cf 45 08 ae b8 a8 24 db 6f 1e |..8>#(.E....$.o.|
000001e0 77 7a 33 19 e8 d0 13 11 63 19 b6 71 8b 19 3b 5b |wz3.....c..q..;[|
000001f0 ad b5 3d cc 08 6f bd 89 cb fa c9 d7 e6 af e0 82 |..=..o..........|
00000200 25 8b 60 bb 08 64 d3 71 d0 71 05 f1 94 1e 9b 7b |%.`..d.q.q.....{|
00000210 07 35 64 fa 05 c3 23 4d 95 d0 4d 49 7d 93 61 72 |.5d...#M..MI}.ar|
00000220 11 14 07 94 fb 3e a4 0f 7c ce 24 e3 a5 24 3e ae |.....>..|.$..$>.|
00000230 e5 11 f5 29 f1 aa 2d 6c a8 8d 47 fb cb 0c 62 e2 |...)..-l..G...b.|
00000240 cc 80 89 bc a6 76 e6 60 5c bf 86 78 58 ea e3 b2 |.....v.`\..xX...|
00000250 b3 61 35 c4 80 23 f5 c6 ac 45 fd 5f 5b 41 8d 59 |.a5..#...E._[A.Y|
00000260 eb 4c b2 3c fa df 0a 78 c4 af 59 42 |.L.<...x..YB|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 62 b8 d2 60 16 9a fa 2f 75 ab |......b..`.../u.|
00000010 00 00 00 20 ad 6d e9 f4 a6 ee b0 dc 51 d0 16 a8 |... .m......Q...|
00000020 48 f5 0b cf 15 42 51 3a 8a 0a 3d 4b cd 20 82 ce |H....BQ:..=K. ..|
00000030 3f ac d4 33 0d ff 29 ea f8 28 2c dc e2 c4 bc 46 |?..3..)..(,....F|
00000040 c2 5e 8a ce |.^..|
>>> Flow 8 (server to client)
00000000 00 00 00 20 25 d5 f5 9e c7 e4 76 15 a5 03 f4 30 |... %.....v....0|
00000010 02 2e 64 e7 b7 a8 33 12 d1 d1 e0 62 3d b5 23 12 |..d...3....b=.#.|
00000020 eb 61 31 21 5c 07 bb 54 bc 4f 29 5d 80 1e 7c 88 |.a1!\..T.O)]..|.|
00000030 b9 46 b0 56 |.F.V|
>>> Flow 9 (client to server)
00000000 00 00 00 30 dc 6c b3 a7 e2 60 9c a8 41 3c 12 4b |...0.l...`..A<.K|
00000010 f0 90 69 20 65 08 60 50 b0 52 22 ed 50 cf 5f 5c |..i e.`P.R".P._\|
00000020 d3 ed 35 13 88 32 2c 7c d5 5b 6c f3 09 1b 50 0e |..5..2,|.[l...P.|
00000030 9b bb ac 21 73 94 51 93 73 de 71 6c 0a fd 11 a4 |...!s.Q.s.ql....|
00000040 77 70 55 ef |wpU.|
>>> Flow 10 (server to client)
00000000 00 00 00 20 32 b6 e9 e4 79 15 00 f8 5a 72 08 38 |... 2...y...Zr.8|
00000010 55 af 59 21 6e 7f f4 6f f2 0e e8 d8 a5 61 bb a4 |U.Y!n..o.....a..|
00000020 ce 26 3b 94 a8 e7 d9 5d 69 d7 6d d7 70 5f b8 a9 |.&;....]i.m.p_..|
00000030 e9 ee 02 e8 00 00 00 40 21 fe 1d 4e 06 ce c3 51 |.......@!..N...Q|
00000040 34 9d ad 04 60 1b 5e b7 89 c9 8d f5 24 d7 ff 69 |4...`.^.....$..i|
00000050 a0 89 fe 95 58 66 7f af 63 1b b2 f5 b0 ad 26 b8 |....Xf..c.....&.|
00000060 b4 25 33 9d 47 02 69 98 a1 a2 5c 30 5b 1c da 9d |.%3.G.i...\0[...|
00000070 7d 75 8c f3 be 05 dd b2 0f 65 5c 1e 17 08 d7 00 |}u.......e\.....|
00000080 03 97 99 ca a4 ca a3 c2 |........|
>>> Flow 11 (client to server)
00000000 00 00 01 60 4d a5 d0 b6 1a b3 dc c9 f2 da 8e 8a |...`M...........|
00000010 03 a4 d3 61 0b 95 e5 7e db cc 31 49 21 c7 fa 95 |...a...~..1I!...|
00000020 43 d0 ee 93 d6 45 29 85 3c 9a 82 e4 6b 65 5d 7c |C....E).<...ke]||
00000030 cc 52 e8 83 b2 5a 65 ad 2f 83 1f b0 e7 a4 aa c7 |.R...Ze./.......|
00000040 49 40 98 10 d8 af c2 c0 0f a2 54 d0 30 37 13 06 |I@........T.07..|
00000050 12 63 a6 3b 73 30 74 d3 47 56 51 ba 23 32 c8 6f |.c.;s0t.GVQ.#2.o|
00000060 e7 8a b1 27 fa f6 21 6c 26 2a f7 00 cb 14 d6 9a |...'..!l&*......|
00000070 c2 f7 45 51 c8 20 6c 96 24 b2 64 57 06 23 31 ed |..EQ. l.$.dW.#1.|
00000080 3a b2 10 7f 1d 8e 48 25 db 95 6c 0e 30 90 aa 69 |:.....H%..l.0..i|
00000090 92 ae a5 1b 36 40 43 62 95 b0 d8 f6 bf 5c c1 8e |....6@Cb.....\..|
000000a0 48 ab 38 f9 75 52 e1 8e b2 4b 75 6e f4 ac 03 24 |H.8.uR...Kun...$|
000000b0 73 f4 01 51 98 0c 6f ed 4f 19 29 88 d7 08 13 d2 |s..Q..o.O.).....|
000000c0 84 d9 54 63 b3 e3 8a 0d 42 6c f0 67 ac dc 4b 93 |..Tc....Bl.g..K.|
000000d0 79 f2 70 ff 53 1f 27 f3 70 7c bf 75 33 79 64 3c |y.p.S.'.p|.u3yd<|
000000e0 eb 30 1b dc c4 ff 11 f9 6f 74 f3 d1 1a c0 6b 4e |.0......ot....kN|
000000f0 f2 56 32 5f 0d 82 eb 49 10 a1 0a df 47 af 18 c6 |.V2_...I....G...|
00000100 21 c3 77 b4 39 7a 62 c3 aa f4 fb 19 95 bc 2d d2 |!.w.9zb.......-.|
00000110 36 ca 6b d6 bf 91 00 3d 73 e8 41 65 60 44 89 48 |6.k....=s.Ae`D.H|
00000120 57 89 9b 69 a4 c8 5e c2 df b8 bb e8 da e4 09 f9 |W..i..^.........|
00000130 29 17 39 c6 35 88 7f 26 9b c8 94 02 03 c4 03 e8 |).9.5..&........|
00000140 f6 df 68 52 e2 6e 84 91 10 7b 06 23 b0 4b f5 75 |..hR.n...{.#.K.u|
00000150 4f b6 b8 b4 f2 b3 72 8a bf 91 92 1f 73 0a de e4 |O.....r.....s...|
00000160 20 62 3d 30 50 c3 b9 7b cd 59 d1 83 fd e7 f0 cd | b=0P..{.Y......|
00000170 c6 a0 11 12 |....|
>>> Flow 12 (server to client)
00000000 00 00 01 40 57 32 56 54 ba 8e a5 73 bc 12 1e 11 |...@W2VT...s....|
00000010 02 03 72 e9 23 4f b2 70 a5 23 ea de f6 1e 25 e3 |..r.#O.p.#....%.|
00000020 6c d0 8d c5 db da 81 e5 04 71 7e 9b 75 99 1b 70 |l........q~.u..p|
00000030 ef 04 fc 64 ef 83 2b a9 4b 87 32 ed 28 98 17 ec |...d..+.K.2.(...|
00000040 c6 e9 bf 8f 85 8e 93 ac 91 a2 fe a0 78 bc e3 88 |............x...|
00000050 97 a4 3a 2e 3e 11 f5 04 0e 6f 38 6d 33 7f b7 10 |..:.>....o8m3...|
00000060 9f 1d 84 45 02 11 da 63 37 f7 86 c7 1b b3 36 ec |...E...c7.....6.|
00000070 ea b7 1a 2d 38 39 0a a1 0d 44 84 6b ad d7 22 28 |...-89...D.k.."(|
00000080 27 ab 24 b5 c3 85 77 31 b3 97 0c 12 35 7f 3e c7 |'.$...w1....5.>.|
00000090 d4 0e 3f 16 07 70 e8 fc b1 f7 29 94 28 2c ae 1b |..?..p....).(,..|
000000a0 b3 1a 25 8a 2e e7 5f 52 5b 17 dd e5 ec e9 db 93 |..%..._R[.......|
000000b0 12 29 3d ba bf ac 90 d4 37 42 36 53 ae 3e 8c db |.)=.....7B6S.>..|
000000c0 d7 7c 48 c5 43 a1 ee d3 b6 74 ac 01 27 c9 06 0c |.|H.C....t..'...|
000000d0 ae 31 68 a7 a9 ff 40 9e d1 f3 c9 ee ca 3b 98 13 |.1h...@......;..|
000000e0 aa 5d 00 67 a0 fb 68 32 64 07 ff 4c f3 e1 4c be |.].g..h2d..L..L.|
000000f0 38 3e 26 10 5c 9d 4b fc 7f 3f 22 0f ee 12 af f9 |8>&.\.K..?".....|
00000100 3d 51 83 b1 5c 65 63 f1 fa 92 0e 1d 76 b9 27 a4 |=Q..\ec.....v.'.|
00000110 a4 a3 ec ba e9 43 b1 77 e1 c7 db 9e 25 bc 93 4d |.....C.w....%..M|
00000120 0c 9c bd 64 a0 db f4 a1 2b 9a 24 99 a9 0d be 17 |...d....+.$.....|
00000130 cd 99 31 da 3f 83 66 c0 4e 6f a5 1a 1e ec 4d 07 |..1.?.f.No....M.|
00000140 a4 04 d7 23 03 f7 ec 2c 8a 12 96 85 c1 d0 cb 59 |...#...,.......Y|
00000150 e8 6b 4a 6d |.kJm|
>>> Flow 13 (client to server)
00000000 00 00 02 80 5e 7e 95 09 c2 ec 6e cd 14 10 2c 4f |....^~....n...,O|
00000010 d3 f5 0a 89 6c 4a 3a b0 26 e4 c4 bc 51 26 ec a2 |....lJ:.&...Q&..|
00000020 1a c9 35 8e b6 7a a7 88 1d fe 04 04 73 f1 e7 e1 |..5..z......s...|
00000030 86 4c 3d 85 61 02 cc 5d 24 bb 87 a2 3e b2 5d bd |.L=.a..]$...>.].|
00000040 19 5f ce 47 5a 6c 6c ab 45 84 2d 3e 51 82 90 e7 |._.GZll.E.->Q...|
00000050 76 41 b7 37 0a b8 57 d9 3c 43 3e 3b 3d ba 39 41 |vA.7..W.<C>;=.9A|
00000060 01 84 1b 3f 80 e0 f4 9b 32 32 12 02 c5 f5 23 4e |...?....22....#N|
00000070 36 75 37 2b ce 24 5e f7 9b 5b 3c 6e f8 2c aa d5 |6u7+.$^..[<n.,..|
00000080 77 03 b0 ff fe ad 75 2f 73 b5 94 0b aa f4 08 31 |w.....u/s......1|
00000090 46 a3 f3 f6 7e 1e bf eb fe c3 2c 20 e7 c5 02 41 |F...~....., ...A|
000000a0 2b 91 dd eb 8d f4 ec a9 61 0c b8 c3 67 12 0d 1f |+.......a...g...|
000000b0 4f a8 40 b0 64 68 f0 90 65 d8 06 f6 b0 7d 9f 5c |O.@.dh..e....}.\|
000000c0 2c 54 5e c4 db bc 44 b2 8a 65 9b 70 e4 5f dd 73 |,T^...D..e.p._.s|
000000d0 1b 4e 91 9a 3a 87 ba da 1e d9 0e 7c 68 b3 b1 c3 |.N..:......|h...|
000000e0 8e ce 32 a5 0d 09 22 8d 62 79 80 75 54 59 1f f8 |..2...".by.uTY..|
000000f0 9c 80 4a 4a 17 a6 1d 74 1f bd b8 76 32 24 d7 4c |..JJ...t...v2$.L|
00000100 64 0d 58 a4 f1 2e 4b 7a 82 31 33 8b 53 b2 e0 84 |d.X...Kz.13.S...|
00000110 72 88 2d 97 2b e8 27 77 4f ed 0c ad 04 5a 7a 7d |r.-.+.'wO....Zz}|
00000120 f2 10 7c db 08 b6 cd 00 22 32 19 21 4c c3 c0 71 |..|....."2.!L..q|
00000130 1a 95 4c 97 74 54 9d 2d 81 73 47 45 9b bb 72 16 |..L.tT.-.sGE..r.|
00000140 b5 10 d0 11 6a 2d 90 fa 5b 17 27 62 75 a9 40 91 |....j-..[.'bu.@.|
00000150 f6 a4 0b 3a 36 27 2c 48 e3 74 07 7d a9 35 58 7b |...:6',H.t.}.5X{|
00000160 b8 0e 05 48 6c 30 96 dc d0 b0 e2 a4 9b 82 71 04 |...Hl0........q.|
00000170 bd cd 66 54 ee 8c 1e 82 cd 5e 08 67 d3 92 d3 ad |..fT.....^.g....|
00000180 6f 68 20 ac 2e 07 16 39 6c 05 3f 1f 72 89 0b 5d |oh ....9l.?.r..]|
00000190 00 d1 a8 ce f7 93 7c b0 fe d5 01 8a dc be 1f 2b |......|........+|
000001a0 cf 94 9b 2e bc 2d c5 cc 9f 1a 88 44 73 f2 82 20 |.....-.....Ds.. |
000001b0 30 ba 04 da 91 46 22 30 1a a5 bf ee 73 80 69 9d |0....F"0....s.i.|
000001c0 66 0d 61 02 b2 9a ff 39 87 35 89 3e 53 f8 1a d2 |f.a....9.5.>S...|
000001d0 c0 31 f3 d0 19 4d 51 a5 05 da 8d d3 9b a7 58 29 |.1...MQ.......X)|
000001e0 1e 25 c1 2e f8 27 ad 05 3f 11 b6 1f 9c 6d a5 d0 |.%...'..?....m..|
000001f0 28 db ba 57 8a 12 9f c5 f3 73 93 48 05 ba d2 0a |(..W.....s.H....|
00000200 a8 6d a4 a8 96 02 de a8 77 fd 01 e4 fe 14 87 46 |.m......w......F|
00000210 d4 df f4 fc a7 e7 40 c2 3a 64 52 98 b8 5e 0f 00 |......@.:dR..^..|
00000220 06 bf 70 d9 5b 2d 14 22 3e 6a a8 e2 c5 9b 91 76 |..p.[-.">j.....v|
00000230 50 c9 92 b5 c0 31 32 a8 77 c9 be 02 00 68 08 c4 |P....12.w....h..|
00000240 1e 08 d1 fa d8 e8 32 97 5a 0a 56 a8 9b 78 94 20 |......2.Z.V..x. |
00000250 84 dd 56 18 2e eb 5d d2 e3 fd 28 05 b7 15 32 87 |..V...]...(...2.|
00000260 c4 78 71 f6 11 41 22 da 3b b5 4c 60 71 df 6c eb |.xq..A".;.L`q.l.|
00000270 c3 7c 4a 9c b3 e3 c9 12 2b a3 79 c9 e2 99 2a 4d |.|J.....+.y...*M|
00000280 6b 88 2b 42 48 79 c7 52 33 f5 09 2e 60 1f 96 b1 |k.+BHy.R3...`...|
00000290 b5 35 94 5a |.5.Z|
>>> Flow 14 (server to client)
00000000 00 00 00 10 60 4c c8 0d e2 72 d3 60 e0 94 a4 06 |....`L...r.`....|
00000010 79 85 52 74 0f 2d 35 96 99 61 f6 8d d4 01 6e e3 |y.Rt.-5..a....n.|
00000020 b2 54 8a 0f |.T..|
+295
View File
@@ -0,0 +1,295 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 5c 05 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |...\....+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 0a 61 65 73 31 32 38 2d 63 74 72 00 00 00 0a |..aes128-ctr....|
00000150 61 65 73 31 32 38 2d 63 74 72 00 00 00 6e 68 6d |aes128-ctr...nhm|
00000160 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d 40 |ac-sha2-256-etm@|
00000170 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000180 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f 70 |-sha2-512-etm@op|
00000190 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000001a0 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 |ha2-256,hmac-sha|
000001b0 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 2c |2-512,hmac-sha1,|
000001c0 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 00 6e |hmac-sha1-96...n|
000001d0 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 |hmac-sha2-256-et|
000001e0 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d |m@openssh.com,hm|
000001f0 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 |ac-sha2-512-etm@|
00000200 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000210 2d 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 |-sha2-256,hmac-s|
00000220 68 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 |ha2-512,hmac-sha|
00000230 31 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 |1,hmac-sha1-96..|
00000240 00 04 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 00 |..none....none..|
00000250 00 00 00 00 00 00 00 00 00 00 00 d7 3b 80 93 f6 |............;...|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 3c 7e 44 d5 52 42 76 d2 6a fa |......<~D.RBv.j.|
00000010 8b b0 ea cc ef 95 00 00 01 7a 73 6e 74 72 75 70 |.........zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 13 cf b6 0f c2 c9 |...,..... ......|
00000010 08 d9 7b f6 60 d4 53 7f 4b b1 29 37 59 98 3c dd |..{.`.S.K.)7Y.<.|
00000020 ab b1 51 12 94 92 eb 56 4c 6f e8 a3 63 9c a8 a1 |..Q....VLo..c...|
>>> Flow 6 (server to client)
00000000 00 00 01 04 09 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 e9 56 86 74 34 11 d7 d3 48 a0 |..... .V.t4...H.|
00000080 a8 6d bd 3f 00 ae da 7d 63 fb 6f b2 2d 90 c8 53 |.m.?...}c.o.-..S|
00000090 3f 14 42 43 88 12 00 00 00 65 00 00 00 13 65 63 |?.BC.....e....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 4a 00 00 00 21 00 ed ac 80 ff 90 17 |6...J...!.......|
000000c0 05 2b 9b 55 14 f1 04 45 f5 8e 59 7b 0f a9 69 51 |.+.U...E..Y{..iQ|
000000d0 39 04 ef ab 75 03 27 8d b2 a6 00 00 00 21 00 fb |9...u.'......!..|
000000e0 5c 9b 84 8f 26 00 81 c4 7a 58 c8 c1 e7 3c 15 b7 |\...&...zX...<..|
000000f0 a3 06 27 f8 e2 a1 b5 02 5d 7f 73 29 8a e5 98 00 |..'.....].s)....|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 fc d3 1f 73 |...........@...s|
00000120 95 a6 4b 07 99 e0 76 21 16 09 1e 47 bb 69 67 42 |..K...v!...G.igB|
00000130 5c f2 e4 d2 24 8c a4 92 56 65 11 8a 8e 58 64 fd |\...$...Ve...Xd.|
00000140 20 69 4d fd a3 61 44 1d d6 b8 40 3e 9a 07 05 d5 | iM..aD...@>....|
00000150 be 5d 02 bf a0 6e 9c 1b 5d 3f b1 10 21 88 6b 78 |.]...n..]?..!.kx|
00000160 5b 36 a4 ba 01 a4 62 50 e7 e2 d1 d2 7a 47 a3 fc |[6....bP....zG..|
00000170 27 38 15 89 10 13 ee d4 bc 72 d2 16 95 d5 3a 52 |'8.......r....:R|
00000180 df 54 1e 9c 6e dd 01 2a 30 3e 5c 0a 5e 08 19 ef |.T..n..*0>\.^...|
00000190 d4 60 a6 f0 85 34 da 53 f6 c0 51 8b 5a 6b 3e 28 |.`...4.S..Q.Zk>(|
000001a0 4a 7b 41 72 89 73 c3 16 1e d4 62 fe 21 3a 0f 74 |J{Ar.s....b.!:.t|
000001b0 45 6d 61 01 3c b1 95 a0 37 6e b5 5d 38 a8 54 be |Ema.<...7n.]8.T.|
000001c0 f2 67 0d 99 cc 61 4d 11 4a 64 93 93 05 47 0f 08 |.g...aM.Jd...G..|
000001d0 75 fc 41 25 24 ce a6 b4 e7 71 c8 f4 eb 77 00 82 |u.A%$....q...w..|
000001e0 a9 8d 5d 7a f5 b9 d1 01 cb 3f d1 30 41 c4 35 56 |..]z.....?.0A.5V|
000001f0 d6 7c 13 e5 1a d2 ae 59 3a a1 35 bc 0f ca 67 73 |.|.....Y:.5...gs|
00000200 39 da 3f 33 d0 d4 ad 16 37 0d 23 52 45 c5 48 a1 |9.?3....7.#RE.H.|
00000210 0a 07 44 34 f2 a4 f1 59 91 2f ec 46 2b 47 fd 7a |..D4...Y./.F+G.z|
00000220 80 82 60 7b 22 e0 aa e2 be 9f ca 5f d0 da 58 23 |..`{"......_..X#|
00000230 b3 f9 30 e0 f6 48 a6 97 99 55 76 79 fd cc c3 fd |..0..H...Uvy....|
00000240 1b c3 91 51 f3 a2 17 c4 50 ad 34 c9 66 47 5d f2 |...Q....P.4.fG].|
00000250 0a 77 81 a2 74 35 3e e0 e1 ce 7b 10 22 9c 4a 10 |.w..t5>...{.".J.|
00000260 6b b8 5e 21 49 dc cb 02 85 7a 96 4f d6 39 b5 e5 |k.^!I....z.O.9..|
00000270 a1 40 7a 1d d6 b3 c5 3e 08 65 31 ad |.@z....>.e1.|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 e3 f9 ae 57 e2 35 b8 cc 87 3c |.........W.5...<|
00000010 00 00 00 20 33 e5 12 ab 62 1c 2c 69 88 93 54 76 |... 3...b.,i..Tv|
00000020 f7 f8 fd dc 60 17 93 77 87 cd 82 b1 07 a3 b1 ab |....`..w........|
00000030 3c 1a 85 46 bb 6d 43 54 d5 63 49 d9 1d 51 55 89 |<..F.mCT.cI..QU.|
00000040 e9 5c 5f 7c 62 b8 76 b4 0b c6 c4 e9 be d2 b2 9b |.\_|b.v.........|
00000050 d3 dc 15 b8 |....|
>>> Flow 8 (server to client)
00000000 00 00 00 20 93 ba c4 77 30 8a 7f d5 56 ed 0b b8 |... ...w0...V...|
00000010 85 c8 49 71 3a a1 8b 8b 94 d4 b1 e2 2b 0f 54 12 |..Iq:.......+.T.|
00000020 74 89 06 dc a5 92 37 aa 5e 3a 24 4d 82 df a6 40 |t.....7.^:$M...@|
00000030 74 48 79 db 42 bf 49 49 67 61 a3 e5 96 c2 f8 11 |tHy.B.IIga......|
00000040 a6 74 2c 1b |.t,.|
>>> Flow 9 (client to server)
00000000 00 00 00 30 78 7e e0 d6 9f ee 3f ac 47 ee a1 ab |...0x~....?.G...|
00000010 1f 7a d5 00 e0 b8 0a 00 69 61 db 12 f2 d4 b2 c5 |.z......ia......|
00000020 a0 09 12 08 c2 fa c1 2a 3b 21 18 03 4f be 96 0a |.......*;!..O...|
00000030 fc b4 36 8f c6 4d 8d 13 c7 ca 48 80 65 db 25 da |..6..M....H.e.%.|
00000040 4e 36 29 44 fb 19 b4 96 53 b9 2f 74 56 c9 8c 66 |N6)D....S./tV..f|
00000050 85 03 eb 98 |....|
>>> Flow 10 (server to client)
00000000 00 00 00 20 36 ba 73 95 01 22 06 8d e9 7c c1 41 |... 6.s.."...|.A|
00000010 92 85 b9 b8 f4 37 52 b0 b4 99 8f 47 f7 ef 38 10 |.....7R....G..8.|
00000020 a6 b0 35 c4 44 f1 72 89 0a 67 75 09 de 70 68 d5 |..5.D.r..gu..ph.|
00000030 4e 81 af 5b e4 5b 61 02 aa ed bb 31 fe 70 59 f5 |N..[.[a....1.pY.|
00000040 fc bf 7a 44 00 00 00 40 e3 5b ae 48 03 59 c7 d0 |..zD...@.[.H.Y..|
00000050 22 f6 34 db c7 f4 2a 09 7e 0d ad c0 e4 b6 52 c2 |".4...*.~.....R.|
00000060 7d de 8e 63 04 a0 06 d6 74 76 51 57 a6 16 7b 39 |}..c....tvQW..{9|
00000070 90 8c af 32 c3 c1 84 3f 65 39 15 d7 0e 8e b9 8e |...2...?e9......|
00000080 8f 13 97 9a ff f8 9b aa 5f 09 11 4c 46 e4 3d f6 |........_..LF.=.|
00000090 d1 e3 ac b7 d5 3e ae 68 6e ca 52 c6 f9 78 c4 ba |.....>.hn.R..x..|
000000a0 f7 37 0c 28 a5 7e 2d 45 |.7.(.~-E|
>>> Flow 11 (client to server)
00000000 00 00 01 60 90 e3 71 e0 56 c9 9e 55 b4 59 3c 28 |...`..q.V..U.Y<(|
00000010 9e 51 1c 69 16 61 e8 39 fd 0c 67 80 eb f4 c7 70 |.Q.i.a.9..g....p|
00000020 1a f9 6a b4 f3 b7 65 25 28 f5 a5 1a 56 b7 3c dc |..j...e%(...V.<.|
00000030 5b 6c 77 df 08 a2 31 e1 7f 77 17 24 fd 5a a3 e6 |[lw...1..w.$.Z..|
00000040 42 cf 4b da 75 e0 8b bf f3 e5 59 cb 11 95 d7 87 |B.K.u.....Y.....|
00000050 21 69 64 91 91 dc d8 b3 11 48 df 36 72 b1 05 43 |!id......H.6r..C|
00000060 d5 09 95 92 90 b9 d8 e4 0f 84 dd 3b c7 55 3b 93 |...........;.U;.|
00000070 d6 d0 3c 08 04 84 5a 25 55 76 ad 70 da 4d 17 6c |..<...Z%Uv.p.M.l|
00000080 5b 5e 56 0f 96 3b 4a 89 0f 23 7a a5 69 e3 b1 61 |[^V..;J..#z.i..a|
00000090 0d 19 a9 88 e9 79 bc 70 43 15 48 5e 7e 7f 76 75 |.....y.pC.H^~.vu|
000000a0 5f 8f d4 dc f7 90 af 67 e0 0a 62 56 0c 46 69 5c |_......g..bV.Fi\|
000000b0 92 bd 1d 3e bb 96 9e e9 a5 77 8a a4 70 ab df 5e |...>.....w..p..^|
000000c0 cb 09 7c 84 43 c4 d1 0e 86 0f ad e2 b7 fe d1 24 |..|.C..........$|
000000d0 e3 59 5c 22 00 07 77 a6 05 d0 53 90 47 ae c7 72 |.Y\"..w...S.G..r|
000000e0 f2 6a 56 98 f9 1e 6e 4c b1 a6 b8 3f 9f 04 c0 60 |.jV...nL...?...`|
000000f0 9a 79 14 75 4d 5f e4 c4 70 da f9 3e 88 71 94 04 |.y.uM_..p..>.q..|
00000100 5e 07 67 a9 d8 4c 4d e2 af 51 13 d1 e5 65 15 fe |^.g..LM..Q...e..|
00000110 b7 cd 7d 79 3c ba 3f 99 f3 4a 1f 2b f5 7f ff d6 |..}y<.?..J.+....|
00000120 77 48 34 96 33 1d 87 c6 41 f8 cf f8 b5 94 e8 47 |wH4.3...A......G|
00000130 d2 12 4d 21 9c 4a d8 ea 02 27 d5 dd 69 87 9a c6 |..M!.J...'..i...|
00000140 86 71 9f 97 14 d1 a3 03 35 d3 02 ed dd 5d 51 5d |.q......5....]Q]|
00000150 f5 12 47 b9 c5 39 eb fb 2d dc 56 99 da 6e e9 0a |..G..9..-.V..n..|
00000160 e6 50 94 7d f3 2e c0 64 e8 32 89 dc 43 3f ed f2 |.P.}...d.2..C?..|
00000170 99 21 c6 81 6b a6 05 90 9d 88 1e 28 d7 15 8e b8 |.!..k......(....|
00000180 6e e1 4a de |n.J.|
>>> Flow 12 (server to client)
00000000 00 00 01 40 c2 47 39 65 3f a2 7e 94 17 b3 10 86 |...@.G9e?.~.....|
00000010 f9 73 32 6e f3 ec ab e3 ac d0 8a fb 82 d3 b1 e5 |.s2n............|
00000020 45 f9 cb 72 41 f8 23 ad f8 ce b6 7d 94 f6 2b 56 |E..rA.#....}..+V|
00000030 4e 99 b0 0d d5 11 2f 55 c3 67 44 bf 0f 72 5c 5a |N...../U.gD..r\Z|
00000040 6f 41 16 b2 46 f2 f5 1d fe d7 3b cc 47 3f d7 97 |oA..F.....;.G?..|
00000050 4e 9b 2c 84 de 31 10 2a 98 91 5e 55 15 fb df 61 |N.,..1.*..^U...a|
00000060 6d 6d 0e 59 dd 9c f4 f3 bf bc 8a 6b 37 ce 78 c6 |mm.Y.......k7.x.|
00000070 cc 21 c9 56 42 11 04 65 01 6c 94 29 e3 0c 12 31 |.!.VB..e.l.)...1|
00000080 7e cc f7 3c e3 9d 74 d4 2a 5a 35 ba 85 33 86 e1 |~..<..t.*Z5..3..|
00000090 99 2f 79 1e 7e 42 ca c4 b4 fa e7 60 2f f4 6f 80 |./y.~B.....`/.o.|
000000a0 28 f1 9c f8 94 89 90 7f ad ce fd d4 be cd af 66 |(..............f|
000000b0 93 4e 53 29 2c 15 4d 5d d4 36 73 97 0e 9c 53 95 |.NS),.M].6s...S.|
000000c0 42 69 1a 80 34 ab 46 2b 97 7f 42 ca d9 33 94 e2 |Bi..4.F+..B..3..|
000000d0 35 b9 c8 ec 98 34 87 4f fe 14 ce cd 47 c4 77 22 |5....4.O....G.w"|
000000e0 74 8b f6 c6 4a dd 95 b2 57 b1 ba cd 3e bd a2 cb |t...J...W...>...|
000000f0 c7 0f e2 75 24 48 a8 75 83 35 45 8f 11 16 a8 6c |...u$H.u.5E....l|
00000100 05 3d d3 bb 2c 81 4c 67 ae 33 32 ae 28 d9 dd dd |.=..,.Lg.32.(...|
00000110 ea 73 b7 7c 88 7e ac 72 fa b9 e4 ed 37 2e 0c 0a |.s.|.~.r....7...|
00000120 8f 24 f7 80 15 af b3 61 4b 1e 83 73 34 7f bd d7 |.$.....aK..s4...|
00000130 8f 24 25 93 43 75 3c a7 e1 dc ff e1 f7 e7 9a b5 |.$%.Cu<.........|
00000140 18 1c bd 8d 81 12 a3 1a 16 1d fa e5 72 9c c7 9d |............r...|
00000150 f3 d2 1b 76 ca a6 76 50 c5 83 56 1b 20 e5 c9 99 |...v..vP..V. ...|
00000160 c0 68 fb 99 |.h..|
>>> Flow 13 (client to server)
00000000 00 00 02 80 93 38 6e 30 08 53 2e 06 7f 0b 15 9f |.....8n0.S......|
00000010 f0 12 11 34 be b5 e6 77 ef 32 d1 e5 ab b7 25 5a |...4...w.2....%Z|
00000020 2a 97 6b 83 f2 08 35 d0 ae 3b 45 ec 47 72 60 b0 |*.k...5..;E.Gr`.|
00000030 2c c1 2c 5e 66 23 a0 b0 b5 c4 77 04 97 fc 89 14 |,.,^f#....w.....|
00000040 e6 d2 60 a6 40 d0 78 22 da c9 6a a4 72 8b 63 ad |..`.@.x"..j.r.c.|
00000050 60 57 b4 27 15 8f 66 0b a0 0c c2 c0 31 a2 74 4b |`W.'..f.....1.tK|
00000060 89 4c 8f d1 cd 45 a2 3d bf f9 8d 72 95 4f fa c8 |.L...E.=...r.O..|
00000070 46 09 ec 4c cc b0 7b 69 dd 20 3e e7 b0 ac 2d a4 |F..L..{i. >...-.|
00000080 f0 34 88 02 24 e1 5b 53 c7 aa 06 96 fe 35 ab d0 |.4..$.[S.....5..|
00000090 47 95 be 42 2f 75 22 d4 14 1f c4 cb 40 89 6f a0 |G..B/u".....@.o.|
000000a0 ff 73 01 dc 40 9d c7 3d 8b 96 f1 f9 89 f6 b1 fe |.s..@..=........|
000000b0 00 35 53 9c f7 09 25 a6 90 90 bb c8 a7 a2 88 e0 |.5S...%.........|
000000c0 ee 78 97 a8 d2 26 b7 b4 8c c6 3d 10 16 29 4b 6c |.x...&....=..)Kl|
000000d0 ee 30 90 73 09 57 f2 e1 c3 90 5f bc a2 48 aa 7b |.0.s.W...._..H.{|
000000e0 34 a3 95 1c 33 29 04 e4 97 f9 5f 62 5b 70 a0 c7 |4...3)...._b[p..|
000000f0 35 0f 28 ea 66 f8 42 61 a5 09 c3 c3 f1 81 26 66 |5.(.f.Ba......&f|
00000100 c3 c7 b9 b8 8e eb fa 22 30 a7 61 39 35 04 ba dc |......."0.a95...|
00000110 ff ab 5c 4e f6 0a 1d dc da 1d 37 88 fb 13 83 9b |..\N......7.....|
00000120 64 7c 5a 80 dc 05 df 3c 5a 36 16 67 6f 3f eb d1 |d|Z....<Z6.go?..|
00000130 f9 b8 4c 43 c3 39 97 e8 d9 2a e6 2b df 61 45 b1 |..LC.9...*.+.aE.|
00000140 9b d6 42 c0 d0 04 e9 d4 8b d5 fc db bc 09 ab 6d |..B............m|
00000150 fe e1 8c a9 95 29 d0 f6 e8 d0 f7 f5 f2 b8 39 f1 |.....)........9.|
00000160 2b 72 a7 ec 65 e9 7a 95 18 c2 2c 02 57 fa f8 b6 |+r..e.z...,.W...|
00000170 81 a8 10 99 cb ea a6 df d8 fe fd bf 20 32 82 97 |............ 2..|
00000180 78 31 a4 17 96 0c 50 05 bc c9 51 51 a9 fe da 2f |x1....P...QQ.../|
00000190 f1 bf df 91 1a 68 76 0f bc d9 22 9e bc 5e 65 64 |.....hv..."..^ed|
000001a0 7d 9f 19 c9 b6 09 77 0d 8d 7b cc 95 b5 70 cb c4 |}.....w..{...p..|
000001b0 d8 b6 85 4d f9 df 90 ce 91 2b 65 90 0d 2f f2 0a |...M.....+e../..|
000001c0 87 3e af c5 55 bd 37 05 4a 5d a6 ae d7 ce ec 65 |.>..U.7.J].....e|
000001d0 94 66 7e 4e e2 94 b4 f0 5a 83 08 f6 e1 ce 62 e5 |.f~N....Z.....b.|
000001e0 24 d6 98 6e a7 10 23 03 57 e8 03 b1 b0 84 53 0b |$..n..#.W.....S.|
000001f0 74 85 df fd b2 e1 0d 52 af 51 e3 64 5b 9d ed 42 |t......R.Q.d[..B|
00000200 88 a6 bd f1 e5 61 05 a7 40 f6 0b c2 97 26 ad 3c |.....a..@....&.<|
00000210 60 4f 75 d9 fb 20 b1 4d 96 a0 e8 80 c1 fe 1c 2c |`Ou.. .M.......,|
00000220 d5 b2 17 d5 8a 63 50 16 ae 67 3c dc 56 28 68 6d |.....cP..g<.V(hm|
00000230 3d ec ca 11 58 f4 98 30 dc 92 f4 38 6b 7c ff 4d |=...X..0...8k|.M|
00000240 e4 f0 63 66 b4 e6 20 56 3a d0 b7 e8 10 d0 13 44 |..cf.. V:......D|
00000250 a7 ac 20 2a ca 8c 4f 73 12 36 8d 29 66 92 0c 5a |.. *..Os.6.)f..Z|
00000260 db 11 49 8b c2 2a e4 7c 2d 4c 26 5c d7 a5 37 2f |..I..*.|-L&\..7/|
00000270 4b 4e 95 90 1b de 4c 7d 78 6a 62 ac b0 a0 e8 93 |KN....L}xjb.....|
00000280 46 65 ce c9 39 19 36 14 d4 22 28 75 23 3b 33 97 |Fe..9.6.."(u#;3.|
00000290 95 46 f1 7a 87 ae d4 4b dd 2d 3b 7e 5b 3a e1 d2 |.F.z...K.-;~[:..|
000002a0 17 85 9c 7e |...~|
>>> Flow 14 (server to client)
00000000 00 00 00 10 f5 bc 41 31 d1 0d d3 47 ed 2b 87 a0 |......A1...G.+..|
00000010 53 67 74 1d 19 c6 af f6 59 6a 8c d2 0d 29 0a 63 |Sgt.....Yj...).c|
00000020 b1 0d cc db d3 b4 d3 1b d3 d0 73 a6 f8 ec 16 06 |..........s.....|
00000030 de e2 0e b8 |....|
+287
View File
@@ -0,0 +1,287 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 7c 0d 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |...|....+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 16 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |..aes128-gcm@ope|
00000150 6e 73 73 68 2e 63 6f 6d 00 00 00 16 61 65 73 31 |nssh.com....aes1|
00000160 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-gcm@openssh.c|
00000170 6f 6d 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d |om...nhmac-sha2-|
00000180 32 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e |256-etm@openssh.|
00000190 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 |com,hmac-sha2-51|
000001a0 32 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f |2-etm@openssh.co|
000001b0 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
000001c0 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
000001d0 61 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 |ac-sha1,hmac-sha|
000001e0 31 2d 39 36 00 00 00 6e 68 6d 61 63 2d 73 68 61 |1-96...nhmac-sha|
000001f0 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-256-etm@openss|
00000200 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d |h.com,hmac-sha2-|
00000210 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e |512-etm@openssh.|
00000220 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 |com,hmac-sha2-25|
00000230 36 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c |6,hmac-sha2-512,|
00000240 68 6d 61 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 |hmac-sha1,hmac-s|
00000250 68 61 31 2d 39 36 00 00 00 04 6e 6f 6e 65 00 00 |ha1-96....none..|
00000260 00 04 6e 6f 6e 65 00 00 00 00 00 00 00 00 00 00 |..none..........|
00000270 00 00 00 d7 3b 80 93 f6 ef bc 88 eb 1a 6e ac fa |....;........n..|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 5b f0 eb 4c e5 38 1d df 00 dc |......[..L.8....|
00000010 d7 5e f9 2f 04 3b 00 00 01 7a 73 6e 74 72 75 70 |.^./.;...zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 7e 4a 3b cc bf 9a |...,..... ~J;...|
00000010 2e 84 5f cb bb 32 fa b6 67 2f 28 60 b3 d3 48 e8 |.._..2..g/(`..H.|
00000020 f9 c9 38 6f ae b4 a3 c4 5b 73 ae 57 e2 35 b8 cc |..8o....[s.W.5..|
>>> Flow 6 (server to client)
00000000 00 00 01 04 09 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 24 91 84 75 c5 47 0e f0 65 f7 |..... $..u.G..e.|
00000080 b4 24 f9 69 a6 ba b0 3c fa c7 6b 47 67 93 ed 68 |.$.i...<..kGg..h|
00000090 c7 24 9f 85 d1 20 00 00 00 65 00 00 00 13 65 63 |.$... ...e....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 4a 00 00 00 21 00 be d5 c3 20 93 2a |6...J...!.... .*|
000000c0 6f 26 6e ff 6e 3b fc 85 55 ff 33 8a a9 ce 0a 46 |o&n.n;..U.3....F|
000000d0 33 6f b8 b6 8c ee 3d dd 0c 81 00 00 00 21 00 c7 |3o....=......!..|
000000e0 f1 e0 5b 89 be 5f c2 55 77 8a 0b 08 e8 d0 f3 e6 |..[.._.Uw.......|
000000f0 ce d0 fe 20 4e 64 8e 8e 76 1d 2c 86 06 48 0a 00 |... Nd..v.,..H..|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 7a e3 f5 9b |...........@z...|
00000120 b1 a1 ce 3c 76 3c 19 bd fd 43 ae a0 cd 49 a6 2e |...<v<...C...I..|
00000130 b9 3b f6 25 4d 9d 0e 20 e3 29 30 f6 d5 ce 22 c8 |.;.%M.. .)0...".|
00000140 29 f3 10 f2 99 99 e7 5b 7c eb a8 4b 5c 6e 35 57 |)......[|..K\n5W|
00000150 30 9e 6d 9d 41 fe be a2 cf 55 7a 8a 45 08 95 5e |0.m.A....Uz.E..^|
00000160 58 89 c6 24 27 ea 14 a1 a5 d9 9b 06 80 40 94 84 |X..$'........@..|
00000170 10 14 88 71 71 06 a0 b6 53 d1 4b 07 77 e4 12 6e |...qq...S.K.w..n|
00000180 cc 4a 0a 89 87 3c d2 f3 2e 70 02 71 f3 3c 96 fb |.J...<...p.q.<..|
00000190 29 7d b6 85 93 7e 73 e0 83 d7 5f 9e 36 67 7f 82 |)}...~s..._.6g..|
000001a0 b3 d5 cb bb 93 fd d8 fd 29 9a 9a 55 07 b1 8a 05 |........)..U....|
000001b0 92 cc 40 eb 2e f1 cc fe 82 13 58 8b e5 6e f2 8a |..@.......X..n..|
000001c0 b9 ae 3a e1 07 29 ed f7 5a 52 57 c6 58 92 fa f3 |..:..)..ZRW.X...|
000001d0 43 dd 4a fc 7c 67 54 55 eb fc dd 5b 86 26 2f 6e |C.J.|gTU...[.&/n|
000001e0 78 d5 2a 48 7f f6 2f 44 89 35 a7 71 8d 41 fe dd |x.*H../D.5.q.A..|
000001f0 6b 59 45 08 99 e8 02 f9 27 80 a2 0a 1a 4e 51 e1 |kYE.....'....NQ.|
00000200 c7 db 0d 45 54 9e 6e 61 7f 01 a4 1d 4a 43 98 05 |...ET.na....JC..|
00000210 15 b4 4a 29 73 56 6f ad 3d c7 ac d1 d3 6e ca 65 |..J)sVo.=....n.e|
00000220 36 31 d3 82 a6 67 4c b2 dd e8 24 9f 39 33 4d 0e |61...gL...$.93M.|
00000230 81 ef 20 b6 a0 ca 5a 06 b1 75 4b 4d 0d 5f 3e 8f |.. ...Z..uKM._>.|
00000240 bb 65 12 af 72 f7 3d 26 cd 29 7e 12 ee 90 e4 f8 |.e..r.=&.)~.....|
00000250 f9 b5 93 11 1f 96 a9 82 5f d0 c3 d3 8a 5c ba cc |........_....\..|
00000260 6b 6f ae 87 92 4e ba 86 a8 dc 68 6f |ko...N....ho|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 87 3c 23 dc 62 b8 d2 60 16 9a |.......<#.b..`..|
00000010 00 00 00 20 79 7f 77 85 3c a1 cd 5b 68 fb 0d 92 |... y.w.<..[h...|
00000020 3c d9 58 4c a3 88 ff 1c 94 e5 50 cb 1d ab 83 ab |<.XL......P.....|
00000030 7e b2 ff 51 e4 3a d2 c6 65 c8 42 f5 de 8c 90 71 |~..Q.:..e.B....q|
00000040 1c 99 e1 09 |....|
>>> Flow 8 (server to client)
00000000 00 00 00 20 9e 31 c9 bd a5 a4 95 f8 67 2b 5e 5a |... .1......g+^Z|
00000010 63 53 db 9d a9 ae ef 08 43 f9 2b 0a 15 b7 38 71 |cS......C.+...8q|
00000020 7e d0 68 16 d6 03 c4 0c 66 b9 e8 0e 4b 0f e8 53 |~.h.....f...K..S|
00000030 e4 bc c2 60 |...`|
>>> Flow 9 (client to server)
00000000 00 00 00 30 9f 76 ec e4 9c a3 55 3e 8a 83 03 54 |...0.v....U>...T|
00000010 c9 d1 e4 20 91 6b d9 2c 28 28 a5 7f 82 92 3a 89 |... .k.,((....:.|
00000020 d0 cd 98 e7 a4 85 d7 31 a8 3e be a3 b3 c0 65 65 |.......1.>....ee|
00000030 e6 6c 74 e5 38 13 42 51 12 e2 d0 1b 53 39 f6 b3 |.lt.8.BQ....S9..|
00000040 e8 b2 73 3f |..s?|
>>> Flow 10 (server to client)
00000000 00 00 00 20 e4 45 97 15 a1 64 3b ff 65 37 c4 2e |... .E...d;.e7..|
00000010 03 d6 8e e7 91 ca 58 65 55 f5 b9 fa ef 3b 7d cc |......XeU....;}.|
00000020 ad 11 3b 54 c8 e3 2c f8 de 42 55 b2 97 b4 a7 ec |..;T..,..BU.....|
00000030 d8 a0 90 98 00 00 00 40 5c bc 96 d5 fe 09 4a e9 |.......@\.....J.|
00000040 d1 a5 f9 2e 9f 4c 0f 28 0c 66 79 aa 53 bb 78 d5 |.....L.(.fy.S.x.|
00000050 41 a5 8f 7d 53 09 98 fb be 3d 26 35 f3 8a 76 88 |A..}S....=&5..v.|
00000060 3f e1 66 b3 93 9e c9 00 b6 33 0e 12 ac 37 50 8f |?.f......3...7P.|
00000070 f7 b3 25 51 71 9f f7 e1 f9 b3 7b c8 4d 0f ca 92 |..%Qq.....{.M...|
00000080 21 32 5c f4 22 c1 63 90 |!2\.".c.|
>>> Flow 11 (client to server)
00000000 00 00 01 60 98 3f bc 85 ef 21 41 c0 61 b1 ad d1 |...`.?...!A.a...|
00000010 d9 73 3d 13 54 fe d7 c1 d3 d8 65 02 e4 3f 32 eb |.s=.T.....e..?2.|
00000020 78 2f fc fe 5f fc 48 ea 7f d9 53 51 59 a8 ad c0 |x/.._.H...SQY...|
00000030 a4 65 c8 e6 6b 11 44 e7 ab 9a 1a 84 4e 83 1c a9 |.e..k.D.....N...|
00000040 48 95 0a d1 f2 4c 64 c8 43 c4 0c 15 5b 5b af e0 |H....Ld.C...[[..|
00000050 3c 21 0d ff f2 a8 7c 91 a1 d9 cc 7a f1 ff 53 56 |<!....|....z..SV|
00000060 b2 09 f1 8b bb bf 42 5e c0 1d 03 6b ba 15 6f 68 |......B^...k..oh|
00000070 5a 69 5c d5 33 11 c6 52 d2 12 23 dc 57 f8 06 7a |Zi\.3..R..#.W..z|
00000080 55 d9 ee 8e cb 5f 49 32 c1 6a 84 57 73 b1 c5 70 |U...._I2.j.Ws..p|
00000090 78 83 bc 4a 45 72 ec 07 0a 5a cb 5d c2 06 d2 d7 |x..JEr...Z.]....|
000000a0 fd 0a 4c 0f 8a 47 e0 58 7e ec f8 35 ba 9a 4c 0e |..L..G.X~..5..L.|
000000b0 3f 0b 21 b2 b8 17 a0 c8 a1 c6 98 38 9c 7b 15 d0 |?.!........8.{..|
000000c0 8e 12 49 5a d9 5e ae ce 64 7d be 67 22 48 53 c7 |..IZ.^..d}.g"HS.|
000000d0 2a 19 37 8e 4e c8 2b 12 33 70 68 8a 18 8e 2b 5c |*.7.N.+.3ph...+\|
000000e0 1d 8a d2 b3 3b 0e 8b 55 58 12 2d 9c 67 5e bd 77 |....;..UX.-.g^.w|
000000f0 48 85 c3 88 59 4c c6 6f 64 3b 0c 24 96 81 d2 e1 |H...YL.od;.$....|
00000100 39 24 0e 9d 72 7a 0b 29 66 cc 7e fe 6d 88 1f d0 |9$..rz.)f.~.m...|
00000110 1b ac 9d 00 8d 21 98 58 36 c0 64 e7 83 f8 77 87 |.....!.X6.d...w.|
00000120 d7 8e 06 a9 57 b3 01 2b 61 4f 7d 31 d4 6c 5d 78 |....W..+aO}1.l]x|
00000130 ee c7 06 f8 92 92 36 d3 6e 98 8f 0d 5b 68 1a 1d |......6.n...[h..|
00000140 fb d8 90 a0 3c db c1 40 4a bc 18 6a b7 f6 45 d0 |....<..@J..j..E.|
00000150 42 49 7e 8f b8 4f 27 93 8c d7 3b 57 46 79 a7 20 |BI~..O'...;WFy. |
00000160 25 57 0f ca a8 70 83 3a 21 5f 63 b5 fa d8 9d 4b |%W...p.:!_c....K|
00000170 f0 8a 88 b7 |....|
>>> Flow 12 (server to client)
00000000 00 00 01 40 ef 68 cf f5 46 8a f8 c9 2f 84 67 34 |...@.h..F.../.g4|
00000010 bf 28 5f 6c b4 f5 87 1c 93 4a 87 30 5c cf 3c f1 |.(_l.....J.0\.<.|
00000020 2b 86 d7 28 26 00 ae e5 8b 68 e7 66 ed 14 e7 95 |+..(&....h.f....|
00000030 c1 33 d1 34 e0 d2 d8 f7 eb 7d 94 0c e4 22 c9 69 |.3.4.....}...".i|
00000040 c8 68 b6 e3 01 fc f0 32 a8 2f 82 56 2d 04 fd 55 |.h.....2./.V-..U|
00000050 fd 7a 89 d9 b6 19 e0 32 34 27 82 c5 61 ff 20 95 |.z.....24'..a. .|
00000060 44 c6 fd fd 8c 62 3c 39 16 9e 62 6d 5d 30 3c b4 |D....b<9..bm]0<.|
00000070 43 47 72 6e b7 2a 61 5f 95 9b 4f 9b b3 0b 76 e3 |CGrn.*a_..O...v.|
00000080 c3 5f d0 61 8d a1 7d c7 6d 5b f3 54 57 8a 43 aa |._.a..}.m[.TW.C.|
00000090 03 19 06 06 1e cd d9 b1 52 1d 59 c8 38 60 da 12 |........R.Y.8`..|
000000a0 52 35 52 41 b0 45 73 b3 c3 f2 d8 e8 cc a5 c4 84 |R5RA.Es.........|
000000b0 88 cd 78 4b 92 ec 02 02 25 fd e9 ea 2f 1d 62 ec |..xK....%.../.b.|
000000c0 17 af 3e 2e bd d2 d5 d5 94 f8 30 ad 75 9d 36 31 |..>.......0.u.61|
000000d0 51 37 e7 d7 1d 06 fe 4b 06 f6 6a 90 0e 53 0b 2e |Q7.....K..j..S..|
000000e0 5b d2 7d d3 b3 28 f7 22 31 29 47 b3 f5 8a 40 d4 |[.}..(."1)G...@.|
000000f0 bd 90 fa cc 0e 43 66 fb 3b cb 12 9a e6 4c 84 84 |.....Cf.;....L..|
00000100 55 0d 84 cc 71 10 55 79 a4 51 1a b5 f4 61 d0 bf |U...q.Uy.Q...a..|
00000110 07 34 b0 a1 d8 96 81 fe 51 b1 63 fa a5 90 82 87 |.4......Q.c.....|
00000120 0d bc 15 63 d8 7f 8e 5f 4d c3 be 7d 54 36 3c f4 |...c..._M..}T6<.|
00000130 4c 88 5e 8d 41 6f f3 74 25 b3 3b f1 3d 4d 8c 14 |L.^.Ao.t%.;.=M..|
00000140 83 5e 5e b7 78 e5 8a 8f 73 28 30 7d 64 0f 5c bd |.^^.x...s(0}d.\.|
00000150 31 e4 9a c4 |1...|
>>> Flow 13 (client to server)
00000000 00 00 02 80 00 cb 00 7f f2 7f 90 a4 6b 52 c0 6c |............kR.l|
00000010 7b 1b 0a a0 0e 61 e9 93 be a0 96 da 8b 25 10 2d |{....a.......%.-|
00000020 1f 12 3b 87 cf 98 45 5c 59 91 c0 5c 37 a5 0c 5b |..;...E\Y..\7..[|
00000030 df 23 6b b6 b4 8a c4 f0 c7 b5 28 2f e3 21 b7 10 |.#k.......(/.!..|
00000040 fc 8d 32 04 1d e9 11 7d 68 1c 68 eb 8c a3 38 45 |..2....}h.h...8E|
00000050 a7 a2 01 37 97 ac b2 fd 90 29 15 0e c6 13 ce 66 |...7.....).....f|
00000060 85 ff a7 4e 48 4c ba d9 fc 15 ec e3 64 98 36 9d |...NHL......d.6.|
00000070 0b dd fe 21 8b 1f ba 81 39 ac 79 f0 b9 01 aa 09 |...!....9.y.....|
00000080 64 a0 8e da 7b d4 e1 13 28 57 fe 1c 05 ec ad ed |d...{...(W......|
00000090 38 de 3e 79 a0 74 d5 01 4e fe 4b e6 e8 53 d3 d6 |8.>y.t..N.K..S..|
000000a0 03 a6 79 46 77 c1 5f ee a7 c3 c5 9e 97 f6 57 1d |..yFw._.......W.|
000000b0 5e 35 3e 8a a7 fc 91 f3 f1 91 dd 6c ea ae d8 04 |^5>........l....|
000000c0 5a 03 69 b4 1e fb 40 be b9 39 56 08 7c 32 ca a2 |Z.i...@..9V.|2..|
000000d0 c5 e0 ec 0a 66 61 25 49 5c 78 ce 08 8c b6 39 3a |....fa%I\x....9:|
000000e0 5e 29 da f3 a1 9b 0b 0b 70 8f 54 fd 1e c7 36 26 |^)......p.T...6&|
000000f0 9d ae 82 79 0e fb 18 27 ce 45 6d 04 ce 0e a7 c2 |...y...'.Em.....|
00000100 81 27 e8 53 8e 03 a7 55 c4 ca c4 48 26 c5 8d 2b |.'.S...U...H&..+|
00000110 3b dc 66 ca 98 35 bb b7 ab 22 e3 93 64 6d e7 10 |;.f..5..."..dm..|
00000120 8a 9b fb e7 af 24 b1 ff 58 e4 01 90 18 d6 2c 38 |.....$..X.....,8|
00000130 4c aa b1 44 15 cd 9d 76 9f 8f a4 1d 11 36 96 41 |L..D...v.....6.A|
00000140 1b 33 a3 ee 1f 4a e5 23 8c bc 82 a5 10 6a 3c 27 |.3...J.#.....j<'|
00000150 68 7f 8f 8a b8 cc 22 1b 0f 1c b5 ea 51 05 5c 43 |h.....".....Q.\C|
00000160 2d 85 c3 4e 2d d9 6c b3 4c 2c 5d 45 c0 77 85 20 |-..N-.l.L,]E.w. |
00000170 df 40 38 0a e7 ab 33 f0 60 66 fa 2a 94 46 3b 73 |.@8...3.`f.*.F;s|
00000180 9a 80 2b 5a 8b ec eb 0a c6 93 e0 85 e2 78 99 9e |..+Z.........x..|
00000190 5d 03 3a ea 9c 43 e4 a2 05 5f 6d 3b bb e2 8a 70 |].:..C..._m;...p|
000001a0 f8 ce bc 36 f2 9f 58 b6 42 30 83 2c 45 3e 5b 6d |...6..X.B0.,E>[m|
000001b0 23 f1 8c 86 4a 42 cf c9 50 88 9c 4c 28 18 64 4b |#...JB..P..L(.dK|
000001c0 14 48 82 b3 35 42 82 c7 3b 4a bf cb 7e c1 4a e2 |.H..5B..;J..~.J.|
000001d0 e8 de a3 55 19 94 3e 38 80 2d a9 60 16 73 7e 85 |...U..>8.-.`.s~.|
000001e0 50 47 4f 0a 26 d8 e9 b8 14 ab 1a 8f 67 9a a1 a5 |PGO.&.......g...|
000001f0 0e fe 67 59 4f f6 2c 57 01 98 c5 65 b3 7c f0 57 |..gYO.,W...e.|.W|
00000200 42 c4 30 41 8b cc f0 c7 05 32 a3 e0 ef 97 bf 23 |B.0A.....2.....#|
00000210 f0 d8 fc 87 fc 13 9f 3d 33 6d 80 a2 e1 75 df 93 |.......=3m...u..|
00000220 34 1b 9a 7f 36 c6 80 f5 75 c5 4c 0b 43 75 5a 97 |4...6...u.L.CuZ.|
00000230 f6 c0 bf 67 86 8e 2e 8a 15 ef 30 cc a8 d6 43 3f |...g......0...C?|
00000240 aa 1a 7a 39 bf 9d 45 8d 60 97 02 2d 7d 2b c3 b7 |..z9..E.`..-}+..|
00000250 fb ea d0 9e 99 69 26 05 f7 bb 79 5d 9a fa 86 fb |.....i&...y]....|
00000260 96 fe 42 58 32 7a 7c d1 05 0b 1b 7a 12 35 ea be |..BX2z|....z.5..|
00000270 dc 56 19 8f 32 4c 92 17 53 d9 33 00 04 e8 6f ba |.V..2L..S.3...o.|
00000280 4f bb 52 83 ff ba e6 f9 87 3c aa 6f c1 58 93 23 |O.R......<.o.X.#|
00000290 b0 5e 26 42 |.^&B|
>>> Flow 14 (server to client)
00000000 00 00 00 10 79 b4 da e8 8c a4 14 53 a6 e7 37 65 |....y......S..7e|
00000010 37 76 0e 7d ef a8 d9 91 1d 99 2a 57 95 fc 2a 97 |7v.}......*W..*.|
00000020 37 12 13 73 |7..s|
+295
View File
@@ -0,0 +1,295 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 5c 05 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |...\....+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 0a 61 65 73 31 39 32 2d 63 74 72 00 00 00 0a |..aes192-ctr....|
00000150 61 65 73 31 39 32 2d 63 74 72 00 00 00 6e 68 6d |aes192-ctr...nhm|
00000160 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d 40 |ac-sha2-256-etm@|
00000170 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000180 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f 70 |-sha2-512-etm@op|
00000190 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000001a0 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 |ha2-256,hmac-sha|
000001b0 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 2c |2-512,hmac-sha1,|
000001c0 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 00 6e |hmac-sha1-96...n|
000001d0 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 |hmac-sha2-256-et|
000001e0 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d |m@openssh.com,hm|
000001f0 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 |ac-sha2-512-etm@|
00000200 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000210 2d 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 |-sha2-256,hmac-s|
00000220 68 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 |ha2-512,hmac-sha|
00000230 31 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 |1,hmac-sha1-96..|
00000240 00 04 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 00 |..none....none..|
00000250 00 00 00 00 00 00 00 00 00 00 00 d7 3b 80 93 f6 |............;...|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 e1 22 f6 a4 d0 5d ab 07 1b 53 |......."...]...S|
00000010 71 9b 45 3a a8 4e 00 00 01 7a 73 6e 74 72 75 70 |q.E:.N...zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 13 cf b6 0f c2 c9 |...,..... ......|
00000010 08 d9 7b f6 60 d4 53 7f 4b b1 29 37 59 98 3c dd |..{.`.S.K.)7Y.<.|
00000020 ab b1 51 12 94 92 eb 56 4c 6f e8 a3 63 9c a8 a1 |..Q....VLo..c...|
>>> Flow 6 (server to client)
00000000 00 00 01 04 0a 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 81 ce f7 63 d7 91 ec be e9 c0 |..... ...c......|
00000080 0d 73 92 94 15 ef e2 e9 6d 47 38 ea 62 67 78 12 |.s......mG8.bgx.|
00000090 07 2b 79 f3 27 77 00 00 00 64 00 00 00 13 65 63 |.+y.'w...d....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 49 00 00 00 21 00 9e c5 62 22 31 5f |6...I...!...b"1_|
000000c0 fd 0f bc 20 d6 20 0c 3f f3 68 26 38 6b 97 09 c2 |... . .?.h&8k...|
000000d0 07 4f 1b 4f 7f 3c 56 cf 79 4b 00 00 00 20 22 b5 |.O.O.<V.yK... ".|
000000e0 5c 49 2d a3 f2 7e 49 83 54 2a f5 83 84 e4 48 06 |\I-..~I.T*....H.|
000000f0 83 f9 00 46 cf 2a 9b 25 e0 55 2a 76 0c ed 00 00 |...F.*.%.U*v....|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 97 32 fc d4 |...........@.2..|
00000120 fb 2d 65 17 78 14 c9 7a ee 20 4e 99 9a f5 91 d5 |.-e.x..z. N.....|
00000130 a0 58 01 80 8e 09 d5 41 91 d8 41 67 71 19 c1 ca |.X.....A..Agq...|
00000140 06 74 10 79 17 cd 3a 1d db 31 c4 73 81 61 29 ee |.t.y..:..1.s.a).|
00000150 50 ed 97 cd a9 c0 ae fd d0 aa 5e 5d 32 df b1 36 |P.........^]2..6|
00000160 43 7c 01 4d b6 e5 2e 3f 21 91 81 58 61 74 cb 6a |C|.M...?!..Xat.j|
00000170 b2 43 6d 46 f9 49 41 ca 22 4d 3b 5f 07 52 06 6e |.CmF.IA."M;_.R.n|
00000180 d4 8f 74 ee 4f 44 65 da 6d db 45 de 30 3e 9b fe |..t.ODe.m.E.0>..|
00000190 23 05 c2 95 55 d3 57 12 7f 0e c4 a1 5a 75 46 9a |#...U.W.....ZuF.|
000001a0 7a ba a1 ea 81 f4 e9 68 0c 4e a2 63 bf 67 01 97 |z......h.N.c.g..|
000001b0 4d 95 98 64 4e ba 8a fd e0 c4 79 d7 9f 36 93 a8 |M..dN.....y..6..|
000001c0 55 47 71 96 2b 7e a1 ae 6f 09 b2 d0 39 bd bd 23 |UGq.+~..o...9..#|
000001d0 76 19 6f d9 40 6c 3d dd 1c 6e 12 5b a1 68 50 60 |v.o.@l=..n.[.hP`|
000001e0 8d bb 28 2b bd 6b 06 8d 95 98 3d 6c 4a 4a 87 e2 |..(+.k....=lJJ..|
000001f0 99 47 b4 1d 71 5e 4d 8b 99 f3 95 d9 21 e9 50 6a |.G..q^M.....!.Pj|
00000200 c5 46 09 2d 42 47 9f a4 5a fb 23 12 09 f4 87 95 |.F.-BG..Z.#.....|
00000210 1e 27 4d c6 9e 99 d8 69 3a e9 3c 70 47 f4 70 f2 |.'M....i:.<pG.p.|
00000220 ef 3c a4 8f d3 67 71 49 b5 f1 e8 d2 46 7d 5f 89 |.<...gqI....F}_.|
00000230 18 d8 5d 91 3e 19 7a 17 3a d0 8b 5d d6 03 21 80 |..].>.z.:..]..!.|
00000240 b5 99 7d 96 aa 23 01 18 1e ee 55 89 7e 98 2b a4 |..}..#....U.~.+.|
00000250 06 08 9d 47 cf 7a f9 b4 2a f8 34 43 bf 8c 11 f6 |...G.z..*.4C....|
00000260 10 b7 c5 cc e8 a0 46 d0 d8 ec 9f ff 0b 14 79 a4 |......F.......y.|
00000270 fb cf 27 7d b8 0d 44 9d 52 ed 60 44 |..'}..D.R.`D|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 e3 f9 ae 57 e2 35 b8 cc 87 3c |.........W.5...<|
00000010 00 00 00 20 f4 13 e8 fa 65 88 0b 90 e2 19 fc 17 |... ....e.......|
00000020 98 47 93 de 21 47 e1 74 8c b8 81 6f 70 cf 17 07 |.G..!G.t...op...|
00000030 ab a5 08 eb 35 04 48 0b c8 ae 85 62 76 1e 24 7f |....5.H....bv.$.|
00000040 2a 9c ec 6a 19 af 9c d6 8f b0 a8 51 97 c6 69 bb |*..j.......Q..i.|
00000050 67 c3 4a c2 |g.J.|
>>> Flow 8 (server to client)
00000000 00 00 00 20 da 65 ba 85 a0 a2 83 b6 ac ec bc cb |... .e..........|
00000010 5b c7 e2 57 e7 b3 ff 29 a8 13 71 52 4b c8 52 dd |[..W...)..qRK.R.|
00000020 fb 5c b1 c9 bd ff 16 05 ea d3 b5 0e 4d 29 a6 0d |.\..........M)..|
00000030 12 f7 5d 5c 75 ca 2a 2a 35 ca 19 3d 51 98 6b 02 |..]\u.**5..=Q.k.|
00000040 4d 49 8c 55 |MI.U|
>>> Flow 9 (client to server)
00000000 00 00 00 30 9b 75 2d cc 5b a2 24 12 e8 b6 54 a5 |...0.u-.[.$...T.|
00000010 f2 32 2d e6 27 b9 97 5c eb 6d bc 05 4d 92 4d 04 |.2-.'..\.m..M.M.|
00000020 ef e9 cf 8e a7 7f c0 d8 46 43 0e 5c 72 c0 07 af |........FC.\r...|
00000030 e7 00 52 d4 6d 2a 32 14 95 9e 00 36 8e 51 60 12 |..R.m*2....6.Q`.|
00000040 7e 42 66 d6 72 55 08 b3 10 4e ee cb 91 3d 3d 9a |~Bf.rU...N...==.|
00000050 7b a4 03 9f |{...|
>>> Flow 10 (server to client)
00000000 00 00 00 20 ea eb e4 be 7a 89 14 50 31 3b 2d c3 |... ....z..P1;-.|
00000010 07 33 c0 dd 20 bd 0b 29 f3 31 a3 c0 8c 0b a6 fe |.3.. ..).1......|
00000020 19 55 ff 30 63 18 a0 88 98 b6 ec 1f 8e 17 f1 3e |.U.0c..........>|
00000030 b7 e9 db 17 c3 d3 c2 65 5d 8c b1 6b 46 a3 5c cc |.......e]..kF.\.|
00000040 ed e2 76 52 00 00 00 40 84 e9 87 0e b9 7a 45 1c |..vR...@.....zE.|
00000050 6e 0a 5e 34 d8 43 11 50 84 fc e8 8a eb a9 11 4f |n.^4.C.P.......O|
00000060 3a 38 e1 e1 8c 46 32 1b 2e d2 02 5c 41 f5 48 f5 |:8...F2....\A.H.|
00000070 28 cd 8e 09 55 4d 6a 75 62 15 39 48 df fb c1 58 |(...UMjub.9H...X|
00000080 07 57 7b 11 f4 71 76 bd 5f bf 3a 2d f0 7b bf a0 |.W{..qv._.:-.{..|
00000090 cd 2c e0 3f 6e 53 66 aa 4b 2a a5 63 e7 bb 86 37 |.,.?nSf.K*.c...7|
000000a0 56 dd 80 66 58 70 e6 cd |V..fXp..|
>>> Flow 11 (client to server)
00000000 00 00 01 60 fa a3 83 90 6b bc 23 18 34 ed 38 05 |...`....k.#.4.8.|
00000010 93 78 66 20 8b f1 36 92 cb c5 b2 1b 1a d6 d1 57 |.xf ..6........W|
00000020 1f 62 a9 58 5d 30 26 16 09 65 f7 f5 9d da 81 90 |.b.X]0&..e......|
00000030 b0 40 68 0c 30 11 9a 7c ae 41 67 9e 93 3d 53 c4 |.@h.0..|.Ag..=S.|
00000040 3d fc e8 c7 a2 e2 b5 69 b0 41 65 51 71 f8 d6 e9 |=......i.AeQq...|
00000050 cf c8 6f 61 1e 2c 51 d3 3b 52 ff 6f cc 6e 7c 6e |..oa.,Q.;R.o.n|n|
00000060 e8 0d 16 b2 c8 d3 d8 23 0f 75 fb 04 ce 4e 74 f2 |.......#.u...Nt.|
00000070 ea 9d 08 75 6f 73 e0 26 9a f2 88 67 a6 57 5c 6c |...uos.&...g.W\l|
00000080 33 10 f3 43 b0 a0 c3 89 48 6f cf ff db 2a 66 30 |3..C....Ho...*f0|
00000090 92 14 26 8c 60 7e f5 df 40 21 28 56 6c 57 be 57 |..&.`~..@!(VlW.W|
000000a0 a2 bf 0c 35 c4 0d 5f 8c 79 a6 9a ea 10 65 57 2f |...5.._.y....eW/|
000000b0 b1 f8 09 e9 63 a3 11 7d 04 f2 99 4b 8e 09 1c b5 |....c..}...K....|
000000c0 bb ff ee 80 8a 18 77 73 f7 4b 4c 03 8e 1c 67 45 |......ws.KL...gE|
000000d0 98 42 1b e6 a4 11 ef 65 df 91 8d eb 87 7c aa 96 |.B.....e.....|..|
000000e0 42 06 a0 e2 6c b9 81 68 84 5f 6b 7a 6f 54 50 1d |B...l..h._kzoTP.|
000000f0 a3 f7 8f c1 21 c9 8f 0d 9b a4 bd e7 b7 76 45 7f |....!........vE.|
00000100 60 bf 88 f4 24 ad a2 2b 85 bf 3b 6d 4e 72 b4 4e |`...$..+..;mNr.N|
00000110 f4 03 2c 6d 81 4a 78 43 f2 f2 09 78 10 0b 48 8d |..,m.JxC...x..H.|
00000120 1a 63 16 dc fd e9 cb c7 ce 40 f2 fd 27 cd 5a 59 |.c.......@..'.ZY|
00000130 9e 7f e1 b7 3a d5 a9 2a 7e 89 1c 4b 3f 9f f3 93 |....:..*~..K?...|
00000140 49 13 3f ce 87 1d 40 70 69 65 2a 1f 12 13 87 2b |I.?...@pie*....+|
00000150 dc 02 99 19 7a 2f 17 5e 6f 02 94 18 de 14 1d 7e |....z/.^o......~|
00000160 50 33 d4 38 d5 92 9d 08 62 3b 1e fd b8 cb 5a c6 |P3.8....b;....Z.|
00000170 bd 35 d4 de f4 6b dc ca e4 eb 0d a2 50 04 f4 02 |.5...k......P...|
00000180 c1 5e 42 97 |.^B.|
>>> Flow 12 (server to client)
00000000 00 00 01 40 66 c2 3c 75 cc 6e c1 dc 86 d8 36 bf |...@f.<u.n....6.|
00000010 98 4d 48 17 d2 ae ce de 51 62 66 1e 18 9a d0 83 |.MH.....Qbf.....|
00000020 32 29 a6 c4 37 d9 7b 8a 60 89 33 e1 51 0a 02 90 |2)..7.{.`.3.Q...|
00000030 73 ca 7c 5f 7b 22 a7 cb ad b8 9f 7f f5 fe 28 95 |s.|_{"........(.|
00000040 42 53 78 fa 3b 58 96 b9 22 2b 7f 92 fb b3 27 1f |BSx.;X.."+....'.|
00000050 c0 9e ca a3 b5 0e ba 3b 9a 98 28 db 80 6f 65 51 |.......;..(..oeQ|
00000060 b0 e0 f0 f7 58 d8 c7 ae 03 35 3e 27 c3 fd 29 c6 |....X....5>'..).|
00000070 e5 88 e1 64 0b c8 6e e0 3b 89 7f b0 e1 22 97 7c |...d..n.;....".||
00000080 5a 08 fc 67 83 a7 4a 4e fa 6b a2 43 68 1d 16 82 |Z..g..JN.k.Ch...|
00000090 07 24 48 ca b0 fa 44 0c 3d 81 1b ea 63 3a a2 40 |.$H...D.=...c:.@|
000000a0 36 a3 36 a2 ef a4 b8 0e 0a 97 35 0b 43 9e 5e c5 |6.6.......5.C.^.|
000000b0 b5 52 17 d1 0e 63 84 90 e3 82 a9 1d 29 67 91 2c |.R...c......)g.,|
000000c0 23 75 13 a4 7a bb f4 02 18 ac 63 02 f4 ec c3 53 |#u..z.....c....S|
000000d0 a9 52 bd bc 8d a5 cf 69 4b c5 36 9e 02 f8 47 29 |.R.....iK.6...G)|
000000e0 ad be bd 06 41 c7 bd b9 e5 a0 8f 82 ee 57 06 4d |....A........W.M|
000000f0 86 1d 3b ea 63 13 f2 e4 65 8d 50 10 1c 4b f0 0a |..;.c...e.P..K..|
00000100 22 04 3d 45 c5 d9 7d 96 47 00 bb dd ef dd cb f6 |".=E..}.G.......|
00000110 cb 50 83 f6 ef 43 9a ec 52 15 24 05 1e f9 45 fb |.P...C..R.$...E.|
00000120 77 c2 4d 9d 63 88 7b 79 5d 4b 26 83 ac 0a 3b 1e |w.M.c.{y]K&...;.|
00000130 68 96 d4 c8 3e 05 c5 f6 1c 2a 7a 55 cd 2c 57 00 |h...>....*zU.,W.|
00000140 2f e6 ed 38 e2 e2 3f 04 26 f1 88 f5 ba a7 4d 55 |/..8..?.&.....MU|
00000150 66 b8 fe 14 38 e8 9d fa 61 cb 20 91 40 71 1d 32 |f...8...a. .@q.2|
00000160 5e ec 27 1b |^.'.|
>>> Flow 13 (client to server)
00000000 00 00 02 80 9e c7 90 7d 44 f4 3c 3f 6f 44 dc 81 |.......}D.<?oD..|
00000010 06 f0 ff 14 b2 76 e6 f2 69 1f c8 e6 7c 8c 0a 8d |.....v..i...|...|
00000020 8d 3b c4 28 47 09 14 1f dd 5a 1c ce a7 19 8d 63 |.;.(G....Z.....c|
00000030 27 fb 97 ba 14 53 ad 41 0d 2c 42 6b 8a e9 29 8f |'....S.A.,Bk..).|
00000040 82 15 19 a1 70 80 b4 18 20 c8 2c aa c7 24 2b dd |....p... .,..$+.|
00000050 c3 c9 4e 0c 38 89 49 14 ac 63 bf b9 2a 1a ca 36 |..N.8.I..c..*..6|
00000060 fd f8 5d 53 b2 6b 9e 96 43 17 e8 1e 9a e4 cb dd |..]S.k..C.......|
00000070 f7 95 4b a5 c1 6a c5 6f 2e 75 ff f3 56 17 af 7a |..K..j.o.u..V..z|
00000080 77 88 98 34 c2 a3 07 51 91 61 16 90 85 5a d7 f2 |w..4...Q.a...Z..|
00000090 f7 a0 68 21 43 10 1b b0 50 51 cf c6 06 ec 1d d0 |..h!C...PQ......|
000000a0 2f f3 a4 7b e5 15 66 81 66 04 ce c0 00 68 ef 39 |/..{..f.f....h.9|
000000b0 d6 72 26 bc 13 8d 58 d6 ed 46 22 e3 34 52 66 f9 |.r&...X..F".4Rf.|
000000c0 ea 28 54 15 21 84 83 48 ed 51 8d d4 57 56 2a 10 |.(T.!..H.Q..WV*.|
000000d0 71 6c 7f d2 76 72 6b 26 72 91 fc 2a e5 ff 0b 6c |ql..vrk&r..*...l|
000000e0 1d f3 1d 82 ac 45 97 ac 28 6e 67 f6 df bc 5b 16 |.....E..(ng...[.|
000000f0 35 2f aa 41 88 47 9d 30 52 ca 6e a9 bf 9f db a8 |5/.A.G.0R.n.....|
00000100 0c 42 cb f1 b2 29 99 44 e7 54 3e 09 da 4e a5 37 |.B...).D.T>..N.7|
00000110 70 e2 07 7f 5c 31 71 22 3d d4 76 72 28 c1 20 f4 |p...\1q"=.vr(. .|
00000120 21 bc 34 ca 25 9d b5 95 9e 96 15 65 b3 23 91 2a |!.4.%......e.#.*|
00000130 ed a9 95 dd df 5d ae 16 e9 9a 35 ec a8 9f ec 46 |.....]....5....F|
00000140 cf 81 5f 6b 22 f7 43 d2 e1 29 7e 10 75 9e cb 19 |.._k".C..)~.u...|
00000150 3e 3a 17 28 7f 50 8d 2a 96 c4 ef 98 ab f8 57 a7 |>:.(.P.*......W.|
00000160 1e 9d 6a 22 19 0b c5 a3 d2 de 16 82 2c c4 11 de |..j"........,...|
00000170 16 e4 89 fc 63 3d af 52 d7 d4 24 67 f2 a7 12 4d |....c=.R..$g...M|
00000180 bb 97 55 dd 6c 10 dc f0 72 ee 7a 5d dd 81 06 62 |..U.l...r.z]...b|
00000190 de 5a c4 f2 c5 28 e7 c4 fb 9e 35 59 c0 5b 2c b3 |.Z...(....5Y.[,.|
000001a0 66 ec 11 df 1e ff 6a bf a8 82 41 2c f6 6d 98 cc |f.....j...A,.m..|
000001b0 d4 30 38 93 15 86 05 4e 93 32 aa fa ec 28 d2 0b |.08....N.2...(..|
000001c0 6b df 90 2b 97 56 60 0d 14 c0 d7 ec bf be 6d fb |k..+.V`.......m.|
000001d0 e9 18 62 27 a9 c4 e2 ff 98 87 d6 67 0a cc ae f1 |..b'.......g....|
000001e0 53 5e 51 df e3 49 f7 0c b9 b7 c8 d3 e2 77 11 15 |S^Q..I.......w..|
000001f0 84 4f 33 5a 7d 7c 8c ff f3 f4 56 ef 79 2d 46 c7 |.O3Z}|....V.y-F.|
00000200 7f 16 0e 88 57 8d 8a 0c a4 92 21 f8 d6 76 a7 9b |....W.....!..v..|
00000210 af bf 55 11 7f f4 ff 55 0e 2a 03 5c 99 01 55 da |..U....U.*.\..U.|
00000220 c6 8d 39 17 57 58 c0 c8 c7 8c 81 e6 ca a7 70 fe |..9.WX........p.|
00000230 57 ea c2 8a dc e7 fa a2 ee 7c 5c 07 53 df fb 99 |W........|\.S...|
00000240 aa 67 34 5f 6d 38 82 45 9d c8 ab c9 17 f2 80 70 |.g4_m8.E.......p|
00000250 41 cd bb 7f f0 ff 20 8b aa ac ba 1b 8c f4 90 b3 |A..... .........|
00000260 e4 98 7c 2a eb a2 16 16 c2 27 c1 54 9f 80 c2 c8 |..|*.....'.T....|
00000270 d0 91 e3 89 e6 90 8d a0 40 c9 5f eb a5 a5 89 b4 |........@._.....|
00000280 d9 c8 2e 5e 40 ab 35 a8 3f 3a bc bc af aa ba e6 |...^@.5.?:......|
00000290 94 97 2e 83 6e 1a b0 e0 b7 d4 3c 6c c4 3a bf ae |....n.....<l.:..|
000002a0 00 62 f1 25 |.b.%|
>>> Flow 14 (server to client)
00000000 00 00 00 10 9a cb e8 50 5a fa b7 db f6 2a 92 99 |.......PZ....*..|
00000010 3e c5 a8 26 39 35 50 b0 4c b6 f1 75 7c ce d4 90 |>..&95P.L..u|...|
00000020 0c 9a 84 73 e3 be ac c2 79 7d ed 65 bd 31 f8 0a |...s....y}.e.1..|
00000030 25 d1 03 7e |%..~|
+295
View File
@@ -0,0 +1,295 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 5c 05 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |...\....+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 0a 61 65 73 32 35 36 2d 63 74 72 00 00 00 0a |..aes256-ctr....|
00000150 61 65 73 32 35 36 2d 63 74 72 00 00 00 6e 68 6d |aes256-ctr...nhm|
00000160 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d 40 |ac-sha2-256-etm@|
00000170 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000180 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f 70 |-sha2-512-etm@op|
00000190 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000001a0 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 |ha2-256,hmac-sha|
000001b0 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 2c |2-512,hmac-sha1,|
000001c0 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 00 6e |hmac-sha1-96...n|
000001d0 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 |hmac-sha2-256-et|
000001e0 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d |m@openssh.com,hm|
000001f0 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 |ac-sha2-512-etm@|
00000200 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000210 2d 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 |-sha2-256,hmac-s|
00000220 68 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 |ha2-512,hmac-sha|
00000230 31 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 |1,hmac-sha1-96..|
00000240 00 04 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 00 |..none....none..|
00000250 00 00 00 00 00 00 00 00 00 00 00 d7 3b 80 93 f6 |............;...|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 b9 f9 b6 c4 ed 7e 18 3f 94 37 |...........~.?.7|
00000010 5b 4a d6 e0 42 bc 00 00 01 7a 73 6e 74 72 75 70 |[J..B....zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 13 cf b6 0f c2 c9 |...,..... ......|
00000010 08 d9 7b f6 60 d4 53 7f 4b b1 29 37 59 98 3c dd |..{.`.S.K.)7Y.<.|
00000020 ab b1 51 12 94 92 eb 56 4c 6f e8 a3 63 9c a8 a1 |..Q....VLo..c...|
>>> Flow 6 (server to client)
00000000 00 00 01 04 0a 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 dc b4 2e a2 97 2c 11 80 39 31 |..... .....,..91|
00000080 ff f8 28 cb 42 d6 59 49 6b 25 4c ff a8 b2 88 3f |..(.B.YIk%L....?|
00000090 59 5c 08 1d 50 5f 00 00 00 64 00 00 00 13 65 63 |Y\..P_...d....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 49 00 00 00 21 00 fd 1e a5 2f 00 a1 |6...I...!..../..|
000000c0 3a da d5 57 e0 57 81 e4 72 06 53 63 20 41 e8 51 |:..W.W..r.Sc A.Q|
000000d0 b1 f8 70 0a c7 dd 45 c9 53 d1 00 00 00 20 2f 0e |..p...E.S.... /.|
000000e0 42 dd ff 31 fd 52 a0 5e d5 fd f1 3f 02 a6 9d 4b |B..1.R.^...?...K|
000000f0 72 60 05 64 a8 c9 5d dc 38 03 2b 45 11 ec 00 00 |r`.d..].8.+E....|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 29 e3 86 8d |...........@)...|
00000120 8a 4f dc fc 5e d4 a5 fd 8f 31 49 e5 fb e5 94 a3 |.O..^....1I.....|
00000130 3e 01 06 15 a7 61 49 1a ff b4 7d 3e ef c6 ef cc |>....aI...}>....|
00000140 a4 9d 2d e8 79 1f cd c5 61 b3 8c df 52 00 94 ba |..-.y...a...R...|
00000150 90 91 38 65 5e 4e fb f3 6c cb dc ca be 2a ad 68 |..8e^N..l....*.h|
00000160 3d 23 06 8a 7f c4 71 b8 55 6c af 83 57 91 40 fd |=#....q.Ul..W.@.|
00000170 bd e6 4e e3 fd 48 0d 11 50 b2 91 b9 ac 7d 39 7f |..N..H..P....}9.|
00000180 96 fe 88 c3 e8 e3 49 76 df 8e 33 13 63 84 35 75 |......Iv..3.c.5u|
00000190 13 5a ea 45 0f e0 28 82 c5 01 73 78 31 7b de 08 |.Z.E..(...sx1{..|
000001a0 b2 c9 e4 ab f9 40 df 8a 04 a5 58 b9 cb b6 5c 12 |.....@....X...\.|
000001b0 53 07 e3 53 83 24 43 76 5b 66 e1 fe b9 df 48 f0 |S..S.$Cv[f....H.|
000001c0 36 82 95 d7 21 5b 07 84 d5 f6 06 f6 19 79 a8 9d |6...![.......y..|
000001d0 3d d7 6c 06 6e 0b c8 05 aa 50 43 7b 97 ae 78 c8 |=.l.n....PC{..x.|
000001e0 24 d5 af 7f 6f 6b 75 9f 9b e3 b2 00 74 b3 28 8f |$...oku.....t.(.|
000001f0 3d 0e e3 27 c6 34 8d 06 1f 5d d7 9e 7f 72 ec 84 |=..'.4...]...r..|
00000200 f9 bb 1f 7e a7 84 be 9d 47 a8 26 39 1b df be bb |...~....G.&9....|
00000210 66 5e 93 88 81 97 aa dc 4c 25 18 0f 84 e7 e2 c2 |f^......L%......|
00000220 96 c4 55 1b 76 75 84 b2 06 9c 00 4f 11 2b 91 d0 |..U.vu.....O.+..|
00000230 cb 05 ba f5 9d d9 42 cd bc 83 e7 dc e1 2a be 90 |......B......*..|
00000240 9a 68 b1 45 e4 e2 ac 7e 1e 5a de 1a 90 38 ea c1 |.h.E...~.Z...8..|
00000250 f2 2a ff 52 d6 13 06 f9 58 9e d6 14 49 9b 11 b5 |.*.R....X...I...|
00000260 8a 39 a3 d9 2e e4 3d 31 d4 29 53 50 cd 91 19 db |.9....=1.)SP....|
00000270 b8 fd 5a 75 c7 55 11 72 0e c7 22 13 |..Zu.U.r..".|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 e3 f9 ae 57 e2 35 b8 cc 87 3c |.........W.5...<|
00000010 00 00 00 20 b7 cd e5 1e 32 4c af 0d 14 b0 15 9c |... ....2L......|
00000020 28 f1 f9 23 ab 40 ef 2a 61 e3 b5 14 e8 28 ff bf |(..#.@.*a....(..|
00000030 94 a0 19 88 b8 4b a1 e4 bf de f1 bf e8 45 99 18 |.....K.......E..|
00000040 ab 42 06 0f 9a 8e 49 9e e0 92 a5 89 b8 fa 0c c5 |.B....I.........|
00000050 b4 6a 5e 44 |.j^D|
>>> Flow 8 (server to client)
00000000 00 00 00 20 a7 59 4a e8 1f ed d6 91 0c fd 51 fe |... .YJ.......Q.|
00000010 f8 b1 81 7c 21 fe de 37 0d 29 6c c4 06 4c d5 48 |...|!..7.)l..L.H|
00000020 59 50 54 35 aa 62 1f 45 1c ba 71 37 24 d4 4c 09 |YPT5.b.E..q7$.L.|
00000030 15 14 35 6e 93 99 6c f7 2b 7b 0e 60 1c 3e 9d 46 |..5n..l.+{.`.>.F|
00000040 98 b6 bd b5 |....|
>>> Flow 9 (client to server)
00000000 00 00 00 30 db 4f da 1a 98 a1 d5 a0 35 44 5f ca |...0.O......5D_.|
00000010 61 62 cc b5 6b 67 d5 ac 57 67 10 1c 11 b9 8d 46 |ab..kg..Wg.....F|
00000020 1c ff 4c 9c 76 cd 32 93 46 47 bd 6c 50 b3 16 b8 |..L.v.2.FG.lP...|
00000030 91 82 0c e6 d0 a9 07 0a b3 a2 56 87 be 97 10 3c |..........V....<|
00000040 04 99 37 e4 a2 af 47 f0 21 a3 54 fb 0a 50 f8 3b |..7...G.!.T..P.;|
00000050 70 13 c4 79 |p..y|
>>> Flow 10 (server to client)
00000000 00 00 00 20 ef a1 05 ef bf d2 8b bc 40 f3 71 ca |... ........@.q.|
00000010 64 f7 bb 7b 49 56 e8 9e 4f d6 7f 25 4e 81 c3 b0 |d..{IV..O..%N...|
00000020 f9 af 58 40 5e 7e 77 d4 05 c7 c5 9f bd d5 18 fb |..X@^~w.........|
00000030 2c 29 c5 0d 9f 94 21 7c 9c f3 2a 3a 09 31 ad ac |,)....!|..*:.1..|
00000040 08 40 75 d9 00 00 00 40 0c bc d9 17 fc 1b a9 28 |.@u....@.......(|
00000050 1e 5b 51 30 f1 4c 33 31 74 93 21 21 3a b1 3a f8 |.[Q0.L31t.!!:.:.|
00000060 75 41 8d c4 4d 06 96 85 5c 73 d4 b0 26 0b e4 37 |uA..M...\s..&..7|
00000070 80 26 8f 7c 1a 59 61 bd 99 04 0d a9 5e e5 50 fc |.&.|.Ya.....^.P.|
00000080 bc f7 fd 8d 1e 69 9a 83 e8 62 bb 23 bf 1a 40 d2 |.....i...b.#..@.|
00000090 d5 e7 ed e1 c3 da 97 a3 69 ff de 3f 89 d4 a6 8b |........i..?....|
000000a0 63 09 2c 7c 7c ea bc 34 |c.,||..4|
>>> Flow 11 (client to server)
00000000 00 00 01 60 9a dc 8b 51 bb ac d1 45 74 61 ed 7a |...`...Q...Eta.z|
00000010 f2 cb 8a 43 39 a0 c1 74 93 3b d5 69 06 8e b7 ee |...C9..t.;.i....|
00000020 d2 0f 44 a5 b2 66 5d 1d 9e b3 37 9c d3 fc 55 61 |..D..f]...7...Ua|
00000030 1a 04 00 d3 37 e0 c1 cc 53 c4 eb 22 12 4c 02 f7 |....7...S..".L..|
00000040 98 d0 16 c0 3e af bb d9 2d ec 97 e0 39 d6 6b a5 |....>...-...9.k.|
00000050 9f af f9 20 97 01 30 af d5 cd 58 71 36 81 24 6a |... ..0...Xq6.$j|
00000060 24 95 88 20 fb dc 62 97 82 97 e1 a4 09 f6 8b 1b |$.. ..b.........|
00000070 b5 ab 28 b4 6f d1 0b 67 40 76 cc 07 44 98 d9 d5 |..(.o..g@v..D...|
00000080 ca d0 ef bf 8d 5f 47 27 3d 68 63 f1 05 12 da 04 |....._G'=hc.....|
00000090 66 9d 53 57 09 b0 6a 92 3c 0a bd da 2e 85 96 50 |f.SW..j.<......P|
000000a0 13 43 19 c3 8e fc 33 44 3b b4 6a dd 2e 9c f5 fb |.C....3D;.j.....|
000000b0 35 ac a1 96 85 81 bc 65 59 7b e0 8d 2a c5 bf 40 |5......eY{..*..@|
000000c0 0b c9 59 62 35 e9 0d bc 41 86 9e 5e ab 28 45 42 |..Yb5...A..^.(EB|
000000d0 7c c6 9f 40 0a 6c 30 06 f7 9c f3 2c 64 86 be cc ||..@.l0....,d...|
000000e0 7f 51 04 e9 f2 86 7d 4b 1b e8 b9 10 ad 7c e3 35 |.Q....}K.....|.5|
000000f0 34 a4 9c 80 fe a9 03 ce 85 de 6e 67 f3 9f ad 8a |4.........ng....|
00000100 d0 3b 61 db 6c 96 af 22 cb b2 e5 20 9a 8e 58 d8 |.;a.l.."... ..X.|
00000110 15 5d 11 47 20 f1 8c 7a d2 0f b0 be d9 14 49 89 |.].G ..z......I.|
00000120 8a 37 c4 12 ff 6f 92 78 01 ff 59 dc 50 a1 8c 10 |.7...o.x..Y.P...|
00000130 c7 f6 91 da 5e 0b dd b7 18 93 9f fe 0d 07 af ec |....^...........|
00000140 79 a1 2a 03 03 a8 e4 83 60 44 e5 21 d4 24 54 8f |y.*.....`D.!.$T.|
00000150 4f 18 71 68 9d 53 ad bc 72 18 82 bf 6c 8b ca d9 |O.qh.S..r...l...|
00000160 f2 3a b7 bd 3c 0d 46 0b bb 6a 38 83 ee fa 19 62 |.:..<.F..j8....b|
00000170 07 bf 09 38 fa d5 94 06 0f 8e 93 fa 82 c3 fc 6e |...8...........n|
00000180 39 aa df e4 |9...|
>>> Flow 12 (server to client)
00000000 00 00 01 40 be 1d 0f a6 fb 0e ab e1 7e e6 60 1d |...@........~.`.|
00000010 ab ed 8f dd f6 36 f3 d9 28 01 8d 51 5a 2d bd 30 |.....6..(..QZ-.0|
00000020 94 8b c3 8b d7 d0 8d 6c 85 6a 26 7f 1f 3e 44 48 |.......l.j&..>DH|
00000030 f8 8b d2 47 da 8d 18 26 3a 2f 7c 4f 2f 49 34 89 |...G...&:/|O/I4.|
00000040 c9 ec 9b 72 1c 3d 22 c1 b5 0f 7c 6a 1e e7 f1 a6 |...r.="...|j....|
00000050 59 9f aa af 06 1d 54 51 55 4f ab a3 a9 98 f0 e1 |Y.....TQUO......|
00000060 0a 72 fe 06 71 e6 b5 ce 81 71 5c d9 32 00 0e dc |.r..q....q\.2...|
00000070 a4 a8 e8 94 6e de 3f 7d 01 81 59 d3 31 92 e1 a0 |....n.?}..Y.1...|
00000080 a8 e2 43 24 cb a9 50 b7 19 ee 88 eb 1a b6 c5 68 |..C$..P........h|
00000090 38 b3 58 6f 5b fb 1b 94 8d 53 8d 03 8b 0c 6d 6f |8.Xo[....S....mo|
000000a0 7d 22 44 e5 ed ec 5a d4 b9 f5 b6 71 7f e6 69 4f |}"D...Z....q..iO|
000000b0 1a 5d 41 07 e0 68 d4 39 4a 71 1d 45 23 42 6b 9d |.]A..h.9Jq.E#Bk.|
000000c0 51 37 4c 08 cd 07 6e 6a 7f fc af 54 57 cc f9 f9 |Q7L...nj...TW...|
000000d0 a1 f8 b9 43 fe ef 10 7e 08 2a 84 a7 cc c6 fa 10 |...C...~.*......|
000000e0 36 4a 3c cf 5c 88 42 0b 9f c5 99 18 0f 4f 7f 4b |6J<.\.B......O.K|
000000f0 4b cf dc d7 45 6b f2 73 20 20 7a 05 4a 2e 91 9a |K...Ek.s z.J...|
00000100 9d 9b 11 b9 d1 8b 42 e8 b4 5e 37 47 af 6a bf d7 |......B..^7G.j..|
00000110 c0 fc b1 0b 9f bb 37 e1 dc bc 87 61 0b d4 a4 ff |......7....a....|
00000120 60 09 0c ed 58 de f3 d6 75 e5 50 37 cc ce da fc |`...X...u.P7....|
00000130 db d5 c3 fe 10 6b 82 f2 20 60 1e 2c a1 85 cb df |.....k.. `.,....|
00000140 13 5b b3 34 ae 0c 6c 47 63 d1 a5 4a f0 a4 6d cd |.[.4..lGc..J..m.|
00000150 27 49 b3 f4 64 d8 ad f1 d5 98 b5 ad eb be 00 1f |'I..d...........|
00000160 87 f4 db aa |....|
>>> Flow 13 (client to server)
00000000 00 00 02 80 a3 75 dd 61 db 5d ec c8 01 75 ed 65 |.....u.a.]...u.e|
00000010 40 8e d8 3b 85 28 d5 8e 14 c3 dc 3f e6 f5 78 35 |@..;.(.....?..x5|
00000020 50 41 cf 9d 0e d4 e2 de bf d5 31 12 3f ea da d6 |PA........1.?...|
00000030 bf 7d 0e 77 80 eb 0f 8c 6e 93 61 20 4b be 31 0b |.}.w....n.a K.1.|
00000040 45 83 08 93 cd c1 da 70 b5 6c f0 9a 34 f7 a4 86 |E......p.l..4...|
00000050 19 63 a8 39 82 9b 58 a8 15 88 6e 6d 11 0d e1 f9 |.c.9..X...nm....|
00000060 34 41 39 26 3c 1a d6 9c 94 fe 40 55 44 7d b7 87 |4A9&<.....@UD}..|
00000070 0c 72 5c 1e e5 fb 5c f5 9a f7 c7 fa 64 47 79 8e |.r\...\.....dGy.|
00000080 e2 b3 9c 67 19 27 85 c5 2c 1b 65 47 32 20 e8 14 |...g.'..,.eG2 ..|
00000090 82 d4 f4 3d bc 3c 12 f1 6c 96 05 80 53 d0 9f 77 |...=.<..l...S..w|
000000a0 a6 58 8e 01 a3 dc 65 4b 11 ff 1c 21 66 98 c4 9a |.X....eK...!f...|
000000b0 c3 44 d5 fe 5d bd fd 77 ad ab a0 96 73 81 87 34 |.D..]..w....s..4|
000000c0 47 6d 98 2f 3f 8d 10 ea d3 9f 25 62 b4 e7 7b e6 |Gm./?.....%b..{.|
000000d0 b9 1c 0d 3b 32 d5 85 a0 40 5f c7 c1 92 f9 9a 7f |...;2...@_......|
000000e0 11 93 f7 9e d8 60 5e 93 17 d8 07 aa 3c eb fa d3 |.....`^.....<...|
000000f0 85 8f e5 34 8b a1 23 3b 03 b4 8d 2d 71 1d 20 6d |...4..#;...-q. m|
00000100 d1 04 13 fb 9c dd 0d b5 4b 8c 85 47 55 5f 72 c7 |........K..GU_r.|
00000110 66 43 35 5a b5 d8 26 94 fa 83 0d 45 47 a3 47 9b |fC5Z..&....EG.G.|
00000120 72 5c 96 78 94 37 49 2a ca e7 59 9f 34 aa 2d df |r\.x.7I*..Y.4.-.|
00000130 f7 95 82 b7 b9 52 dc ea a4 72 a4 60 23 ab 4a 3a |.....R...r.`#.J:|
00000140 1a fc 56 ae e4 39 6e da f3 00 f6 18 7a 45 48 46 |..V..9n.....zEHF|
00000150 a2 ad 06 86 6b d2 e1 02 4c f8 e0 84 cc 09 07 cd |....k...L.......|
00000160 b5 6c 12 58 14 7b a1 b6 a1 72 eb 89 75 22 3f 2d |.l.X.{...r..u"?-|
00000170 11 a4 61 4b cb c0 2f 4a 67 52 f5 3a 58 5b 34 63 |..aK../JgR.:X[4c|
00000180 5d d0 01 d1 af 8d d3 26 2c 97 41 81 ee 22 5b 5a |]......&,.A.."[Z|
00000190 3e e0 f2 08 64 52 4d b7 4a cf 49 69 ac 1d 6c 55 |>...dRM.J.Ii..lU|
000001a0 2f 58 c3 e6 7c 72 91 80 94 51 83 40 56 ab cc 70 |/X..|r...Q.@V..p|
000001b0 bd 48 1c e2 1d ef 4f 00 b9 bd ce e4 f0 be 17 9e |.H....O.........|
000001c0 3f e0 ae 36 f4 f5 2a 59 5f e6 62 77 e3 3e 59 2c |?..6..*Y_.bw.>Y,|
000001d0 5a 8d b1 22 7d 37 ef a3 ae 9c 7a a4 ab 90 e9 81 |Z.."}7....z.....|
000001e0 2e 3f 29 2b 67 d6 7b 36 1c 12 62 16 03 62 3d 51 |.?)+g.{6..b..b=Q|
000001f0 bc 0a 71 25 d9 0a 98 51 4c a0 53 aa cf 61 20 56 |..q%...QL.S..a V|
00000200 a0 03 5a 70 cd 2b 2a 74 90 16 bb de 54 c0 5f 82 |..Zp.+*t....T._.|
00000210 f4 43 e7 d1 69 b9 69 a4 a8 14 92 6a 97 3b bf e5 |.C..i.i....j.;..|
00000220 5a f6 45 d2 2e cc 6e b2 a9 68 d5 7f 86 0d d8 e9 |Z.E...n..h......|
00000230 9d e3 bd 22 1a 5e cd 1a fd 64 b1 61 9a fe 41 16 |...".^...d.a..A.|
00000240 e0 7a 6b 30 a0 35 99 9d 1e 77 e0 03 44 f7 b3 6c |.zk0.5...w..D..l|
00000250 ee 22 a7 b8 4c 2c 26 4c 30 c7 a0 38 66 66 45 0d |."..L,&L0..8ffE.|
00000260 7f 63 aa 36 e5 07 96 0c 16 14 fb 95 62 f9 41 a7 |.c.6........b.A.|
00000270 aa 2b 6c 19 7d f6 da f2 21 e8 62 a1 cb ce f6 8c |.+l.}...!.b.....|
00000280 d6 75 43 c9 ea f8 7b 7b ed 37 10 b4 4b 3a b9 81 |.uC...{{.7..K:..|
00000290 0f 67 ba 13 e9 d5 7a 41 f4 f8 98 0b ea f6 6b 20 |.g....zA......k |
000002a0 2f f0 a1 0d |/...|
>>> Flow 14 (server to client)
00000000 00 00 00 10 3f 5d 35 f7 01 4c 70 e9 30 90 09 84 |....?]5..Lp.0...|
00000010 b0 ec 12 34 93 9d 81 4d f4 34 83 37 62 ef 31 a5 |...4...M.4.7b.1.|
00000020 d3 03 ce 5d dd 58 1d 5d 0f a5 7c 65 db c9 c2 24 |...].X.]..|e...$|
00000030 c8 35 8e 77 |.5.w|
+287
View File
@@ -0,0 +1,287 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 7c 0d 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |...|....+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 16 61 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 |..aes256-gcm@ope|
00000150 6e 73 73 68 2e 63 6f 6d 00 00 00 16 61 65 73 32 |nssh.com....aes2|
00000160 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 |56-gcm@openssh.c|
00000170 6f 6d 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d |om...nhmac-sha2-|
00000180 32 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e |256-etm@openssh.|
00000190 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 |com,hmac-sha2-51|
000001a0 32 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f |2-etm@openssh.co|
000001b0 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
000001c0 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
000001d0 61 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 |ac-sha1,hmac-sha|
000001e0 31 2d 39 36 00 00 00 6e 68 6d 61 63 2d 73 68 61 |1-96...nhmac-sha|
000001f0 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-256-etm@openss|
00000200 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d |h.com,hmac-sha2-|
00000210 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e |512-etm@openssh.|
00000220 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 |com,hmac-sha2-25|
00000230 36 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c |6,hmac-sha2-512,|
00000240 68 6d 61 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 |hmac-sha1,hmac-s|
00000250 68 61 31 2d 39 36 00 00 00 04 6e 6f 6e 65 00 00 |ha1-96....none..|
00000260 00 04 6e 6f 6e 65 00 00 00 00 00 00 00 00 00 00 |..none..........|
00000270 00 00 00 d7 3b 80 93 f6 ef bc 88 eb 1a 6e ac fa |....;........n..|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 03 91 97 87 a7 dc fc 58 9c f9 |.............X..|
00000010 12 c3 72 62 44 c3 00 00 01 7a 73 6e 74 72 75 70 |..rbD....zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 7e 4a 3b cc bf 9a |...,..... ~J;...|
00000010 2e 84 5f cb bb 32 fa b6 67 2f 28 60 b3 d3 48 e8 |.._..2..g/(`..H.|
00000020 f9 c9 38 6f ae b4 a3 c4 5b 73 ae 57 e2 35 b8 cc |..8o....[s.W.5..|
>>> Flow 6 (server to client)
00000000 00 00 01 04 0a 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 6f 1c 0a 10 b7 60 53 0b e1 9e |..... o....`S...|
00000080 ef 53 02 0f 90 c5 91 92 17 e2 5f be 6a 69 7b f3 |.S........_.ji{.|
00000090 b9 d0 fa 44 a4 0f 00 00 00 64 00 00 00 13 65 63 |...D.....d....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 49 00 00 00 20 2d 84 a6 de 6c 7f 15 |6...I... -...l..|
000000c0 62 4e 01 3f b2 e3 d5 d0 49 6c d4 49 ba 88 91 50 |bN.?....Il.I...P|
000000d0 65 12 77 52 fd 05 06 5a e4 00 00 00 21 00 f5 50 |e.wR...Z....!..P|
000000e0 28 ab 99 21 48 6a a1 dc 58 1e b4 d4 3c 3c c2 1a |(..!Hj..X...<<..|
000000f0 55 41 da 44 38 57 05 ce eb 03 1a 5b 6d 3b 00 00 |UA.D8W.....[m;..|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 b6 4c c2 9f |...........@.L..|
00000120 41 92 5c 10 ee c9 55 48 4a f5 42 da ff 2b c6 34 |A.\...UHJ.B..+.4|
00000130 b7 8d 3f 48 a3 f1 61 57 dc 5b f9 f2 3a bc 19 14 |..?H..aW.[..:...|
00000140 31 72 fc 1e fb 12 c6 1f cf c6 ee 5c 3b b4 e8 d0 |1r.........\;...|
00000150 b5 1a f4 ef 1f a8 40 68 2d 99 10 17 97 83 b7 35 |......@h-......5|
00000160 6e e9 81 0e 54 ad d2 05 2a 50 c1 36 0c b9 af c9 |n...T...*P.6....|
00000170 cc 27 30 ac ea 70 65 7a e8 2b 0d 82 9a 60 b2 09 |.'0..pez.+...`..|
00000180 3b fb 55 8b e3 2a c3 27 bb ba d0 40 5b d3 4b 94 |;.U..*.'...@[.K.|
00000190 59 59 0b 23 ec 55 cd fb 70 9a eb f1 54 cb 83 8f |YY.#.U..p...T...|
000001a0 d0 52 fb 3c 59 0e 49 7e 8b 5d 9a 1a f9 0b 85 2a |.R.<Y.I~.].....*|
000001b0 e5 2e 0a 45 62 9a 6b a1 d1 b0 c9 75 d0 5e bd 7d |...Eb.k....u.^.}|
000001c0 16 94 af 23 f1 76 8b 1c 12 68 7b d6 f7 b1 fa 01 |...#.v...h{.....|
000001d0 29 37 0a f5 01 5b 9c 90 70 8b 7c 83 8f 07 0e 00 |)7...[..p.|.....|
000001e0 7e d4 29 54 ab 84 a9 11 60 88 0f 0d 00 6b c8 44 |~.)T....`....k.D|
000001f0 1d 31 e0 8f 1e 14 19 ee 08 6b 9d 7f 95 49 2b e7 |.1.......k...I+.|
00000200 a3 d2 0a 2b 1f 78 8f 2d 49 1f a8 b1 af ba a4 fd |...+.x.-I.......|
00000210 63 bc 4c 74 ab 34 28 de f7 ec 3c fb 33 94 a7 a1 |c.Lt.4(...<.3...|
00000220 12 26 aa e7 fe 08 b1 d6 74 34 d8 3b ee 39 32 c0 |.&......t4.;.92.|
00000230 eb c8 89 56 cc aa 15 79 8c 48 f7 14 da 4f b4 f7 |...V...y.H...O..|
00000240 0b 87 18 95 92 58 63 eb 6d 07 00 9f 35 16 b8 a5 |.....Xc.m...5...|
00000250 88 99 d6 da ba d2 e6 44 f2 b7 4d b5 4c 6d 94 ce |.......D..M.Lm..|
00000260 f8 93 c1 41 bc cc 43 70 79 08 cf 9f |...A..Cpy...|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 87 3c 23 dc 62 b8 d2 60 16 9a |.......<#.b..`..|
00000010 00 00 00 20 7c 71 d9 dc 5d cc a9 fd ae 24 a4 97 |... |q..]....$..|
00000020 41 b8 a5 d4 9a 32 d5 b7 f9 b7 e3 a1 38 2d 68 0d |A....2......8-h.|
00000030 bf 8a 17 14 6e 0d d7 d8 9a 4e 46 06 ca a5 b9 8e |....n....NF.....|
00000040 33 3d 14 3f |3=.?|
>>> Flow 8 (server to client)
00000000 00 00 00 20 d5 70 c2 d4 80 cb d1 bb e2 1d ff 1d |... .p..........|
00000010 db b1 8a a0 71 4d 9c a2 63 b9 56 0e 77 27 f5 58 |....qM..c.V.w'.X|
00000020 2a bd 6d 3d b3 4c 03 61 9f 4f b5 4d 00 40 83 58 |*.m=.L.a.O.M.@.X|
00000030 5c bb 23 03 |\.#.|
>>> Flow 9 (client to server)
00000000 00 00 00 30 37 f6 af dc 45 36 44 d6 4d ac 66 4c |...07...E6D.M.fL|
00000010 75 05 bb 94 58 cf 92 a1 a6 65 ae 74 f2 cd 57 fc |u...X....e.t..W.|
00000020 89 e0 6d 5a 1d 9f 0b 6c 91 af 66 0b dc f8 ff b6 |..mZ...l..f.....|
00000030 af 02 ff 3e ed 57 ec d4 59 00 76 42 d0 59 a3 c5 |...>.W..Y.vB.Y..|
00000040 52 b1 2b 16 |R.+.|
>>> Flow 10 (server to client)
00000000 00 00 00 20 79 bc 0a 5d f3 59 0d d6 11 6e c4 8c |... y..].Y...n..|
00000010 f1 ca 15 d2 fc 1f da 1b 63 5b b6 b5 ce 29 14 e6 |........c[...)..|
00000020 e4 98 cb b1 7f 47 4e c3 21 65 19 ea de 65 1f 53 |.....GN.!e...e.S|
00000030 98 9a 5e 7f 00 00 00 40 ae 3d 2e cc 14 74 18 4c |..^....@.=...t.L|
00000040 9b 82 c3 af 1c 24 75 89 1f 8f a4 db dd 41 2e 16 |.....$u......A..|
00000050 b8 56 b7 1e 3c 62 3b 48 96 97 6c f3 51 36 4a ec |.V..<b;H..l.Q6J.|
00000060 bb 82 95 e9 9e c3 5a ae ad 0c 40 a7 65 11 00 10 |......Z...@.e...|
00000070 eb 0a b3 db b3 53 57 8a 57 7b 38 b2 4e 32 72 10 |.....SW.W{8.N2r.|
00000080 d5 ae 40 99 15 98 f7 6c |..@....l|
>>> Flow 11 (client to server)
00000000 00 00 01 60 87 65 80 4e 94 61 76 b8 1d 06 ff 7c |...`.e.N.av....||
00000010 f2 89 9c ee 77 6a 38 f6 aa 17 d4 33 25 81 c2 91 |....wj8....3%...|
00000020 75 5b ae b8 15 c6 28 bc 98 9e 70 91 68 68 08 ae |u[....(...p.hh..|
00000030 6b 36 ea da 18 60 91 45 85 62 bf f6 23 a1 f0 4b |k6...`.E.b..#..K|
00000040 0b d2 02 e6 57 d1 5e 79 ef 6f 6a 72 b5 04 5b f5 |....W.^y.ojr..[.|
00000050 e1 d7 73 b2 f9 d9 21 65 fc 69 2d 02 1f c5 4c 78 |..s...!e.i-...Lx|
00000060 92 7b b6 da ff 88 19 f2 48 57 3e e5 e7 6b 79 74 |.{......HW>..kyt|
00000070 67 8d 65 f7 09 63 6f 04 0a e1 5e a1 c9 a0 83 2a |g.e..co...^....*|
00000080 69 fb 41 12 48 82 e9 71 5e 05 b2 23 44 87 c1 dc |i.A.H..q^..#D...|
00000090 7a d0 37 a6 bc 8d 45 39 37 c7 bf 91 14 8e e3 9b |z.7...E97.......|
000000a0 9c 47 4e e6 75 71 67 d9 cd 13 54 ca 08 5d 0f b6 |.GN.uqg...T..]..|
000000b0 79 2e fa 6f 13 a9 e5 d0 2e f7 05 a6 34 91 94 23 |y..o........4..#|
000000c0 fe b4 90 44 9b cf 53 ed b0 21 b5 5d c6 51 3a 93 |...D..S..!.].Q:.|
000000d0 9d 26 a5 47 f2 6c 01 98 c1 9b 15 ff cd 5a 7a a9 |.&.G.l.......Zz.|
000000e0 88 7c 32 3c e0 36 61 91 08 1e f3 d2 ca 8d d7 9d |.|2<.6a.........|
000000f0 28 9f bc c5 71 e0 ee 69 11 9d b9 a0 9b a4 e6 cc |(...q..i........|
00000100 57 29 48 ff bf ae 00 cc ef 25 bc 87 d4 d1 ec a8 |W)H......%......|
00000110 6e e4 5e 1b 4f a6 71 da 5f 0e b8 57 a5 72 bf 30 |n.^.O.q._..W.r.0|
00000120 0f 62 e2 da 76 01 92 67 a5 c5 5d d5 ec c3 e7 8f |.b..v..g..].....|
00000130 04 33 51 17 e3 46 4c 86 1c 03 26 0d e2 25 9b 80 |.3Q..FL...&..%..|
00000140 fe 99 63 a1 57 26 20 ed 20 0c 38 3a 3a e3 65 3a |..c.W& . .8::.e:|
00000150 98 e4 1b 76 05 f8 22 2e 8d f2 6e ec b3 ac ed 86 |...v.."...n.....|
00000160 b7 ab f9 b8 d5 5e c6 a5 08 fa 5e 14 48 24 02 52 |.....^....^.H$.R|
00000170 ca ab d6 9f |....|
>>> Flow 12 (server to client)
00000000 00 00 01 40 ab 28 ac fe d0 b6 a5 bb 27 a8 07 87 |...@.(......'...|
00000010 10 3f 81 13 69 32 61 02 d7 3a 1c d2 87 96 5c 84 |.?..i2a..:....\.|
00000020 87 5a b9 aa f4 f5 53 97 64 de 31 37 6f 96 ab 41 |.Z....S.d.17o..A|
00000030 71 f4 13 0c 2a 0c 97 c4 33 52 3c 45 84 de b2 d8 |q...*...3R<E....|
00000040 8c 45 91 00 ea a5 d6 61 e3 a1 55 de 9b 9f 0f 96 |.E.....a..U.....|
00000050 2f 1e 62 99 15 44 81 f7 4f aa 72 37 cf 1f 17 6e |/.b..D..O.r7...n|
00000060 38 40 5c 8f 2d b7 bc 5d de c0 2b f3 20 b0 e7 04 |8@\.-..]..+. ...|
00000070 64 54 f0 46 8d 97 22 47 26 be cd 9a 15 ed f3 66 |dT.F.."G&......f|
00000080 74 ff b1 6f 03 4d 0c 1a d3 d5 20 8e fc f5 ae 92 |t..o.M.... .....|
00000090 78 8c 76 74 cd 7c ad 2b e1 18 49 d3 80 af 26 e3 |x.vt.|.+..I...&.|
000000a0 78 1e 9c e2 1c 6b 32 a2 79 2e 8d 02 77 9e f7 05 |x....k2.y...w...|
000000b0 e8 97 52 c7 e9 0e a7 59 d9 8e 17 2d fc 42 3d 17 |..R....Y...-.B=.|
000000c0 0b 3a 73 e5 53 ca 52 70 df 77 24 55 3a c6 25 79 |.:s.S.Rp.w$U:.%y|
000000d0 ee 81 c8 bf 26 74 0b 2c 5f d6 10 16 fd f7 0d 63 |....&t.,_......c|
000000e0 89 0b 38 05 35 05 ed f6 66 75 17 38 0b 46 cd 10 |..8.5...fu.8.F..|
000000f0 63 0d 1e ba b9 d5 06 1a 77 20 1f 00 8d da f4 03 |c.......w ......|
00000100 3d 45 5f 0e 52 cc fb 98 ff b6 9b 6e c1 b6 0b 08 |=E_.R......n....|
00000110 61 c4 ba 99 e3 17 4b a2 fe f1 ae de 89 6c 0e a7 |a.....K......l..|
00000120 ed 58 a3 ff 74 eb 05 56 5d 3a a0 00 14 a5 f4 45 |.X..t..V]:.....E|
00000130 50 ec 4f de 9c 8f 97 97 09 39 47 1b 90 e3 d2 c9 |P.O......9G.....|
00000140 b8 00 aa 37 24 94 24 ae c1 18 cb 9d 43 c4 20 2d |...7$.$.....C. -|
00000150 34 8b 33 94 |4.3.|
>>> Flow 13 (client to server)
00000000 00 00 02 80 8b 2f be b2 46 70 97 b1 d1 3c 8b de |...../..Fp...<..|
00000010 53 82 86 33 ed 61 0d 2f bf 22 cd 98 93 2f 68 94 |S..3.a./.".../h.|
00000020 ed c0 3c 25 fc 82 fb 33 fa 03 16 5d 32 1a 87 4d |..<%...3...]2..M|
00000030 52 d5 c0 7f 1d 0d 3d 88 29 32 54 8a 31 b5 a7 18 |R.....=.)2T.1...|
00000040 17 0a 47 a2 98 70 c3 43 bb f8 31 1e 0d 19 c2 f0 |..G..p.C..1.....|
00000050 d5 f9 ff 70 5d d8 db cf 63 1f 49 fb d6 fe 0a 41 |...p]...c.I....A|
00000060 fc 86 f6 e9 18 11 04 21 db 11 82 1c 0e 23 90 11 |.......!.....#..|
00000070 b3 f5 90 64 f2 65 f6 35 ac a5 e3 99 ee 12 1d a2 |...d.e.5........|
00000080 9a db a7 1b e8 99 65 eb 92 a0 3d e5 bd da 5e 56 |......e...=...^V|
00000090 97 29 5c bb 7f 22 1e 0c 96 9c cc 1f 0f 07 f8 18 |.)\.."..........|
000000a0 f0 db 47 a4 6c 85 c5 3c ab df 84 4e 04 06 24 1c |..G.l..<...N..$.|
000000b0 84 cf 7c 13 90 81 9b 7e c9 56 43 66 ff 63 05 33 |..|....~.VCf.c.3|
000000c0 5c 70 2e 74 9a 8e ba 43 e2 61 65 67 2e e3 8b d2 |\p.t...C.aeg....|
000000d0 e0 47 80 61 66 ff 33 87 7e 97 b3 e9 1e 8d 9a 96 |.G.af.3.~.......|
000000e0 c9 ca e2 61 3e 28 ec 1d d5 18 72 65 57 44 fb 17 |...a>(....reWD..|
000000f0 ca 70 d6 26 87 d4 a0 42 2e 3f f7 a2 3e 93 08 1d |.p.&...B.?..>...|
00000100 ad b4 3f 7f 93 08 d0 6d 76 0b 2b 8b 2d ae 09 04 |..?....mv.+.-...|
00000110 f7 4d 02 0d ad 66 44 08 91 16 70 b1 98 b9 5a 86 |.M...fD...p...Z.|
00000120 5e 69 7d f3 0d 3d 9a 0c 08 f6 7d 66 87 ea 9a 0b |^i}..=....}f....|
00000130 60 43 f6 67 07 1c 37 41 54 65 c0 06 c1 b5 91 0c |`C.g..7ATe......|
00000140 83 49 ba 53 2f 87 bb 83 27 29 c8 7f 27 09 ba f2 |.I.S/...')..'...|
00000150 ac 77 e3 a5 71 b8 13 73 74 90 63 a7 89 ec e2 b6 |.w..q..st.c.....|
00000160 2c bf 3e ac 78 45 ec 48 3a 97 2a 63 74 35 04 55 |,.>.xE.H:.*ct5.U|
00000170 a7 16 c1 dd 1a 1b 9c ea f7 18 73 5d 8e 94 7e c1 |..........s]..~.|
00000180 15 49 5c fd 2f 0e b0 40 e4 22 e1 38 0d c0 3d ee |.I\./..@.".8..=.|
00000190 c9 9d 74 34 a0 a0 f9 cf fd 94 ff 0f db c2 4c f1 |..t4..........L.|
000001a0 ea 2e c0 ce fb f8 b4 af 8b 8d 2f 9c 61 21 b7 8f |........../.a!..|
000001b0 fb 95 3e ac e8 81 a3 66 a7 83 8c 7c 0e 63 d7 fb |..>....f...|.c..|
000001c0 e5 49 af 6c 6d 23 51 26 d3 ac c8 55 12 f7 42 44 |.I.lm#Q&...U..BD|
000001d0 61 6a 1b 0c f7 9c 85 9b 87 66 f6 0e b6 2e 41 f2 |aj.......f....A.|
000001e0 c4 9c 98 35 8e 27 84 8b 48 44 19 8d bf 0f e2 0d |...5.'..HD......|
000001f0 93 f9 c8 34 8d 7f f5 54 28 d2 02 7d 00 02 c4 a2 |...4...T(..}....|
00000200 34 96 40 3d ab be 35 9e b9 be ad 83 8b 34 19 5f |4.@=..5......4._|
00000210 12 93 22 f2 c5 2b ec 2f e5 db bb 37 05 6c 7e cc |.."..+./...7.l~.|
00000220 d9 0b 1f 46 70 b6 cb 41 8a 79 19 0d eb fe 4d 53 |...Fp..A.y....MS|
00000230 7c 24 f4 9a d3 43 8f 3a 0c 31 8c 30 7d 4b 5a 8f ||$...C.:.1.0}KZ.|
00000240 81 33 18 65 fe 04 8b a6 67 85 ef c9 34 43 8a 78 |.3.e....g...4C.x|
00000250 0d 85 47 5d 17 72 6d d7 29 e6 14 cb f7 6e ee cf |..G].rm.)....n..|
00000260 4f 22 84 ed b7 40 1f 24 ce 11 17 0d bb bb ea fd |O"...@.$........|
00000270 26 68 7e 73 04 d6 41 c0 fe f0 66 b8 03 12 52 46 |&h~s..A...f...RF|
00000280 7b 1d e5 49 93 80 ec 32 6f 41 81 46 a4 e3 02 23 |{..I...2oA.F...#|
00000290 f8 35 25 2f |.5%/|
>>> Flow 14 (server to client)
00000000 00 00 00 10 8b 43 54 b5 76 8b ee 65 e2 20 47 aa |.....CT.v..e. G.|
00000010 9b 27 eb 3c a6 cb dc ca d0 f9 a2 ee d9 33 60 1e |.'.<.........3`.|
00000020 2d 77 5a 63 |-wZc|
+282
View File
@@ -0,0 +1,282 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 8c 0f 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |........+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 1d 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 |..chacha20-poly1|
00000150 33 30 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 00 |305@openssh.com.|
00000160 00 00 1d 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 |...chacha20-poly|
00000170 31 33 30 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |1305@openssh.com|
00000180 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d 32 35 |...nhmac-sha2-25|
00000190 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f |6-etm@openssh.co|
000001a0 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d |m,hmac-sha2-512-|
000001b0 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
000001c0 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c 68 6d |hmac-sha2-256,hm|
000001d0 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d 61 63 |ac-sha2-512,hmac|
000001e0 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 31 2d |-sha1,hmac-sha1-|
000001f0 39 36 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d |96...nhmac-sha2-|
00000200 32 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e |256-etm@openssh.|
00000210 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 |com,hmac-sha2-51|
00000220 32 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f |2-etm@openssh.co|
00000230 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000240 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000250 61 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 |ac-sha1,hmac-sha|
00000260 31 2d 39 36 00 00 00 04 6e 6f 6e 65 00 00 00 04 |1-96....none....|
00000270 6e 6f 6e 65 00 00 00 00 00 00 00 00 00 00 00 00 |none............|
00000280 00 d7 3b 80 93 f6 ef bc 88 eb 1a 6e ac fa 66 ef |..;........n..f.|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 2f eb 28 ce 9c 5d d8 9e bb 3c |....../.(..]...<|
00000010 8b 7a f7 f2 71 bc 00 00 01 7a 73 6e 74 72 75 70 |.z..q....zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 b4 a9 7d fd 9e 94 |...,..... ..}...|
00000010 7e 5f be f6 5c 5f 3f ca 56 d5 49 14 88 a0 84 49 |~_..\_?.V.I....I|
00000020 79 61 2d 25 d7 0b 0f d8 b9 53 e2 35 b8 cc 87 3c |ya-%.....S.5...<|
>>> Flow 6 (server to client)
00000000 00 00 01 04 09 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 c7 36 22 b7 17 99 92 92 37 dd |..... .6".....7.|
00000080 14 42 9c 37 a4 54 99 71 c7 ee 4f 3c 6a 13 8a 61 |.B.7.T.q..O<j..a|
00000090 77 f4 42 46 4a 2e 00 00 00 65 00 00 00 13 65 63 |w.BFJ....e....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 4a 00 00 00 21 00 f4 10 20 b7 44 ef |6...J...!... .D.|
000000c0 34 ca a0 97 9f fb 8e c0 62 94 9b 96 69 e0 4a 48 |4.......b...i.JH|
000000d0 51 6b e1 b1 d8 78 ac c5 43 17 00 00 00 21 00 9f |Qk...x..C....!..|
000000e0 9e 4b 2d 48 81 bc 08 a0 92 0e 85 58 c3 f5 9c 2b |.K-H.......X...+|
000000f0 a0 18 88 db c9 20 45 1d be 18 9b d7 f1 fe cc 00 |..... E.........|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 93 d6 5e ab 31 d6 bf 57 |..........^.1..W|
00000120 f4 30 59 03 99 cd f1 06 6d 38 7a 76 20 59 10 1a |.0Y.....m8zv Y..|
00000130 2d 0a ba 5e 30 1e 55 9e f9 9b 5e 9c b0 88 e1 de |-..^0.U...^.....|
00000140 44 82 49 23 ad 02 7d 59 10 be 78 24 1f 57 28 26 |D.I#..}Y..x$.W(&|
00000150 05 47 bd 82 71 4e 9a c9 49 36 cc dd c3 53 6d 25 |.G..qN..I6...Sm%|
00000160 3e c7 75 f7 61 5a 3b b0 7c 1d e6 0f c7 9d 10 05 |>.u.aZ;.|.......|
00000170 59 4f d1 52 e9 58 c2 db 7f 66 27 ef 1e 2d cb 11 |YO.R.X...f'..-..|
00000180 f0 37 28 2a 23 97 20 14 8a 1d 0a de 05 04 ec 63 |.7(*#. ........c|
00000190 7d f5 af 6c 42 96 9e 31 ad ca c4 38 ba db f0 a5 |}..lB..1...8....|
000001a0 9b 4a 31 ff e2 0d 5f eb f2 bd 17 9e ba 57 1c 24 |.J1..._......W.$|
000001b0 bc 76 f7 5a f1 1c 71 bf f4 56 08 25 0f 76 4c 7a |.v.Z..q..V.%.vLz|
000001c0 40 dc 82 88 2c 97 f0 45 99 72 52 49 35 8c 04 ff |@...,..E.rRI5...|
000001d0 9c f4 6b 06 7e af ce 51 68 1a 64 58 47 02 a3 8b |..k.~..Qh.dXG...|
000001e0 6a c4 51 5d 86 05 86 7b db f4 81 e4 40 63 06 c4 |j.Q]...{....@c..|
000001f0 fd ae 4c f4 8d 98 49 2f f8 86 59 d4 3a 5b 02 88 |..L...I/..Y.:[..|
00000200 73 19 76 bb 0f 5d 8a f0 ce f1 d3 d0 ef 20 0b 1b |s.v..]....... ..|
00000210 48 e1 d0 9f 4f 76 57 9b 24 b4 2c 02 07 b4 eb a9 |H...OvW.$.,.....|
00000220 06 93 ae c1 61 9b a1 28 e3 20 68 49 8d 58 7b 35 |....a..(. hI.X{5|
00000230 7e 16 5c ad 6d f0 2e 43 44 58 90 3f 9f e6 19 5f |~.\.m..CDX.?..._|
00000240 dc 89 9e 6e e9 ce cc 6c d6 c0 a0 b3 f8 93 1d 2a |...n...l.......*|
00000250 2f be a5 be bc e3 64 79 a6 85 9e 17 47 1c 04 39 |/.....dy....G..9|
00000260 20 33 c8 ba | 3..|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 23 dc 62 b8 d2 60 16 9a fa 2f |......#.b..`.../|
00000010 3a 3a 49 cd 8e 18 51 64 5f ad ec fd 18 0d 67 93 |::I...Qd_.....g.|
00000020 dc 69 96 a5 3a 55 3b 23 a6 90 c1 da ff ba 80 e5 |.i..:U;#........|
00000030 21 a1 87 7e c8 d1 6d e9 bd 1e 59 08 |!..~..m...Y.|
>>> Flow 8 (server to client)
00000000 f5 90 9d 63 c4 ef 0d f2 b8 74 64 a4 c4 e7 4a f3 |...c.....td...J.|
00000010 18 40 b7 65 ae f5 8e 1f 8d ef 69 01 c7 74 f7 b6 |.@.e......i..t..|
00000020 9a 38 cd 3c 0a ff 7f b6 b6 fd 25 b1 |.8.<......%.|
>>> Flow 9 (client to server)
00000000 a0 93 a8 e3 ec 1e 7a a9 73 9a b1 17 61 5d 64 dd |......z.s...a]d.|
00000010 59 8e 40 25 06 16 99 21 d2 86 7e aa c9 c7 9a df |Y.@%...!..~.....|
00000020 45 8b b2 95 58 b1 9f f2 04 c1 24 44 3b f4 e8 05 |E...X.....$D;...|
00000030 70 29 74 8a d1 f8 be 75 59 1e a3 30 1d 6b 6e 25 |p)t....uY..0.kn%|
00000040 93 d8 1b e8 |....|
>>> Flow 10 (server to client)
00000000 91 31 b3 9f 83 fd d6 0d 5a 4f 1e c4 ba 7f ea 5e |.1......ZO.....^|
00000010 58 cd a5 0a 32 18 7a f6 e2 dd 41 70 7c 03 a8 cb |X...2.z...Ap|...|
00000020 24 da 46 d8 ee bc ba 0c 15 b0 2e 67 82 b2 81 b4 |$.F........g....|
00000030 d2 a6 eb e2 ae 80 80 11 fd 23 9e e8 52 82 8c d3 |.........#..R...|
00000040 15 9c 00 64 3a 2b 20 fe 79 18 63 35 b5 01 a3 18 |...d:+ .y.c5....|
00000050 ad 90 fb 88 9a ef f5 fc 7c 5c b8 f4 88 1f 4f 7e |........|\....O~|
00000060 a1 9e 60 1f ab 40 f9 3b 7d 7d 31 7f c4 6f 8e e6 |..`..@.;}}1..o..|
00000070 a1 2e 66 6f a1 e7 45 86 82 de 78 87 09 e4 94 bf |..fo..E...x.....|
>>> Flow 11 (client to server)
00000000 c4 02 e3 fc 38 5e ea 90 76 a4 8f 6c c2 17 e1 57 |....8^..v..l...W|
00000010 ea d0 6d a9 78 b4 01 65 9d 45 4e 5c cf 52 51 e4 |..m.x..e.EN\.RQ.|
00000020 df 29 ff 66 bd 07 d8 7f cc 6a 88 02 22 92 94 68 |.).f.....j.."..h|
00000030 7d 54 45 36 bc b8 41 17 83 10 28 af 38 19 a6 d4 |}TE6..A...(.8...|
00000040 19 01 dc 8c 0a 01 c3 87 41 a3 61 dd 96 2b bc 40 |........A.a..+.@|
00000050 65 32 59 22 9b 98 fe cb 96 71 f2 a1 c3 f1 d5 e2 |e2Y".....q......|
00000060 d5 b7 92 3e 5c 1c 9c 6a 25 05 d6 d3 0d f2 29 db |...>\..j%.....).|
00000070 4c 36 ea 22 bc 21 13 4e b4 e5 90 e6 be 24 c0 d3 |L6.".!.N.....$..|
00000080 93 d8 1a b8 d4 bc 51 a7 79 b7 ba b5 e4 01 6b aa |......Q.y.....k.|
00000090 3e 42 70 c0 10 24 c4 77 ad 11 db 50 d8 a8 0b 53 |>Bp..$.w...P...S|
000000a0 ab ef a6 e4 9b 81 86 f3 75 fd 00 b5 65 ad d6 1d |........u...e...|
000000b0 08 a1 d1 fc 7b 50 61 0e 56 51 d2 58 13 4e c2 1e |....{Pa.VQ.X.N..|
000000c0 7b c0 1e c6 61 c7 36 ad 00 71 fb cc 9e 89 80 df |{...a.6..q......|
000000d0 83 69 22 99 cd f0 ce 6c d4 e9 d8 4d 23 f8 c6 3f |.i"....l...M#..?|
000000e0 42 1a 4f b1 00 ea cb b7 4d 41 d5 b5 ec f8 11 80 |B.O.....MA......|
000000f0 a6 c5 e0 07 bc b5 b8 8d 8e 67 45 ef 6b 67 4f 37 |.........gE.kgO7|
00000100 d5 56 b5 5c 13 84 91 31 83 73 37 4e 04 f0 50 84 |.V.\...1.s7N..P.|
00000110 3c 42 a8 e6 30 05 10 11 7c f4 3d db 3c 50 59 09 |<B..0...|.=.<PY.|
00000120 7d c3 1f 73 cd 8e c2 05 6b c6 df 8f 0a 4a b7 3c |}..s....k....J.<|
00000130 54 75 47 9d 87 4d 55 c2 85 60 b1 ae b5 db c9 49 |TuG..MU..`.....I|
00000140 2e ed a4 9d 18 41 9c 3e db 52 52 f5 23 a6 18 0c |.....A.>.RR.#...|
00000150 d2 e4 61 c1 12 fa 8a 6e 01 c9 4d a4 66 20 ba da |..a....n..M.f ..|
00000160 36 20 4a 35 56 91 28 42 33 33 b5 71 f2 ef 8c 63 |6 J5V.(B33.q...c|
00000170 24 c9 74 c2 |$.t.|
>>> Flow 12 (server to client)
00000000 96 bc 95 18 58 09 46 79 9d 57 59 05 e2 72 e0 de |....X.Fy.WY..r..|
00000010 f6 38 4c 44 09 55 ba ff 0d d1 2c 8a 96 47 b6 df |.8LD.U....,..G..|
00000020 13 25 b4 85 89 cb 18 df ac b9 6c 5c 5c 43 77 a2 |.%........l\\Cw.|
00000030 1b f5 74 6e 5a 2f 72 77 67 03 43 b4 e1 0e 5e 46 |..tnZ/rwg.C...^F|
00000040 94 05 6a 74 04 62 b1 0f c7 76 99 be 13 8b 3f 23 |..jt.b...v....?#|
00000050 38 12 b4 e2 6d 27 6f c3 e5 12 87 8d 6a 54 50 00 |8...m'o.....jTP.|
00000060 7e 31 12 b4 97 8c 30 10 33 15 21 73 51 1d 7c cb |~1....0.3.!sQ.|.|
00000070 57 1f 17 a9 86 5b 70 3d 30 e1 a1 55 10 3a 0c 37 |W....[p=0..U.:.7|
00000080 7f 61 ab ff 2a ec e8 44 1e 02 be e9 c4 73 b2 61 |.a..*..D.....s.a|
00000090 8c f0 87 c1 bf 35 8f 2b 51 60 04 07 07 28 d6 60 |.....5.+Q`...(.`|
000000a0 7f 89 15 62 cf 2b aa 98 89 d9 3e 2b 05 db 4f b3 |...b.+....>+..O.|
000000b0 24 b0 95 15 97 8d 4d c0 ba ab a9 24 d8 ee 7a 3a |$.....M....$..z:|
000000c0 bd e8 c2 d7 9e 61 97 b3 68 87 fa e5 d3 1e 23 a2 |.....a..h.....#.|
000000d0 e2 5c 65 71 56 d5 10 1d 79 a1 ab 96 61 2e 78 90 |.\eqV...y...a.x.|
000000e0 2e b2 96 de 5e b1 f2 ba 1e 1f b6 f3 77 9e 4c 3b |....^.......w.L;|
000000f0 9e 85 b0 b2 2a 99 cf da 4c c9 46 1b 0f 5e a8 28 |....*...L.F..^.(|
00000100 d8 3a c4 19 a6 ff 3c 0b 88 6f 30 cd 8d 21 c8 34 |.:....<..o0..!.4|
00000110 35 95 67 a9 b3 02 f9 17 2c c2 ed 4b c4 97 08 47 |5.g.....,..K...G|
00000120 c0 9d 1a ff 17 1c c0 61 82 b2 f0 82 34 51 58 1a |.......a....4QX.|
00000130 7c a9 9d 51 04 0f d3 4d 89 b3 a1 0e 96 78 07 39 ||..Q...M.....x.9|
00000140 c7 12 9d 8d 8a 0b 1d b7 e3 f8 a9 4b |...........K|
>>> Flow 13 (client to server)
00000000 1e 8d 8b 82 d0 80 8d ec 30 b3 03 e9 57 2c 3c e3 |........0...W,<.|
00000010 d1 22 02 9b 49 71 bc 2c db da fa a3 72 72 84 f0 |."..Iq.,....rr..|
00000020 01 ba 67 ef b1 5e b2 c1 59 84 9f ba 24 06 3b d9 |..g..^..Y...$.;.|
00000030 bb 11 47 5e 90 1f 92 b1 d9 26 5a 07 6d d7 94 40 |..G^.....&Z.m..@|
00000040 d3 3b 51 36 54 9a 57 af 84 7a 40 82 2e e4 95 80 |.;Q6T.W..z@.....|
00000050 0b 5f 16 92 3c d7 c9 77 94 1f 82 43 f0 2f 0c ed |._..<..w...C./..|
00000060 08 43 b7 1b 61 dc b1 d5 50 04 a6 fa ae 7c 58 9b |.C..a...P....|X.|
00000070 9f fa 00 97 0d 1d 4e 4a 85 9c f5 32 ab b9 af d2 |......NJ...2....|
00000080 f1 1c dd 9e b1 4d 51 31 46 25 90 05 5f 8b b4 22 |.....MQ1F%.._.."|
00000090 45 9d 87 af c6 a9 ab 25 26 b5 b3 26 99 97 cd 10 |E......%&..&....|
000000a0 06 ee 07 dc 51 0d c2 46 54 2c 20 95 43 d8 01 f3 |....Q..FT, .C...|
000000b0 55 2e 7a 79 21 44 0e b8 d1 5a 09 7c fb 1d d6 39 |U.zy!D...Z.|...9|
000000c0 09 90 03 6d 2d ce a5 5f f0 eb 46 79 40 e5 7f ca |...m-.._..Fy@...|
000000d0 f9 de cf 88 c4 64 8a c6 f7 24 96 87 f2 ae e1 17 |.....d...$......|
000000e0 ef 1b b4 4b 99 46 d9 da e8 f9 c0 c3 c6 4e e9 09 |...K.F.......N..|
000000f0 c2 c3 49 22 45 82 42 ed 63 5e 09 c6 d6 a8 c3 fd |..I"E.B.c^......|
00000100 c8 ac 06 37 99 9b fe d3 a1 2d f9 14 7d 2a c0 f3 |...7.....-..}*..|
00000110 da e1 5c 64 61 bd 0b 72 27 b2 3b a4 da d1 9f 1b |..\da..r'.;.....|
00000120 86 e6 9e 50 d3 39 76 fc 06 54 d4 6c 7c 17 30 cc |...P.9v..T.l|.0.|
00000130 0b ac bc 75 83 07 b6 2f 40 6e 55 6a 6a 0d a0 79 |...u.../@nUjj..y|
00000140 6b 27 6b bb 34 66 7b 4d 26 18 50 96 0e d4 8c ca |k'k.4f{M&.P.....|
00000150 a5 53 68 68 9e 73 ae 5d 93 70 ed c3 94 6e 61 11 |.Shh.s.].p...na.|
00000160 ea d3 6e 73 8c 06 d9 09 7c 08 a9 a0 05 52 98 ab |..ns....|....R..|
00000170 09 70 4e 72 f8 29 90 c8 77 83 9f dd 4e 22 98 f0 |.pNr.)..w...N"..|
00000180 c8 22 60 80 50 86 13 7e 93 0b 06 53 75 af 9d 75 |."`.P..~...Su..u|
00000190 27 e6 7f a0 7f 66 3a fd 33 b3 45 2e cc e9 b5 22 |'....f:.3.E...."|
000001a0 76 c4 e6 24 3f e1 db 53 b9 f1 69 20 76 40 f0 bf |v..$?..S..i v@..|
000001b0 b9 5e 1a 8e 1b 44 43 4b 44 2c ac 02 f4 f5 5f 8b |.^...DCKD,...._.|
000001c0 da 0f b6 2d de 09 75 7a 79 3a 4a 5a d7 9a 95 2c |...-..uzy:JZ...,|
000001d0 b3 f8 d9 8c 45 74 fb a0 a8 d6 2b 1f b2 35 bf dc |....Et....+..5..|
000001e0 5d 9d c2 e8 30 5b 8b 96 8f 2c 07 be 78 3c b6 9f |]...0[...,..x<..|
000001f0 be 07 4c 7e 50 c8 41 cc df 75 04 f3 29 be 38 ec |..L~P.A..u..).8.|
00000200 2a 99 df 2a 6b 21 a7 e5 88 70 ed 7d 2c 25 a1 28 |*..*k!...p.},%.(|
00000210 82 79 f4 01 09 78 60 fa 57 77 e8 7c 91 a5 32 cc |.y...x`.Ww.|..2.|
00000220 22 b2 25 5f f0 cf f6 84 c3 49 72 56 91 e5 9d 08 |".%_.....IrV....|
00000230 2f 3e 7d 8c ce f6 7a 3b 31 33 4f ce 06 57 a0 2d |/>}...z;13O..W.-|
00000240 cb c8 6e 3a 96 df f0 20 99 c9 77 39 82 7d 47 ca |..n:... ..w9.}G.|
00000250 d9 05 5c af 61 53 71 ea e2 6f 4b 31 b2 0f 6a e3 |..\.aSq..oK1..j.|
00000260 75 0b 44 30 c9 32 9e 30 20 c1 13 49 fe dc fd 63 |u.D0.2.0 ..I...c|
00000270 cb 03 48 6f aa cd 61 b2 e5 b8 1e c2 df 56 bf b0 |..Ho..a......V..|
00000280 c8 eb 46 33 54 8e 06 7e fd d1 2a 42 |..F3T..~..*B|
>>> Flow 14 (server to client)
00000000 1a a1 84 7d 94 88 a6 79 88 4f 79 2a 60 72 b4 2b |...}...y.Oy*`r.+|
00000010 20 b1 1e 55 6a 1f 1c a2 ba 49 8b 9e | ..Uj....I..|
+176
View File
@@ -0,0 +1,176 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 03 2c 11 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |...,....+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |.laes128-gcm@ope|
00000150 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 35 36 2d |nssh.com,aes256-|
00000160 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |gcm@openssh.com,|
00000170 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 33 30 |chacha20-poly130|
00000180 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 |5@openssh.com,ae|
00000190 73 31 32 38 2d 63 74 72 2c 61 65 73 31 39 32 2d |s128-ctr,aes192-|
000001a0 63 74 72 2c 61 65 73 32 35 36 2d 63 74 72 00 00 |ctr,aes256-ctr..|
000001b0 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |.laes128-gcm@ope|
000001c0 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 35 36 2d |nssh.com,aes256-|
000001d0 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |gcm@openssh.com,|
000001e0 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 33 30 |chacha20-poly130|
000001f0 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 |5@openssh.com,ae|
00000200 73 31 32 38 2d 63 74 72 2c 61 65 73 31 39 32 2d |s128-ctr,aes192-|
00000210 63 74 72 2c 61 65 73 32 35 36 2d 63 74 72 00 00 |ctr,aes256-ctr..|
00000220 00 6e 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d |.nhmac-sha2-256-|
00000230 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000240 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 |hmac-sha2-512-et|
00000250 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d |m@openssh.com,hm|
00000260 61 63 2d 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 |ac-sha2-256,hmac|
00000270 2d 73 68 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 |-sha2-512,hmac-s|
00000280 68 61 31 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 |ha1,hmac-sha1-96|
00000290 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d 32 35 |...nhmac-sha2-25|
000002a0 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f |6-etm@openssh.co|
000002b0 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d |m,hmac-sha2-512-|
000002c0 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
000002d0 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c 68 6d |hmac-sha2-256,hm|
000002e0 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d 61 63 |ac-sha2-512,hmac|
000002f0 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 31 2d |-sha1,hmac-sha1-|
00000300 39 36 00 00 00 04 6e 6f 6e 65 00 00 00 04 6e 6f |96....none....no|
00000310 6e 65 00 00 00 00 00 00 00 00 00 00 00 00 00 d7 |ne..............|
00000320 3b 80 93 f6 ef bc 88 eb 1a 6e ac fa 66 ef 26 3c |;........n..f.&<|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 f3 f0 95 b8 f3 48 8a d7 53 02 |...........H..S.|
00000010 0f 06 e2 fa ec 09 00 00 01 7a 73 6e 74 72 75 70 |.........zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 aa 80 4b 53 a8 4b |...,..... ..KS.K|
00000010 4c 0f fa ac a3 b8 5f 64 7d 36 42 e7 1d 56 45 7e |L....._d}6B..VE~|
00000020 2b ac e0 f9 e7 60 f5 d7 55 37 b8 cc 87 3c 23 dc |+....`..U7...<#.|
>>> Flow 6 (server to client)
00000000 00 00 01 04 0a 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 5c ba 6d 1c b4 b7 84 24 3b 46 |..... \.m....$;F|
00000080 0c 91 27 c1 65 2e b0 59 06 8e 7f bb d0 f6 16 66 |..'.e..Y.......f|
00000090 29 e8 5f 52 cb 42 00 00 00 64 00 00 00 13 65 63 |)._R.B...d....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 49 00 00 00 21 00 c3 27 7c 33 6a d5 |6...I...!..'|3j.|
000000c0 c4 a3 ee b8 4a 13 27 24 11 69 64 ce 2d 0c 1a 79 |....J.'$.id.-..y|
000000d0 8d 34 23 4e 96 79 7b 14 5f 8c 00 00 00 20 49 2b |.4#N.y{._.... I+|
000000e0 48 81 ee 1a c2 8b 85 42 95 7b be 27 b2 96 d5 3e |H......B.{.'...>|
000000f0 ca e9 16 47 eb 66 4e 2b 88 37 42 61 c0 76 00 00 |...G.fN+.7Ba.v..|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 8a 7d de de |...........@.}..|
00000120 4a 81 5e 93 af c1 ae 6a 42 49 ae dd 1a 89 d5 2e |J.^....jBI......|
00000130 e3 84 6a 60 cf 52 51 61 24 f6 1d 5a 2e 03 f4 4b |..j`.RQa$..Z...K|
00000140 9e 98 83 49 34 ff e6 5b 01 ea 58 a6 af b5 f6 64 |...I4..[..X....d|
00000150 ab 29 c4 51 e2 32 1f f9 c4 78 d7 b4 5e 06 c6 45 |.).Q.2...x..^..E|
00000160 59 3e 31 7b d7 30 fa dc 40 43 26 2b 24 c6 7b 31 |Y>1{.0..@C&+$.{1|
00000170 4b a7 ee a9 cd d1 61 29 8c 87 d6 81 28 70 27 7e |K.....a)....(p'~|
00000180 5c 07 a1 28 e3 06 9b f9 1a e7 01 07 23 0f 6d 3e |\..(........#.m>|
00000190 22 e8 c4 9d 96 f7 7c 84 4b 13 13 d2 e0 22 1d c0 |".....|.K...."..|
000001a0 60 7d 3e 17 28 c3 60 83 db 19 8b 80 a8 5f 2b ed |`}>.(.`......_+.|
000001b0 72 3d c2 0d d9 e9 6b 20 88 9c 27 e1 dc b7 bd af |r=....k ..'.....|
000001c0 fa 44 6c ef 2d c5 72 ed d8 9c 68 c8 be 1a 75 81 |.Dl.-.r...h...u.|
000001d0 be 81 a4 27 f5 cc c5 0b c8 4a 91 17 9d fa 58 c0 |...'.....J....X.|
000001e0 7a 7f fc 4a 72 d6 1a 9d 89 8a 2e 1a ca dc a3 9d |z..Jr...........|
000001f0 10 bb ad c6 eb fc 73 03 6f e8 0a cd b0 75 6e dc |......s.o....un.|
00000200 0c 5a c9 f5 7a d8 dd 40 94 9f b5 09 17 ad 4b f2 |.Z..z..@......K.|
00000210 3f 49 37 bb d1 6a fd 6a 1a eb fd ff f0 ad 1f 6c |?I7..j.j.......l|
00000220 ea d8 b8 86 4b 86 74 e2 e1 9c 8a 5c ed 54 bf d8 |....K.t....\.T..|
00000230 70 16 df 35 be 41 6d 39 da 2c c0 a6 fd 47 4a 4b |p..5.Am9.,...GJK|
00000240 37 87 b7 7f ed 83 af 76 39 e3 71 67 aa 41 e6 83 |7......v9.qg.A..|
00000250 fa b1 c1 ba 0f f9 8c 3e 2c 65 25 c5 c7 1f 9e f7 |.......>,e%.....|
00000260 b3 61 4f 86 6c c4 7a 30 f2 ea cc b1 |.aO.l.z0....|
+289
View File
@@ -0,0 +1,289 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 9c 11 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |........+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 39 63 75 72 76 65 32 |EPv..>...9curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 65 78 74 2d |5519-sha256,ext-|
00000030 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
00000040 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
00000050 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
00000060 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000070 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000080 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000090 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
000000a0 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
000000b0 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |.laes128-gcm@ope|
000000c0 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 35 36 2d |nssh.com,aes256-|
000000d0 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |gcm@openssh.com,|
000000e0 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 33 30 |chacha20-poly130|
000000f0 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 |5@openssh.com,ae|
00000100 73 31 32 38 2d 63 74 72 2c 61 65 73 31 39 32 2d |s128-ctr,aes192-|
00000110 63 74 72 2c 61 65 73 32 35 36 2d 63 74 72 00 00 |ctr,aes256-ctr..|
00000120 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |.laes128-gcm@ope|
00000130 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 35 36 2d |nssh.com,aes256-|
00000140 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |gcm@openssh.com,|
00000150 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 33 30 |chacha20-poly130|
00000160 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 |5@openssh.com,ae|
00000170 73 31 32 38 2d 63 74 72 2c 61 65 73 31 39 32 2d |s128-ctr,aes192-|
00000180 63 74 72 2c 61 65 73 32 35 36 2d 63 74 72 00 00 |ctr,aes256-ctr..|
00000190 00 6e 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d |.nhmac-sha2-256-|
000001a0 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
000001b0 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 |hmac-sha2-512-et|
000001c0 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d |m@openssh.com,hm|
000001d0 61 63 2d 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 |ac-sha2-256,hmac|
000001e0 2d 73 68 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 |-sha2-512,hmac-s|
000001f0 68 61 31 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 |ha1,hmac-sha1-96|
00000200 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d 32 35 |...nhmac-sha2-25|
00000210 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f |6-etm@openssh.co|
00000220 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d |m,hmac-sha2-512-|
00000230 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000240 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c 68 6d |hmac-sha2-256,hm|
00000250 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d 61 63 |ac-sha2-512,hmac|
00000260 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 31 2d |-sha1,hmac-sha1-|
00000270 39 36 00 00 00 04 6e 6f 6e 65 00 00 00 04 6e 6f |96....none....no|
00000280 6e 65 00 00 00 00 00 00 00 00 00 00 00 00 00 d7 |ne..............|
00000290 3b 80 93 f6 ef bc 88 eb 1a 6e ac fa 66 ef 26 3c |;........n..f.&<|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 86 1d 13 33 bb 65 c5 7e 3d 8b |.........3.e.~=.|
00000010 4f 63 27 f5 d1 59 00 00 01 7a 73 6e 74 72 75 70 |Oc'..Y...zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 aa 80 4b 53 a8 4b |...,..... ..KS.K|
00000010 4c 0f fa ac a3 b8 5f 64 7d 36 42 e7 1d 56 45 7e |L....._d}6B..VE~|
00000020 2b ac e0 f9 e7 60 f5 d7 55 37 b8 cc 87 3c 23 dc |+....`..U7...<#.|
>>> Flow 6 (server to client)
00000000 00 00 01 04 0b 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 e8 01 e7 b0 7b 47 62 2e ac 12 |..... ....{Gb...|
00000080 80 ba 70 5b a4 65 6a 25 50 1c 59 6c f3 12 ed 64 |..p[.ej%P.Yl...d|
00000090 2c f3 7a 3b 0e 53 00 00 00 63 00 00 00 13 65 63 |,.z;.S...c....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 48 00 00 00 1f 1f dd 4b cc 7e f3 af |6...H......K.~..|
000000c0 63 93 77 64 79 a8 77 02 96 98 cb 96 59 a6 a6 a2 |c.wdy.w.....Y...|
000000d0 9b 23 08 d0 f5 2e 13 04 00 00 00 21 00 e9 d8 dc |.#.........!....|
000000e0 27 de b1 e8 bc ee 5e ca 9e 62 20 09 d3 08 43 f6 |'.....^..b ...C.|
000000f0 d0 7d a1 6a f7 6d 64 64 81 ea 63 82 f8 00 00 00 |.}.j.mdd..c.....|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 62 ac b9 7c |...........@b..||
00000120 06 dc 0b 16 24 e2 56 cd b2 3a f9 51 ab e8 62 3e |....$.V..:.Q..b>|
00000130 72 a8 fa 95 2d af 2d d0 54 e1 de 08 a3 97 11 08 |r...-.-.T.......|
00000140 52 6b d5 dd 7e 81 be a5 f9 71 83 9e 68 f8 7e d1 |Rk..~....q..h.~.|
00000150 e8 22 8b b3 ff b2 2e 67 16 af d8 df 74 3f bf d6 |.".....g....t?..|
00000160 aa 46 3d 49 90 3d fa 12 6a 6f 75 98 1b b8 67 22 |.F=I.=..jou...g"|
00000170 d0 06 31 61 eb 29 aa 21 fb 7d e4 7e c7 ff b4 e5 |..1a.).!.}.~....|
00000180 a1 0f da 75 74 6f c0 45 31 3f e1 7a 29 d0 ff 25 |...uto.E1?.z)..%|
00000190 64 8c 49 5c c5 bf 9c 44 36 67 e1 86 5c e9 13 23 |d.I\...D6g..\..#|
000001a0 b8 d5 85 5d 33 4b 19 a5 fa bc 50 86 08 32 08 48 |...]3K....P..2.H|
000001b0 5e 0e 2e 68 9a ff 96 6a 00 51 d9 16 87 a6 88 c1 |^..h...j.Q......|
000001c0 dd b5 9c 18 3b fc 66 6a ff a7 60 f6 4a 29 f8 5d |....;.fj..`.J).]|
000001d0 fd 8d 5e 6a f0 1a 70 21 d6 4e c0 92 e3 95 96 b8 |..^j..p!.N......|
000001e0 fa 50 90 58 c5 59 6a 20 12 3d ce d4 49 0e da 2e |.P.X.Yj .=..I...|
000001f0 1d 2c b9 28 d1 71 52 49 43 25 90 24 b2 16 a9 58 |.,.(.qRIC%.$...X|
00000200 0f f3 07 94 92 83 8e 1a 3f 2a 92 a3 42 80 0e 3c |........?*..B..<|
00000210 42 7a 7c 65 3a f0 86 cf 40 49 9b f7 e6 a5 3d 36 |Bz|e:...@I....=6|
00000220 f6 ae db 6e 6c 39 cc 5e 47 f4 eb d2 c6 61 5e 61 |...nl9.^G....a^a|
00000230 e0 58 6c 16 13 c4 74 db e1 be 29 fc 84 be 42 22 |.Xl...t...)...B"|
00000240 14 72 ab 29 f1 ea 10 2c 34 1c 5e d2 a4 19 0d cb |.r.)...,4.^.....|
00000250 23 e0 d3 db 4d 5d 50 c7 a0 82 11 ed 1d 49 d3 4e |#...M]P......I.N|
00000260 32 be db 14 c1 fc 4b dc 97 3a 38 9b |2.....K..:8.|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 62 b8 d2 60 16 9a fa 2f 75 ab |......b..`.../u.|
00000010 00 00 00 20 d9 dc 27 14 2c 6d 93 10 bd 87 c5 06 |... ..'.,m......|
00000020 90 80 21 40 13 e5 86 f4 39 f1 5b b5 75 ed 31 19 |..!@....9.[.u.1.|
00000030 87 05 83 a7 5f 28 81 02 d0 6e b4 f0 bd 89 0a e5 |...._(...n......|
00000040 fa 1e ac 07 |....|
>>> Flow 8 (server to client)
00000000 00 00 00 20 03 52 b6 aa 7d 30 65 ad 08 b8 dd d1 |... .R..}0e.....|
00000010 7f f0 3e b5 69 43 fa 0f 06 2a 18 5d 9d 4e b0 13 |..>.iC...*.].N..|
00000020 d8 4a 06 ca e1 d7 99 f9 59 14 d0 ef 0b a1 1a 47 |.J......Y......G|
00000030 8f c5 4b e5 |..K.|
>>> Flow 9 (client to server)
00000000 00 00 00 30 34 a3 2c 36 49 de 9d 6c 4b 74 c4 0d |...04.,6I..lKt..|
00000010 2d 25 98 e4 6b 48 58 c5 e0 e6 04 90 31 11 59 4f |-%..kHX.....1.YO|
00000020 f0 33 8d e8 1a 9b e9 b5 02 fb 26 32 0e 5a 09 7b |.3........&2.Z.{|
00000030 5f 2a 80 dd 72 17 cd ed cb 54 ca 3b 50 44 ed 1f |_*..r....T.;PD..|
00000040 d4 4b b4 9b |.K..|
>>> Flow 10 (server to client)
00000000 00 00 00 20 7e c0 e9 9e 89 d7 16 2d 48 c0 e0 bf |... ~......-H...|
00000010 dd c3 89 1e 08 3e ee ab 73 77 77 2e 5a 62 14 02 |.....>..sww.Zb..|
00000020 6a 7f c2 e9 19 c0 df 69 43 60 82 d6 ea ff da f0 |j......iC`......|
00000030 fa 40 2b b6 00 00 00 40 3a 06 de c5 ac 63 46 77 |.@+....@:....cFw|
00000040 a8 8e a1 d0 be 35 cb 27 34 d1 63 a1 0c b2 c3 30 |.....5.'4.c....0|
00000050 c6 d8 bd 92 7a f7 48 4b 95 a5 5f 6e 4e ca 6f 60 |....z.HK.._nN.o`|
00000060 32 11 4d d0 15 2e 31 22 03 1a 89 fa 91 e0 ea 10 |2.M...1"........|
00000070 7b e4 4e d8 a8 a7 a4 35 3c b0 76 39 6e e9 ef c9 |{.N....5<.v9n...|
00000080 69 02 c8 01 51 bc fb ad |i...Q...|
>>> Flow 11 (client to server)
00000000 00 00 01 60 3a fe b0 e3 19 9e ef b8 4b 47 ac 18 |...`:.......KG..|
00000010 52 0f 93 e5 04 69 58 d5 51 b9 82 ab 56 41 5c 73 |R....iX.Q...VA\s|
00000020 e2 e7 d1 98 41 f2 73 30 13 b5 7d ca 0e 0d 78 7b |....A.s0..}...x{|
00000030 01 83 ab e7 ce 1d 3b 8c 14 ed c5 0d 39 cf 82 f3 |......;.....9...|
00000040 f6 eb 9e 17 c4 36 61 78 5b 50 66 2d 8c 37 cf fb |.....6ax[Pf-.7..|
00000050 42 44 45 fc 94 a8 e2 d2 9e 5e 5f 12 85 f2 4a 46 |BDE......^_...JF|
00000060 50 fc 5c 04 80 2e 17 ce 7e f2 a6 ee 94 7c e7 99 |P.\.....~....|..|
00000070 6c a3 b3 5d 08 23 f6 10 6f 79 8b a0 56 20 d3 ed |l..].#..oy..V ..|
00000080 e0 44 07 fb dc d3 b6 64 5b c2 d4 66 77 3e 39 a2 |.D.....d[..fw>9.|
00000090 57 4b 44 95 96 33 4b 51 51 40 3f f0 9a db 95 96 |WKD..3KQQ@?.....|
000000a0 41 3c f2 d6 7c d3 bb 6b a5 b1 b3 67 0b 94 38 e1 |A<..|..k...g..8.|
000000b0 4d e5 68 68 f4 e0 93 57 d7 01 7b 4d 9c 8c 18 32 |M.hh...W..{M...2|
000000c0 44 3a 93 7b 38 3b 19 0f 63 98 04 15 22 1e ce 09 |D:.{8;..c..."...|
000000d0 db f5 80 2e 42 bb 22 59 9d 04 05 7e 67 32 c8 52 |....B."Y...~g2.R|
000000e0 9f 2d d0 02 e9 ad d0 7f 1d b3 f8 64 f2 4b ff 03 |.-.........d.K..|
000000f0 56 6b 28 b5 bb 2e 3c eb 47 5b 95 96 26 64 8a 8e |Vk(...<.G[..&d..|
00000100 96 e6 fe bd ee 71 e7 53 6b 27 a6 b7 38 ba 8c 5b |.....q.Sk'..8..[|
00000110 14 14 08 ec 59 e7 a5 42 b4 0e 0e 39 09 c1 25 bc |....Y..B...9..%.|
00000120 6f 9b 94 85 14 ae 76 6c 94 f2 58 d5 ad 73 01 fc |o.....vl..X..s..|
00000130 f1 6c 0d e7 13 f1 9b 86 54 33 b3 d2 c0 78 3e 9b |.l......T3...x>.|
00000140 fb aa e2 ce c8 1f 3e f5 19 2e 22 78 fb 02 4d ab |......>..."x..M.|
00000150 49 52 3e 17 6c 22 a7 4a 19 aa 68 a1 12 d6 24 4e |IR>.l".J..h...$N|
00000160 e7 0d 39 cc a5 1a 90 f6 26 15 75 9f 80 88 74 11 |..9.....&.u...t.|
00000170 9f d8 2b 2e |..+.|
>>> Flow 12 (server to client)
00000000 00 00 01 40 07 30 22 23 53 70 62 fd 53 15 21 49 |...@.0"#Spb.S.!I|
00000010 b7 ff 50 fc c0 4e 4d 8f ef 4b 09 8a 9f e0 0e de |..P..NM..K......|
00000020 de 3d 06 cf e2 8c f1 cc 92 c4 84 78 6f 1e 4a cd |.=.........xo.J.|
00000030 8b 8a 61 a9 ff 6e 3c c2 3c d0 0e 70 5d 6e 4e 40 |..a..n<.<..p]nN@|
00000040 c0 8a 4f 3b e4 25 05 15 21 63 09 fd f7 fd ee d9 |..O;.%..!c......|
00000050 92 10 e1 e6 6a 27 ae ff fe 1e 66 7a 00 e7 27 95 |....j'....fz..'.|
00000060 d2 fe 32 5f f8 79 89 ea 25 19 62 44 04 aa 84 8c |..2_.y..%.bD....|
00000070 2b 46 b4 73 e3 4f 9b d9 bd 39 7d 13 91 5c 55 44 |+F.s.O...9}..\UD|
00000080 70 67 8e 50 5b 12 23 b4 39 82 cd 15 ac 77 91 bf |pg.P[.#.9....w..|
00000090 4d ea d7 4c e2 ef 7b 0a f6 4e 77 aa 47 49 fd a2 |M..L..{..Nw.GI..|
000000a0 bd ae 0e 06 d8 23 df f2 c7 62 8a c0 13 24 3e 30 |.....#...b...$>0|
000000b0 5d ba 3e e1 3f 5d 80 34 54 ab e0 00 7c 61 5b 17 |].>.?].4T...|a[.|
000000c0 23 c6 7e c6 d2 d1 01 0a 32 a5 d5 85 3e ec dd a8 |#.~.....2...>...|
000000d0 13 dc 52 e8 c4 85 56 04 3d 98 2d 72 6a f2 bb 52 |..R...V.=.-rj..R|
000000e0 ae f0 86 ff 99 9e a9 b9 23 4c 27 65 41 5b 27 37 |........#L'eA['7|
000000f0 93 ee ac 33 f8 c9 23 e9 3e 5a 4d d3 58 51 e8 e4 |...3..#.>ZM.XQ..|
00000100 7e 3f 45 d3 d0 02 ab 5b 9d 12 5d 16 34 7b 01 dd |~?E....[..].4{..|
00000110 fb 77 cf 24 55 f5 0d 00 56 9c 94 4c 96 af eb 68 |.w.$U...V..L...h|
00000120 af 80 d8 20 8a 7f 26 6b ec 47 64 0c 9d 05 9c 8f |... ..&k.Gd.....|
00000130 93 3a 2c 89 81 ae 37 6f f5 53 43 19 cf 7d c7 95 |.:,...7o.SC..}..|
00000140 6d f1 25 ff c1 8f 26 5b 4f b1 a0 99 cf 29 b7 cc |m.%...&[O....)..|
00000150 72 b2 49 83 |r.I.|
>>> Flow 13 (client to server)
00000000 00 00 02 80 28 72 8e 75 6f ff ec ad 60 fe ff b9 |....(r.uo...`...|
00000010 e9 92 32 54 9f 41 16 05 7d ea 7d 65 36 d9 90 d1 |..2T.A..}.}e6...|
00000020 e1 0b 5d 7c c9 86 08 de 9b fb 7d 45 6f 08 3f b0 |..]|......}Eo.?.|
00000030 74 54 75 53 0f d2 03 fa d8 d4 d7 98 db e3 ed 2c |tTuS...........,|
00000040 76 21 10 53 84 ed 08 53 98 50 5b 93 38 cd 82 35 |v!.S...S.P[.8..5|
00000050 f3 f6 06 cb fd 67 06 4f 4c a9 86 1a bd 27 40 77 |.....g.OL....'@w|
00000060 87 04 da b8 d5 3a bc c6 18 4b 41 54 d4 bc fc 49 |.....:...KAT...I|
00000070 26 e0 4b e1 e9 3b 1a 05 c9 22 94 8e 52 40 30 1d |&.K..;..."..R@0.|
00000080 bb 53 c6 96 2a 38 24 3b e1 23 4d 9f 53 27 b1 3b |.S..*8$;.#M.S'.;|
00000090 39 49 89 a8 d3 02 59 90 fa ee 6f e1 63 d1 6a 86 |9I....Y...o.c.j.|
000000a0 c0 c0 f0 78 2f 5c d7 19 42 59 9d 72 03 96 f8 cd |...x/\..BY.r....|
000000b0 d1 4f 0a 7f c2 e7 cb 87 6e 9a 68 45 05 03 b5 66 |.O......n.hE...f|
000000c0 4f d1 de 9b 97 b4 79 d3 ad b9 b9 ab 49 9a fb 38 |O.....y.....I..8|
000000d0 1e cc bb ce 8a 14 f5 0c 4b b5 6e ce 87 18 d0 bd |........K.n.....|
000000e0 4f 57 28 bf a5 06 1a d2 85 92 61 45 d8 38 c4 5b |OW(.......aE.8.[|
000000f0 6e 0e 65 64 4e e9 dc f6 a4 2c 1c 31 c5 d9 28 fd |n.edN....,.1..(.|
00000100 71 19 c3 2b f0 23 6f f7 c8 2a 6e 4d 1d 5c 93 94 |q..+.#o..*nM.\..|
00000110 ff 9b 5f 33 7f 6c 18 e2 de f4 08 ea 99 ac 83 39 |.._3.l.........9|
00000120 25 6c 16 eb 7f da 70 f8 9e 89 76 5f 4c b1 86 6f |%l....p...v_L..o|
00000130 0e 0e cb 62 af dc 35 e4 20 83 7e e3 37 ca 67 2e |...b..5. .~.7.g.|
00000140 9c e3 97 e3 d0 09 fd 6a 1c 70 e0 ca c8 a4 1e 9d |.......j.p......|
00000150 67 10 07 ef ec 98 c9 7e c2 b2 7f f6 ba 30 34 e0 |g......~.....04.|
00000160 a7 1c da 9b cf f5 5b 11 5a 43 97 47 ad e6 d7 da |......[.ZC.G....|
00000170 28 4a 17 92 58 1a ae a7 c2 29 2c 29 5c c4 fd 41 |(J..X....),)\..A|
00000180 43 99 27 dc a9 5a 06 fd d8 50 36 95 73 42 8a e6 |C.'..Z...P6.sB..|
00000190 a9 9b 66 a6 d4 b6 56 4b 3e b7 a5 cb f4 82 e6 93 |..f...VK>.......|
000001a0 40 e6 f2 0c ed d5 d0 bf be 30 5a 3c c2 18 9f 8d |@........0Z<....|
000001b0 35 f8 d8 26 60 a4 84 d8 3b 22 96 ad 58 6e 62 15 |5..&`...;"..Xnb.|
000001c0 aa 23 66 4b d7 78 63 7a 95 02 41 45 9d 70 47 ef |.#fK.xcz..AE.pG.|
000001d0 54 0e 60 61 9a 18 f9 6e 1e e4 35 55 ef cf d2 33 |T.`a...n..5U...3|
000001e0 92 0f 28 a2 74 81 c1 62 4e 14 a3 6a 4b b1 d7 32 |..(.t..bN..jK..2|
000001f0 95 3a e8 4b 00 61 19 3a 57 a0 a0 a6 a2 85 3d d9 |.:.K.a.:W.....=.|
00000200 47 5f 79 26 c6 21 c3 94 27 c2 9e 57 57 2f 43 1a |G_y&.!..'..WW/C.|
00000210 5e ea da 9b c3 69 29 90 d4 17 63 41 4b 24 cc ed |^....i)...cAK$..|
00000220 37 3c d2 d3 4a 87 29 25 4a 83 03 0f 48 9e 86 80 |7<..J.)%J...H...|
00000230 54 e1 01 df 83 8c 83 49 c1 18 ff a8 22 12 73 da |T......I....".s.|
00000240 e9 d7 d1 76 04 74 f3 eb 6e f8 15 07 92 21 67 28 |...v.t..n....!g(|
00000250 b9 9f 07 71 e5 83 78 1f 27 6e 92 82 48 7b 70 ce |...q..x.'n..H{p.|
00000260 46 d9 e3 6a e2 9c 77 cf 45 e3 5f e5 ab 44 ca 51 |F..j..w.E._..D.Q|
00000270 ea 40 81 4a 85 89 0d 7c ab 4d 09 81 2e d7 7d 3e |.@.J...|.M....}>|
00000280 fc 43 ca ad 9f 4f fc f4 52 cb 4e 40 97 9f e4 3d |.C...O..R.N@...=|
00000290 ef 02 58 d5 |..X.|
>>> Flow 14 (server to client)
00000000 00 00 00 10 bc 56 ff 49 8f 1b c2 79 5b 65 67 84 |.....V.I...y[eg.|
00000010 fb 19 0c 51 ef 4f 2c e8 58 01 84 90 5c 31 78 d4 |...Q.O,.X...\1x.|
00000020 ab 3e cb 21 |.>.!|
+289
View File
@@ -0,0 +1,289 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 9c 06 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |........+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 44 63 75 72 76 65 32 |EPv..>...Dcurve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 62 73 |5519-sha256@libs|
00000030 73 68 2e 6f 72 67 2c 65 78 74 2d 69 6e 66 6f 2d |sh.org,ext-info-|
00000040 63 2c 6b 65 78 2d 73 74 72 69 63 74 2d 63 2d 76 |c,kex-strict-c-v|
00000050 30 30 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 00 00 |00@openssh.com..|
00000060 00 57 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |.Wecdsa-sha2-nis|
00000070 74 70 32 35 36 2c 65 63 64 73 61 2d 73 68 61 32 |tp256,ecdsa-sha2|
00000080 2d 6e 69 73 74 70 33 38 34 2c 65 63 64 73 61 2d |-nistp384,ecdsa-|
00000090 73 68 61 32 2d 6e 69 73 74 70 35 32 31 2c 73 73 |sha2-nistp521,ss|
000000a0 68 2d 72 73 61 2c 73 73 68 2d 64 73 73 2c 73 73 |h-rsa,ssh-dss,ss|
000000b0 68 2d 65 64 32 35 35 31 39 00 00 00 6c 61 65 73 |h-ed25519...laes|
000000c0 31 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e |128-gcm@openssh.|
000000d0 63 6f 6d 2c 61 65 73 32 35 36 2d 67 63 6d 40 6f |com,aes256-gcm@o|
000000e0 70 65 6e 73 73 68 2e 63 6f 6d 2c 63 68 61 63 68 |penssh.com,chach|
000000f0 61 32 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 |a20-poly1305@ope|
00000100 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d |nssh.com,aes128-|
00000110 63 74 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 |ctr,aes192-ctr,a|
00000120 65 73 32 35 36 2d 63 74 72 00 00 00 6c 61 65 73 |es256-ctr...laes|
00000130 31 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e |128-gcm@openssh.|
00000140 63 6f 6d 2c 61 65 73 32 35 36 2d 67 63 6d 40 6f |com,aes256-gcm@o|
00000150 70 65 6e 73 73 68 2e 63 6f 6d 2c 63 68 61 63 68 |penssh.com,chach|
00000160 61 32 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 |a20-poly1305@ope|
00000170 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d |nssh.com,aes128-|
00000180 63 74 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 |ctr,aes192-ctr,a|
00000190 65 73 32 35 36 2d 63 74 72 00 00 00 6e 68 6d 61 |es256-ctr...nhma|
000001a0 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f |c-sha2-256-etm@o|
000001b0 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d |penssh.com,hmac-|
000001c0 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 |sha2-512-etm@ope|
000001d0 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
000001e0 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
000001f0 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 2c 68 |-512,hmac-sha1,h|
00000200 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 00 6e 68 |mac-sha1-96...nh|
00000210 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d |mac-sha2-256-etm|
00000220 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 |@openssh.com,hma|
00000230 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f |c-sha2-512-etm@o|
00000240 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d |penssh.com,hmac-|
00000250 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 |sha2-256,hmac-sh|
00000260 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 |a2-512,hmac-sha1|
00000270 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 00 |,hmac-sha1-96...|
00000280 04 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 00 00 |.none....none...|
00000290 00 00 00 00 00 00 00 00 00 00 d7 3b 80 93 f6 ef |...........;....|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 b0 cd 36 b8 9a 47 6c e0 8f a2 |........6..Gl...|
00000010 06 ec 96 16 17 7c 00 00 01 7a 73 6e 74 72 75 70 |.....|...zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 ee a0 9c c6 be 90 |...,..... ......|
00000010 37 5d 28 ba ea a8 41 a5 72 c8 5e 4d 2d 23 c4 f9 |7](...A.r.^M-#..|
00000020 26 88 44 60 fc 30 d9 da 91 6a a3 63 9c a8 a1 e3 |&.D`.0...j.c....|
>>> Flow 6 (server to client)
00000000 00 00 01 04 0a 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 18 93 88 e4 65 66 c6 6a 6e 8e |..... ....ef.jn.|
00000080 26 98 82 64 63 d0 3f 29 9a 7c 42 ca 2d f3 16 24 |&..dc.?).|B.-..$|
00000090 1c 7f 22 9d 9c 6f 00 00 00 64 00 00 00 13 65 63 |.."..o...d....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 49 00 00 00 20 46 20 40 87 9c 83 06 |6...I... F @....|
000000c0 c7 08 5e 36 4d f7 b4 2a 48 7e 01 8e af 7c 90 41 |..^6M..*H~...|.A|
000000d0 ed 43 26 fb 56 3e 47 67 ad 00 00 00 21 00 bf a9 |.C&.V>Gg....!...|
000000e0 45 23 c7 27 0b 7a df 14 a0 15 af 82 e5 43 09 5a |E#.'.z.......C.Z|
000000f0 2a 23 30 c3 d7 66 36 d8 cd 83 d7 e6 15 4f 00 00 |*#0..f6......O..|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 e8 49 e6 95 |...........@.I..|
00000120 02 27 90 c3 8d 11 8f f4 3b 85 09 dc 8e 93 f6 5e |.'......;......^|
00000130 3d 03 64 18 71 86 40 0d fb ef 22 a8 36 01 8a 07 |=.d.q.@...".6...|
00000140 96 1a 13 e1 66 70 aa e3 22 62 de c4 61 bf 64 4e |....fp.."b..a.dN|
00000150 33 24 6c e5 c4 f0 b2 20 21 31 20 3b 3d 54 0f bc |3$l.... !1 ;=T..|
00000160 4c 24 27 c7 83 94 b1 f7 89 0c ea fb 8e a8 e7 6e |L$'............n|
00000170 84 d2 da c5 77 f0 d4 64 c2 09 d5 20 1c f6 94 46 |....w..d... ...F|
00000180 85 20 79 35 e3 3e 2a 3d 86 d3 8a 99 a2 95 dc ca |. y5.>*=........|
00000190 ef e0 53 06 de e8 4a 36 3b 41 a4 21 49 5f 50 e9 |..S...J6;A.!I_P.|
000001a0 84 9d 0b a6 92 80 0a 9a 89 d9 db f8 24 a6 5f 2d |............$._-|
000001b0 e1 7b f5 31 a4 c9 a7 7f 07 f0 60 68 09 25 5b 97 |.{.1......`h.%[.|
000001c0 fe b0 ce d2 74 fb e3 92 27 a8 4f 8a ff cc a4 cc |....t...'.O.....|
000001d0 78 85 52 44 a2 46 f2 36 cb 13 6b 1b 8a 77 c0 7c |x.RD.F.6..k..w.||
000001e0 16 6e 0f 33 d9 d0 aa 9d 25 b1 5f ba 7b 8d da bd |.n.3....%._.{...|
000001f0 fe 0f 4f f6 20 e7 1d bc 7f 19 b6 bc 7f d0 ae f3 |..O. ...........|
00000200 70 da 69 fa e2 9e 15 9e c2 e6 23 0f c2 1a 30 9a |p.i.......#...0.|
00000210 00 64 d3 ba 91 c5 ec 43 dc a1 82 87 5d 63 67 6c |.d.....C....]cgl|
00000220 02 99 04 ca cd a8 ef 35 61 54 60 59 92 4c 85 7e |.......5aT`Y.L.~|
00000230 3a a7 2c c0 25 e2 a4 a4 f5 cf 96 5f 04 2a c1 ad |:.,.%......_.*..|
00000240 1d 3e d8 0c 50 f6 1b e7 0b b1 e2 4c b6 cf 1f f0 |.>..P......L....|
00000250 fa e5 4b 42 b9 e6 44 35 f2 be bc 2a b9 62 a8 43 |..KB..D5...*.b.C|
00000260 1c 09 68 c3 85 48 b3 9a b7 75 95 79 |..h..H...u.y|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 f9 ae 57 e2 35 b8 cc 87 3c 23 |........W.5...<#|
00000010 00 00 00 20 1c 89 71 b1 5d 73 b7 6f d6 14 e8 79 |... ..q.]s.o...y|
00000020 50 e9 90 fa 11 7b a6 25 a1 95 84 ff c8 44 1c b1 |P....{.%.....D..|
00000030 43 88 2d c5 0c 40 61 5a a9 28 4c c9 77 00 82 87 |C.-..@aZ.(L.w...|
00000040 4e 86 bd 67 |N..g|
>>> Flow 8 (server to client)
00000000 00 00 00 20 b2 8d 5d a8 d5 32 77 c5 a4 6a 51 0f |... ..]..2w..jQ.|
00000010 42 55 ec b4 16 5a 94 ad bd 2a dd 01 c3 37 58 0d |BU...Z...*...7X.|
00000020 f0 0e 3d 28 8b f6 2f 3a 64 4c 5d bc 84 5d bc 7f |..=(../:dL]..]..|
00000030 59 24 98 0f |Y$..|
>>> Flow 9 (client to server)
00000000 00 00 00 30 9b ac 39 ff 48 bf fe d0 dd 87 5f 14 |...0..9.H....._.|
00000010 08 03 9b 20 89 fa 84 fb dd 4a 35 b2 74 2b 99 a9 |... .....J5.t+..|
00000020 aa a9 ea 89 91 09 93 fe f0 15 71 55 2e 37 b6 29 |..........qU.7.)|
00000030 68 0f 0f 67 59 1b 3e dd 69 d3 d3 52 c6 78 1e f0 |h..gY.>.i..R.x..|
00000040 3e b2 bc cc |>...|
>>> Flow 10 (server to client)
00000000 00 00 00 20 68 e7 bd c2 ed f5 29 52 3d a4 1b 2b |... h.....)R=..+|
00000010 f0 aa 11 47 7a 0b 39 77 2c aa 7a d4 28 15 60 85 |...Gz.9w,.z.(.`.|
00000020 c6 15 d3 9c 30 d3 36 e6 0b b1 d3 10 c1 66 e6 dc |....0.6......f..|
00000030 eb 75 91 6b 00 00 00 40 78 c3 94 19 9f 78 9c dd |.u.k...@x....x..|
00000040 dd 7d a5 ec 56 dd de 7a e4 ac 78 47 d3 10 b6 d9 |.}..V..z..xG....|
00000050 7f 5c 8d 32 16 32 d0 63 06 e4 8a 64 8a 82 0e 02 |.\.2.2.c...d....|
00000060 71 7e 01 2f 90 29 89 cb e9 6b 2e 8d 92 0d 60 89 |q~./.)...k....`.|
00000070 5a 45 04 45 c1 d4 04 50 8b 99 44 2c 02 de a5 7b |ZE.E...P..D,...{|
00000080 31 0c dd 93 0d 58 1d 6e |1....X.n|
>>> Flow 11 (client to server)
00000000 00 00 01 60 05 5a 2a 52 6e 58 06 70 de 77 4a 66 |...`.Z*RnX.p.wJf|
00000010 6a 2f 3e 38 4b 7c 86 00 b1 0a 29 04 5c 0b 33 7e |j/>8K|....).\.3~|
00000020 fb 6e 20 8c b3 e0 5e d7 83 53 4c 46 c5 66 11 31 |.n ...^..SLF.f.1|
00000030 bb 79 ee c4 69 9c 5e 8e c2 95 29 2b 71 ce e5 92 |.y..i.^...)+q...|
00000040 b6 a7 de 9f 4d 1b 7c ee e0 70 41 cc c9 b5 09 ac |....M.|..pA.....|
00000050 93 59 eb d6 f4 5d 36 77 06 18 6c 48 70 1f 66 1d |.Y...]6w..lHp.f.|
00000060 0f 5d cc ac 05 ae cc 4f 20 0c 69 38 b5 84 21 48 |.].....O .i8..!H|
00000070 91 4c f3 cf ee a3 d7 8d 9f f0 04 e8 e3 d2 dc 5d |.L.............]|
00000080 4f 19 7d 8e 6c 41 68 ea 48 45 82 29 8d 7d 07 47 |O.}.lAh.HE.).}.G|
00000090 31 7c b2 4f ea c5 25 2a f4 69 7a ce b0 72 56 8c |1|.O..%*.iz..rV.|
000000a0 43 78 7d ca 2c 68 b1 8a 40 17 44 9b c9 d6 9d 36 |Cx}.,h..@.D....6|
000000b0 28 1a 3f b8 88 4b 1e 9d 45 bf 20 52 d3 0a 42 93 |(.?..K..E. R..B.|
000000c0 1c 46 52 ed 5c df 99 90 45 ed ab 7e 6d e1 4b 7c |.FR.\...E..~m.K||
000000d0 2a 79 c5 32 f6 72 86 38 7f f5 ae 6c 8b 87 ca de |*y.2.r.8...l....|
000000e0 57 90 82 e7 a6 0e 31 36 b3 60 03 61 df 53 36 6e |W.....16.`.a.S6n|
000000f0 31 16 2f 77 7c 44 d2 87 24 3e 3f d4 81 fd d5 88 |1./w|D..$>?.....|
00000100 a2 e2 fe 8f 8b 4b e8 24 56 2d 8d 50 fc d9 7c 39 |.....K.$V-.P..|9|
00000110 5e 99 a7 6d df 3e 3d 9e 32 01 63 37 f3 64 f7 64 |^..m.>=.2.c7.d.d|
00000120 a0 c7 66 8f 7a 50 da c3 5f 19 07 14 09 e2 0a 10 |..f.zP.._.......|
00000130 f9 83 7e 6e 60 b4 50 3d c4 34 5e 37 e3 b5 be f5 |..~n`.P=.4^7....|
00000140 13 c1 54 5d 66 47 9b 77 35 18 6f 9d c4 97 82 f5 |..T]fG.w5.o.....|
00000150 c6 b0 32 28 76 89 43 d1 4e 2d 14 ac 75 d9 41 51 |..2(v.C.N-..u.AQ|
00000160 19 7a b2 18 fb f0 d7 3b 9e f0 c0 80 c6 20 b8 cf |.z.....;..... ..|
00000170 30 16 3f d9 |0.?.|
>>> Flow 12 (server to client)
00000000 00 00 01 40 82 4b b0 d9 9c 0a 97 38 ff 35 cb 0c |...@.K.....8.5..|
00000010 1b c5 a9 d9 63 1c a5 12 3a 22 8f 93 c2 e3 30 f7 |....c...:"....0.|
00000020 d0 dd b5 89 3d 2d f4 d6 b3 d6 ee 65 24 2d 19 ea |....=-.....e$-..|
00000030 04 0d 31 ff a4 d0 7c d3 09 5f 0b 36 c0 26 5f 56 |..1...|.._.6.&_V|
00000040 0f 0d af 9a 00 1a d9 8a e7 b8 fc d1 0f 0f 99 2d |...............-|
00000050 ee 1e a5 52 8e dc 21 80 a0 29 e2 98 99 3d df b5 |...R..!..)...=..|
00000060 f9 4a f7 9f 07 4a 6f 06 ce 70 77 e2 f5 7d 53 52 |.J...Jo..pw..}SR|
00000070 9a 15 82 81 5f 9a dc 69 ca c8 84 91 52 9d 7d f6 |...._..i....R.}.|
00000080 1a 4b be 90 d7 60 f9 f9 b6 6c 8a 16 96 c3 8c f9 |.K...`...l......|
00000090 3e bb 2c 3d f9 aa 40 bd a6 a8 f0 47 0a 15 e5 bd |>.,=..@....G....|
000000a0 7a 42 01 b5 28 d2 46 7b 39 83 b9 49 2c ce ea 00 |zB..(.F{9..I,...|
000000b0 50 a1 0a 1c 92 1c 9b a5 58 c6 0f 7e 5e 4b af 88 |P.......X..~^K..|
000000c0 c5 06 f9 f8 5d a5 99 a3 a4 92 74 84 c9 ca 34 cd |....].....t...4.|
000000d0 86 20 32 e0 dd 2a 69 f7 eb 71 37 3f b2 63 7d 9f |. 2..*i..q7?.c}.|
000000e0 6b 7d c7 4a fd 57 67 a1 a0 22 f6 a3 cf 46 c7 ed |k}.J.Wg.."...F..|
000000f0 38 cf 41 d3 f1 f0 8b 9f dd 6a 73 f3 0a e8 e5 f2 |8.A......js.....|
00000100 84 f0 d6 b5 d2 ba 3e af 11 db d8 df ba aa 85 e6 |......>.........|
00000110 44 86 1c 85 9e 6b 57 d7 6c 80 4c ef 44 fb f1 14 |D....kW.l.L.D...|
00000120 8b 99 4a 61 8a 37 8d 5b 54 53 6a cd 5c 6f 9f 0c |..Ja.7.[TSj.\o..|
00000130 86 dc db 97 e4 2c ff 64 cf f8 69 9e 82 0d 28 3e |.....,.d..i...(>|
00000140 a9 91 e4 39 68 9d 4a 76 cf 99 7c ac 40 90 a6 0d |...9h.Jv..|.@...|
00000150 8e e0 62 05 |..b.|
>>> Flow 13 (client to server)
00000000 00 00 02 80 87 c1 35 bf fa 7e d1 55 cd 2e e9 80 |......5..~.U....|
00000010 ee a5 09 06 87 ea e0 49 a4 c3 be 1d fb a4 ef 74 |.......I.......t|
00000020 35 1f 18 7b 46 fc 07 82 50 89 b6 63 67 6a c8 72 |5..{F...P..cgj.r|
00000030 1c 86 32 33 8b 94 72 ce 41 15 82 02 f2 31 5e 03 |..23..r.A....1^.|
00000040 72 28 77 e4 5d 55 df 53 c5 07 d0 62 db 3b 70 f4 |r(w.]U.S...b.;p.|
00000050 10 76 36 4f ea 0c 6f eb 63 c5 d8 7f ce e9 34 d2 |.v6O..o.c.....4.|
00000060 a1 b1 ee 97 bd d6 d2 2f 35 a8 35 86 2e 7f a4 0c |......./5.5.....|
00000070 da 32 59 8f c1 69 b2 f2 9d b7 50 8f 91 4d 0f d8 |.2Y..i....P..M..|
00000080 90 19 6d 63 72 bd 8b 26 08 65 66 64 d3 85 60 fc |..mcr..&.efd..`.|
00000090 d8 df 74 44 e9 6f b7 63 84 d3 34 21 58 22 ff 36 |..tD.o.c..4!X".6|
000000a0 f5 f9 2b db 4f b6 13 2c 02 b5 52 5b be 20 db 1e |..+.O..,..R[. ..|
000000b0 6d 3c 00 cb 85 f0 88 32 98 e5 4d f6 e4 8d a5 5b |m<.....2..M....[|
000000c0 93 ea 44 3e 53 87 0d 68 f8 b5 7e e2 7f 66 f5 4b |..D>S..h..~..f.K|
000000d0 72 17 fd 3d 7b c9 1d 4a ef 57 1e 98 2a 70 b9 60 |r..={..J.W..*p.`|
000000e0 ef 13 ea 39 c4 50 96 5f c6 b4 2c 3e bc 8e df e2 |...9.P._..,>....|
000000f0 7d 90 79 ab c8 98 b8 30 e0 c7 46 31 20 a4 f5 b3 |}.y....0..F1 ...|
00000100 07 bc 6f d4 58 5b 4f 89 df fe 2b d8 d2 6b b8 2e |..o.X[O...+..k..|
00000110 48 8e aa 0e f1 34 5e 5f fb e3 28 10 a6 d9 63 c9 |H....4^_..(...c.|
00000120 79 9c 67 d8 e7 3b 2b 1d 66 d1 84 28 46 a2 84 9f |y.g..;+.f..(F...|
00000130 ed 94 4d 15 5d 26 ec 61 0c cb 5f d9 26 4c df 9d |..M.]&.a.._.&L..|
00000140 cc 18 80 de 2e 4b 33 76 35 87 c6 c3 8f 98 1c 0b |.....K3v5.......|
00000150 77 55 79 7a fa 70 44 09 bb 62 11 51 64 62 69 d1 |wUyz.pD..b.Qdbi.|
00000160 06 a4 c6 54 d4 7c bb 1f 1a b3 4e 42 2c 2e d8 29 |...T.|....NB,..)|
00000170 dd ff 50 1c ec 30 f9 b2 bc da 0d 93 37 87 c5 9f |..P..0......7...|
00000180 4b 3a d0 8d 12 77 09 1d 29 b3 34 8f cc ce 43 f6 |K:...w..).4...C.|
00000190 1f 0f e4 cc 54 60 25 aa ca c7 99 60 00 93 72 46 |....T`%....`..rF|
000001a0 21 9c 68 a1 eb ff cb 44 7a b7 57 b3 9b 9c 14 a8 |!.h....Dz.W.....|
000001b0 a4 19 13 99 58 cf 18 49 64 95 03 eb 1a dc d6 32 |....X..Id......2|
000001c0 f7 d9 23 fe 08 d6 0b da ec d7 06 54 13 78 e3 c3 |..#........T.x..|
000001d0 4e f4 d5 ff 9a 84 c9 62 ba 40 eb 10 0f 41 f9 0e |N......b.@...A..|
000001e0 4f d9 15 ad fe f4 09 f0 ee c7 b6 39 5a ef d0 24 |O..........9Z..$|
000001f0 16 d3 95 39 cb 2f 50 30 8c b9 c1 d9 95 98 1f 74 |...9./P0.......t|
00000200 a1 db 6d 2d fc 33 61 c2 d9 d1 91 41 f3 ae 69 1b |..m-.3a....A..i.|
00000210 e3 e6 9f 90 84 04 d0 1e 0c a0 7c 94 78 f0 69 5f |..........|.x.i_|
00000220 43 a4 66 3d 1c 5e a6 eb c6 a5 3b 0e 61 82 65 66 |C.f=.^....;.a.ef|
00000230 26 fa 90 43 3b 0f 11 07 ab b1 3c cc 9a 40 80 79 |&..C;.....<..@.y|
00000240 c4 d1 da 40 71 70 11 d1 93 31 4a 44 91 f0 39 87 |...@qp...1JD..9.|
00000250 0a ed 53 e0 e4 00 9e 93 6d e7 a8 14 f1 69 84 49 |..S.....m....i.I|
00000260 d8 97 6c f0 db ab a0 13 1a e8 9b bf 43 a2 3e 84 |..l.........C.>.|
00000270 d2 45 16 d6 8d c9 85 f5 39 05 4b 3f db f3 87 47 |.E......9.K?...G|
00000280 56 36 fe 46 7b 36 4f 38 be 3a 13 bb 82 5f 59 5d |V6.F{6O8.:..._Y]|
00000290 a9 ec b3 02 |....|
>>> Flow 14 (server to client)
00000000 00 00 00 10 4a 36 13 a2 c0 c1 a9 77 7c dc 8e 24 |....J6.....w|..$|
00000010 4c 39 78 70 1c a1 07 99 21 50 ee 27 b9 7e 41 e0 |L9xp....!P.'.~A.|
00000020 99 80 7d 96 |..}.|
@@ -0,0 +1,340 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 ac 0e 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |........+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 4c 64 69 66 66 69 65 |EPv..>...Ldiffie|
00000020 2d 68 65 6c 6c 6d 61 6e 2d 67 72 6f 75 70 2d 65 |-hellman-group-e|
00000030 78 63 68 61 6e 67 65 2d 73 68 61 32 35 36 2c 65 |xchange-sha256,e|
00000040 78 74 2d 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 |xt-info-c,kex-st|
00000050 72 69 63 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 |rict-c-v00@opens|
00000060 73 68 2e 63 6f 6d 00 00 00 57 65 63 64 73 61 2d |sh.com...Wecdsa-|
00000070 73 68 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 |sha2-nistp256,ec|
00000080 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 |dsa-sha2-nistp38|
00000090 34 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |4,ecdsa-sha2-nis|
000000a0 74 70 35 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 |tp521,ssh-rsa,ss|
000000b0 68 2d 64 73 73 2c 73 73 68 2d 65 64 32 35 35 31 |h-dss,ssh-ed2551|
000000c0 39 00 00 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 |9...laes128-gcm@|
000000d0 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 |openssh.com,aes2|
000000e0 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 |56-gcm@openssh.c|
000000f0 6f 6d 2c 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 |om,chacha20-poly|
00000100 31 33 30 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |1305@openssh.com|
00000110 2c 61 65 73 31 32 38 2d 63 74 72 2c 61 65 73 31 |,aes128-ctr,aes1|
00000120 39 32 2d 63 74 72 2c 61 65 73 32 35 36 2d 63 74 |92-ctr,aes256-ct|
00000130 72 00 00 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 |r...laes128-gcm@|
00000140 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 |openssh.com,aes2|
00000150 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 |56-gcm@openssh.c|
00000160 6f 6d 2c 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 |om,chacha20-poly|
00000170 31 33 30 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |1305@openssh.com|
00000180 2c 61 65 73 31 32 38 2d 63 74 72 2c 61 65 73 31 |,aes128-ctr,aes1|
00000190 39 32 2d 63 74 72 2c 61 65 73 32 35 36 2d 63 74 |92-ctr,aes256-ct|
000001a0 72 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d 32 |r...nhmac-sha2-2|
000001b0 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |56-etm@openssh.c|
000001c0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 |om,hmac-sha2-512|
000001d0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000001e0 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c 68 |,hmac-sha2-256,h|
000001f0 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d 61 |mac-sha2-512,hma|
00000200 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 31 |c-sha1,hmac-sha1|
00000210 2d 39 36 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 |-96...nhmac-sha2|
00000220 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 |-256-etm@openssh|
00000230 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 |.com,hmac-sha2-5|
00000240 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |12-etm@openssh.c|
00000250 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
00000260 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 |,hmac-sha2-512,h|
00000270 6d 61 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 |mac-sha1,hmac-sh|
00000280 61 31 2d 39 36 00 00 00 04 6e 6f 6e 65 00 00 00 |a1-96....none...|
00000290 04 6e 6f 6e 65 00 00 00 00 00 00 00 00 00 00 00 |.none...........|
000002a0 00 00 d7 3b 80 93 f6 ef bc 88 eb 1a 6e ac fa 66 |...;........n..f|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 ce fa 42 f0 01 84 db 18 f9 c1 |........B.......|
00000010 aa 81 b5 e1 09 eb 00 00 01 7a 73 6e 74 72 75 70 |.........zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 1c 0e 22 00 00 08 00 00 00 08 00 00 00 |....."..........|
00000010 20 00 ef 26 3c b1 ee a9 88 00 4b 93 10 3c fb 0a | ..&<.....K..<..|
>>> Flow 6 (server to client)
00000000 00 00 01 14 08 1f 00 00 01 01 00 f7 b6 db 13 59 |...............Y|
00000010 f9 0c 03 25 32 08 9b f3 ba e4 a2 ed 12 09 ee 18 |...%2...........|
00000020 1e 51 7d 24 23 8a 7e df 32 48 9c 1e 6f 3d ba 19 |.Q}$#.~.2H..o=..|
00000030 c0 14 89 ff 3b 6a 27 64 e9 32 b1 08 21 84 62 11 |....;j'd.2..!.b.|
00000040 1d 8c 83 4e b6 42 72 6f 08 fd be eb c0 8d c2 5a |...N.Bro.......Z|
00000050 2a bd 10 d7 2d e4 05 3e f4 b4 8a d3 85 a0 eb 97 |*...-..>........|
00000060 f1 ef 96 f0 1b aa 45 aa 91 4b ad 80 96 b9 79 19 |......E..K....y.|
00000070 f7 24 c1 07 5f cf ba 43 11 90 06 c6 1a 5f 4e 99 |.$.._..C....._N.|
00000080 1b 79 1e 10 56 73 0c f1 9e 92 15 b4 82 f6 04 71 |.y..Vs.........q|
00000090 04 26 9c 11 22 aa 14 a7 6b 55 37 62 1c 0a 62 0c |.&.."...kU7b..b.|
000000a0 e4 bd 63 a7 0b 89 8e 00 2d 19 bd 28 97 a1 d0 36 |..c.....-..(...6|
000000b0 b6 28 3e f9 cb 8a df 92 80 6c ae a8 ae fc de 63 |.(>......l.....c|
000000c0 f9 45 c5 f0 98 e1 18 24 be 34 93 22 5f 98 48 e0 |.E.....$.4."_.H.|
000000d0 8f 4a ab 4e 4c 36 21 d8 af 20 9c 02 05 86 83 33 |.J.NL6!.. .....3|
000000e0 2c e1 16 3d 15 8c 48 4e cf 99 09 5c 88 9b 90 01 |,..=..HN...\....|
000000f0 27 de 43 67 d2 a8 43 3e 5d 23 da b5 f5 ae bd a9 |'.Cg..C>]#......|
00000100 7c 42 5f 8b 16 97 59 f2 66 cc cb 00 00 00 01 02 ||B_...Y.f.......|
00000110 00 00 00 00 00 00 00 00 |........|
>>> Flow 7 (client to server)
00000000 00 00 01 0c 06 20 00 00 01 00 3d 5f 1a c6 e8 7d |..... ....=_...}|
00000010 30 eb 84 57 b6 e4 82 2e 1c 5d 84 fe 30 aa 8a 8d |0..W.....]..0...|
00000020 74 ff 44 9a 08 fb 46 6d a4 69 32 ad cc 61 d2 95 |t.D...Fm.i2..a..|
00000030 fd 16 ba f7 a0 ff d8 e0 57 81 e5 a7 e3 36 4b 0f |........W....6K.|
00000040 f5 17 05 19 38 7e 08 de e0 2c 1d 03 11 7c 94 49 |....8~...,...|.I|
00000050 ea a8 d0 fa 52 7e bc ac c5 88 08 53 2a 4a 31 e8 |....R~.....S*J1.|
00000060 d9 ce 61 d6 3b 82 fd 28 40 73 7c 7a 1b c6 7d 31 |..a.;..(@s|z..}1|
00000070 8b 9c ba 15 9d fb a1 67 12 8b 51 df 00 69 df b6 |.......g..Q..i..|
00000080 a7 d6 bd c8 0b a6 7e d2 87 c6 ae a4 ff 63 20 be |......~......c .|
00000090 34 ca 0b 09 35 46 d3 14 25 23 ac 4a cd d2 7a 10 |4...5F..%#.J..z.|
000000a0 79 b5 d3 8a 11 9f 66 bd 54 2b 00 5e d5 06 ee dd |y.....f.T+.^....|
000000b0 fb 85 36 36 78 95 f1 aa 05 cb 28 3e f2 7f 62 f6 |..66x.....(>..b.|
000000c0 8b aa af c6 13 c7 28 c3 3f e2 2d 33 6f ff 51 6d |......(.?.-3o.Qm|
000000d0 ef e3 d9 e3 42 97 f3 68 7e 4e da fc 93 ec c4 0c |....B..h~N......|
000000e0 9c 0a 8d 41 3c d9 3c 0d 1f 6b 0f e5 75 4d 9c 1b |...A<.<..k..uM..|
000000f0 1d 4f 2b b3 cf a5 9b af d6 e0 2e 2d 05 93 9a 44 |.O+........-...D|
00000100 38 28 7c 08 27 30 b7 68 92 4d 26 ed c0 96 31 b1 |8(|.'0.h.M&...1.|
>>> Flow 8 (server to client)
00000000 00 00 01 e4 09 21 00 00 00 68 00 00 00 13 65 63 |.....!...h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 01 00 22 9c d1 15 5b 09 0e 26 5e 9e |......"...[..&^.|
00000080 07 7f c4 0f 06 80 aa 69 3f ad 26 1a e4 23 15 5e |.......i?.&..#.^|
00000090 0f f7 f3 25 dd 90 9e ee c8 ef dd bf 40 a6 f2 36 |...%........@..6|
000000a0 aa 5d 11 e0 79 8d 56 76 2e 38 26 f2 48 02 6f 67 |.]..y.Vv.8&.H.og|
000000b0 03 9e c5 e1 a2 00 40 28 92 74 9f f4 15 0b a7 eb |......@(.t......|
000000c0 bd 5b 61 8d f5 99 04 e3 bc 61 88 aa ff 32 cd b8 |.[a......a...2..|
000000d0 4c 47 62 7f 9f f4 d0 5b f2 cc 1b 2a b8 59 b4 bf |LGb....[...*.Y..|
000000e0 20 85 31 be 8c ec 9f b7 1b 7d a0 db 54 2a 6e 28 | .1......}..T*n(|
000000f0 46 bd 8a 8b d0 ab 7c a5 75 57 d9 c8 82 7e 3a 5b |F.....|.uW...~:[|
00000100 f2 37 bb 31 3e 31 7c 76 be 35 36 da a8 27 e0 8c |.7.1>1|v.56..'..|
00000110 f5 6f f3 59 7f 03 d0 43 cc 6a f9 35 cb 94 48 87 |.o.Y...C.j.5..H.|
00000120 bf 13 6b 55 76 cd 25 05 3a 6e 24 83 0a fb 8b 84 |..kUv.%.:n$.....|
00000130 a2 9f 11 4f 47 19 47 ce 8e 50 ed 0a 58 90 a8 4a |...OG.G..P..X..J|
00000140 a4 60 13 0c b5 08 ab cb c3 37 c4 dc ff e3 fa cb |.`.......7......|
00000150 58 ad ab 12 3e 78 63 e4 fc ba 87 9a 5c a7 9d 1d |X...>xc.....\...|
00000160 ba 55 31 6c be 30 cc e5 d1 78 dc 68 68 0b 06 3a |.U1l.0...x.hh..:|
00000170 6b d2 6f 00 89 7a 00 00 00 65 00 00 00 13 65 63 |k.o..z...e....ec|
00000180 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000190 36 00 00 00 4a 00 00 00 21 00 fa 2f 87 96 42 8a |6...J...!../..B.|
000001a0 6b ad 4f 7f 6a 18 23 7c 29 38 09 95 51 10 80 ad |k.O.j.#|)8..Q...|
000001b0 64 82 73 dc 51 c0 60 f8 72 95 00 00 00 21 00 a1 |d.s.Q.`.r....!..|
000001c0 88 1f 71 aa e2 1f 97 c5 ce 9a 5a 1c 09 3c 87 bc |..q.......Z..<..|
000001d0 e7 53 69 85 ed b6 59 f7 18 4c 76 02 75 1f 74 00 |.Si...Y..Lv.u.t.|
000001e0 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
000001f0 00 00 00 00 00 00 00 00 00 00 01 40 69 ce 95 02 |...........@i...|
00000200 42 fd f6 5a 31 a7 d8 0d cf d7 37 c2 be 4c ce 2a |B..Z1.....7..L.*|
00000210 87 4f 17 54 53 9e 51 c7 10 36 ed e7 c7 1f ea c9 |.O.TS.Q..6......|
00000220 13 5d 40 6e 97 cc 94 6b 5c 1c 47 8a 50 ed 11 1e |.]@n...k\.G.P...|
00000230 c8 08 7b a9 59 0e 8a 9d f3 1b 9b fb 55 42 f2 3f |..{.Y.......UB.?|
00000240 ba a9 60 7d 4f f4 d9 3e 31 2c 4f 00 6d 08 b5 b5 |..`}O..>1,O.m...|
00000250 26 7a 77 e6 b8 be a7 c2 a1 4a 03 e8 d5 f8 3e e6 |&zw......J....>.|
00000260 bc 35 8b cc de 91 6c 4b 04 13 56 d3 21 86 15 be |.5....lK..V.!...|
00000270 35 9e 3d 75 0b fb a2 60 55 0e fe 2a 97 59 08 ba |5.=u...`U..*.Y..|
00000280 d1 eb 1a 28 5b e8 c4 ab 57 6c 98 a0 07 44 12 da |...([...Wl...D..|
00000290 1c b5 a5 ff ff 40 fb 65 6f c1 36 39 9c fe 85 53 |.....@.eo.69...S|
000002a0 1d 0d cf e9 71 c3 54 a6 22 f9 4b b5 2d d0 16 05 |....q.T.".K.-...|
000002b0 01 bb e7 76 e6 37 27 53 12 9d 81 03 d5 51 68 5a |...v.7'S.....QhZ|
000002c0 1a 74 d2 86 9e a8 07 33 36 85 b0 83 fc 29 ec 55 |.t.....36....).U|
000002d0 9f 5a f3 65 dd 20 9e 78 16 77 47 1a 5f 91 dc 70 |.Z.e. .x.wG._..p|
000002e0 b5 5d cc 9f 39 29 e0 2a dd 11 8c 18 50 ba 4c 16 |.]..9).*....P.L.|
000002f0 cc 30 01 c4 3e 9c ff 04 53 51 26 e4 ca 00 2c 4d |.0..>...SQ&...,M|
00000300 9a d9 b2 28 38 c4 3f 23 cf 36 f2 cd cf 64 44 85 |...(8.?#.6...dD.|
00000310 12 1a 83 c5 fe e4 7c df e3 25 25 c0 72 35 1e e3 |......|..%%.r5..|
00000320 2b cc 4c 92 3f 72 50 cd d1 71 2b 25 66 7a 99 f3 |+.L.?rP..q+%fz..|
00000330 6f 89 40 14 fb de 87 46 98 a0 30 5e 1b 9b b7 07 |o.@....F..0^....|
00000340 d2 92 8b 85 71 e6 eb c3 59 4d 5a 31 |....q...YMZ1|
>>> Flow 9 (client to server)
00000000 00 00 00 0c 0a 15 09 58 f4 64 d8 89 f3 1b a0 10 |.......X.d......|
00000010 00 00 00 20 ec 44 9d 56 6e c0 a0 79 03 70 c7 71 |... .D.Vn..y.p.q|
00000020 19 8e 28 6e 94 8d c6 7c 91 8a 7b d3 32 b7 4c ca |..(n...|..{.2.L.|
00000030 01 a9 e8 69 be f2 bf 23 38 d1 8e 86 69 44 0c dd |...i...#8...iD..|
00000040 2a 29 b4 7c |*).||
>>> Flow 10 (server to client)
00000000 00 00 00 20 27 f3 90 62 3a f5 4e fe cd 68 f5 8d |... '..b:.N..h..|
00000010 a1 b4 81 cd c7 38 12 c3 d9 62 39 d5 c8 25 c1 ec |.....8...b9..%..|
00000020 43 af cc 06 73 bb 11 c2 64 b1 ff 3f e9 2b b0 f8 |C...s...d..?.+..|
00000030 13 98 5c 6c |..\l|
>>> Flow 11 (client to server)
00000000 00 00 00 30 e2 28 97 cb ad 4d 45 8d 34 e7 cc f3 |...0.(...ME.4...|
00000010 bd 2c 74 ff ca 83 c4 f8 0a 72 1b 70 d1 a8 3c 13 |.,t......r.p..<.|
00000020 c7 43 41 ea 60 1e a4 3b 3e 95 91 38 c9 42 e0 1e |.CA.`..;>..8.B..|
00000030 ac 9b 8b 32 9e cd b6 e1 bc 94 76 88 2a b5 ba 15 |...2......v.*...|
00000040 b5 42 4e b7 |.BN.|
>>> Flow 12 (server to client)
00000000 00 00 00 20 14 d4 d1 f3 e6 23 83 6b 2f f6 4e 6e |... .....#.k/.Nn|
00000010 c3 b0 e0 bb 58 6d 45 f7 6d 4f 00 af d4 c2 48 87 |....XmE.mO....H.|
00000020 15 6b 5c 80 5e 98 88 13 32 8c 72 e1 70 8d 1b 15 |.k\.^...2.r.p...|
00000030 a7 5f 65 b8 00 00 00 40 77 9e 84 59 54 09 0a 5d |._e....@w..YT..]|
00000040 a2 be 9b cd 04 f4 76 2f b0 89 e2 93 0f 65 da 6f |......v/.....e.o|
00000050 3d c9 4a 52 e5 f4 7f 65 2e 7f 06 92 f9 ed ea 56 |=.JR...e.......V|
00000060 46 1e 06 80 a6 ef a0 ff 8a b1 ae 67 69 bd f2 a0 |F..........gi...|
00000070 34 b1 28 7e 69 46 17 3e d4 4a d5 87 67 fd 52 42 |4.(~iF.>.J..g.RB|
00000080 f6 1c f0 cd 58 1e 1f d8 |....X...|
>>> Flow 13 (client to server)
00000000 00 00 01 60 35 c8 4f 9e ab 8a 8a fb 0c c3 1a 28 |...`5.O........(|
00000010 64 a7 7c b3 d0 31 be e2 1a fd 0d 87 66 67 00 39 |d.|..1......fg.9|
00000020 24 89 c2 3d b6 ca d8 3e 8d bf e4 7d 60 c2 99 19 |$..=...>...}`...|
00000030 a0 2a d5 bd 17 6e e9 12 98 c3 a0 16 93 a2 de 1e |.*...n..........|
00000040 ad 81 76 24 15 b8 67 89 61 d9 79 df d1 32 1a 14 |..v$..g.a.y..2..|
00000050 9d 63 9b dc d3 e6 f8 60 46 41 bf 22 25 2b 21 6e |.c.....`FA."%+!n|
00000060 8f a1 9e 10 14 66 de c6 ab 21 0f 52 0a 12 87 ff |.....f...!.R....|
00000070 34 9d 37 96 44 e7 2d 86 3d 6b c3 db 98 01 da 06 |4.7.D.-.=k......|
00000080 8b 22 33 09 db bf 38 ad bf 8a 26 34 a1 0d cf ef |."3...8...&4....|
00000090 e6 1e 30 ba 0a f2 d5 de a0 52 7c e9 53 11 c6 ee |..0......R|.S...|
000000a0 21 24 ae 2d 10 9f 43 ac f1 75 04 1d 5d 56 22 6b |!$.-..C..u..]V"k|
000000b0 89 af bb 73 26 9d cb ef 8e 2f 38 f3 f5 63 71 c5 |...s&..../8..cq.|
000000c0 f7 68 7b 9c b8 fc af e5 c9 80 22 50 16 dd 81 88 |.h{......."P....|
000000d0 b7 1a 83 fc 67 67 f0 27 5e c4 f5 5b 82 fa f0 74 |....gg.'^..[...t|
000000e0 ab 92 3a fb 9b 8f ac 11 e6 77 e5 f8 2c 9f 52 2b |..:......w..,.R+|
000000f0 7e 52 09 96 2f b3 c9 09 4e 44 6b b5 8d 4e 4f 82 |~R../...NDk..NO.|
00000100 ac 5e d1 0d 45 79 90 e4 79 cc bd 8b 9a 0d ba ec |.^..Ey..y.......|
00000110 c3 1b 07 ba 64 80 6c 16 41 84 ee 64 0e 54 13 b9 |....d.l.A..d.T..|
00000120 b3 f5 20 7f f3 f3 ad de 8d 07 9c e0 f1 d5 a5 62 |.. ............b|
00000130 02 ca 24 61 7a 28 1b b7 d0 b8 8f 78 3f f3 cd d0 |..$az(.....x?...|
00000140 a1 c5 7b 9d 84 7c b2 29 99 07 b3 00 0b 74 d5 28 |..{..|.).....t.(|
00000150 8c 80 2d 4c f2 b1 51 bf d9 32 9d f4 bd 63 f5 85 |..-L..Q..2...c..|
00000160 68 17 a1 df b1 99 8d f4 04 ed 47 fb e9 f7 4c a0 |h.........G...L.|
00000170 05 ff 02 08 |....|
>>> Flow 14 (server to client)
00000000 00 00 01 40 e5 e3 bc 08 24 8c 7a d6 bc 39 3b e5 |...@....$.z..9;.|
00000010 4c 55 a0 c2 2a b1 c9 47 9e fe ae 7d 6e 17 51 18 |LU..*..G...}n.Q.|
00000020 eb d6 dc bb 83 e2 3b a8 2e 00 27 de 45 65 33 0f |......;...'.Ee3.|
00000030 6a 0c 6e 7b 47 6d 29 eb db d6 db f6 2a 40 9f 0a |j.n{Gm).....*@..|
00000040 1c ad ed e2 81 1f 4c 10 f2 e2 04 0f 20 78 56 37 |......L..... xV7|
00000050 b0 e9 f9 86 96 24 43 82 7f 3b 59 d4 bc e3 0e 27 |.....$C..;Y....'|
00000060 55 34 b8 b7 13 79 d3 1e 68 8a 8e 1a 8a 63 52 d7 |U4...y..h....cR.|
00000070 f3 22 63 f6 c6 d3 44 57 4e 95 d2 67 96 e7 19 9c |."c...DWN..g....|
00000080 62 23 58 37 72 38 e0 c3 6e 64 aa 84 ff 01 ec 9c |b#X7r8..nd......|
00000090 f6 94 43 e2 25 9c 4f ee 1d be fb 5c fb f2 bd c4 |..C.%.O....\....|
000000a0 ec 40 8f d2 91 b8 43 43 6d 49 d5 6d da 5e 09 63 |.@....CCmI.m.^.c|
000000b0 81 4e ef 0d 2b 9b 22 7f 55 e2 c0 17 cd 33 a1 17 |.N..+.".U....3..|
000000c0 f8 dc c1 6f dd c0 7c b5 2e 2b 1d d8 d7 8c e9 9d |...o..|..+......|
000000d0 ae 43 95 4f 28 c4 a4 45 af a2 5d e5 17 da eb 0e |.C.O(..E..].....|
000000e0 6e 73 75 5b 88 ec 52 dd 81 45 c6 4c 04 dc e1 6d |nsu[..R..E.L...m|
000000f0 45 bb de b9 41 c7 98 f8 20 4a 4e 93 08 9d b5 7e |E...A... JN....~|
00000100 66 e0 19 4e b2 94 aa 52 b9 a7 e3 c4 97 54 81 a4 |f..N...R.....T..|
00000110 ca 34 5d a3 ce 8b 96 ea 18 44 d8 b5 b8 2d e9 c0 |.4]......D...-..|
00000120 1a f6 82 fe 04 29 af 8b eb ff 89 cb 01 b0 0c 0c |.....)..........|
00000130 ae 07 62 fc 3e 9a 21 fa d5 59 6d 20 9f 37 28 b1 |..b.>.!..Ym .7(.|
00000140 55 e8 ab 6c d8 25 9b 88 4f 52 51 55 0e 69 72 4d |U..l.%..ORQU.irM|
00000150 9d d6 f8 ed |....|
>>> Flow 15 (client to server)
00000000 00 00 02 80 9d 12 cb 6f c8 d4 5a 31 87 f9 be b5 |.......o..Z1....|
00000010 a3 7b 3c 32 36 a8 5f b3 fa 7a 2c 03 dc 56 e5 52 |.{<26._..z,..V.R|
00000020 c4 dc 9c bd 5b 7a 81 ba bd 5a 98 32 72 a2 0e 5a |....[z...Z.2r..Z|
00000030 28 4e 40 28 ce e5 51 d5 06 2c 6e 39 43 cf 64 17 |(N@(..Q..,n9C.d.|
00000040 25 3f d0 99 d6 96 84 ac b1 c6 c7 06 2f e9 5a 95 |%?........../.Z.|
00000050 79 f4 07 b9 ba 20 a6 c2 77 87 5d 94 06 26 9c 1e |y.... ..w.]..&..|
00000060 eb 01 4e 3a 6a 44 0e 22 b1 c9 7a 8a a9 65 b1 28 |..N:jD."..z..e.(|
00000070 03 6f 16 78 15 48 23 b4 bd 9f 7e 13 76 40 99 26 |.o.x.H#...~.v@.&|
00000080 32 fc 04 40 4f 7c c9 88 d0 5d 53 ca 5b 51 b9 55 |2..@O|...]S.[Q.U|
00000090 3f 5f 3a dc fc d4 ca 67 67 39 b9 85 c0 52 7a 1b |?_:....gg9...Rz.|
000000a0 16 19 17 8d e5 e2 41 f4 8f 2c a7 1a a0 f3 b1 bc |......A..,......|
000000b0 40 78 ce 60 a2 7c 71 64 9b 3d 02 f1 5d 10 73 2a |@x.`.|qd.=..].s*|
000000c0 2f 89 7f 92 b1 f9 43 c6 b1 61 8a 0d c6 3b e7 e5 |/.....C..a...;..|
000000d0 63 ba a0 c6 1f 1d ac a1 bd ec 24 b2 d9 23 92 46 |c.........$..#.F|
000000e0 91 d9 97 cf 50 00 57 99 46 41 a7 92 a5 5c 42 ab |....P.W.FA...\B.|
000000f0 73 87 c5 50 1a aa 71 3c 37 88 09 c3 bd 05 bf 2b |s..P..q<7......+|
00000100 d2 36 81 64 2d 8f 19 f7 e2 0b 1f 09 de 05 a9 4e |.6.d-..........N|
00000110 f6 e8 85 11 e7 9f ff 83 5d d7 8f 16 cc ff a5 03 |........].......|
00000120 59 d7 f2 3a 01 05 4d 02 e8 6d d3 db a4 37 27 e2 |Y..:..M..m...7'.|
00000130 f6 ac c6 fa 61 99 5c e9 7e 3b e0 8f 60 a9 ee f7 |....a.\.~;..`...|
00000140 a9 dd 91 f3 83 21 04 9e 17 37 e2 25 87 0e 65 14 |.....!...7.%..e.|
00000150 29 c1 e2 f4 68 42 98 b6 b9 d0 99 a2 19 09 0d 83 |)...hB..........|
00000160 6b 5e b6 94 08 be a1 55 e5 c9 60 3b 9c 96 49 86 |k^.....U..`;..I.|
00000170 df f3 87 e1 34 33 3a 28 48 39 5b 3b e8 95 29 96 |....43:(H9[;..).|
00000180 fe 1b 0d 67 ff ca 94 4e c3 e3 87 23 85 ff aa ff |...g...N...#....|
00000190 24 39 3d 3a 32 4a 0d 91 f7 96 f9 f2 5b 36 9c a9 |$9=:2J......[6..|
000001a0 6d 15 3e cb 79 84 a9 c8 ac e6 cf a6 ac d3 24 14 |m.>.y.........$.|
000001b0 e2 7a 00 38 13 c7 c4 62 2e 69 c6 45 d2 1f 8c bf |.z.8...b.i.E....|
000001c0 f9 64 6d f8 ca 71 e3 2d 59 23 ec 8e c9 56 cd c5 |.dm..q.-Y#...V..|
000001d0 b6 9c e0 fa 58 61 5d bc 11 15 8b 3a e6 bc 3a 7b |....Xa]....:..:{|
000001e0 be 8e ae e5 a6 dc 6a f7 2b 1c 37 2e 75 6b 77 5b |......j.+.7.ukw[|
000001f0 45 d4 94 e2 67 d6 63 b1 d3 b8 d2 f9 d4 cf 87 5a |E...g.c........Z|
00000200 3b 2b b7 7c b7 c7 58 86 ed de 00 91 39 88 92 ca |;+.|..X.....9...|
00000210 84 03 0c 40 72 18 86 b7 48 77 2f 36 24 be b4 e7 |...@r...Hw/6$...|
00000220 ba c3 94 bb 95 af f5 b2 0c ce 12 d2 21 16 87 fa |............!...|
00000230 d7 e1 81 d1 85 6f a2 e6 06 46 86 1a bb c0 74 c4 |.....o...F....t.|
00000240 f9 0a 98 6c 5f c4 25 5c a8 f8 44 50 36 9e 3b 87 |...l_.%\..DP6.;.|
00000250 82 a4 ff d1 6b fa 95 e8 37 2f ce 52 5b a6 6c a7 |....k...7/.R[.l.|
00000260 b1 7a 74 1e 4a 3f 77 b2 1c 4c 99 0f 7f 90 55 cf |.zt.J?w..L....U.|
00000270 9c de 62 b4 31 47 3b 31 9a 17 12 6f 16 61 10 72 |..b.1G;1...o.a.r|
00000280 0b 17 b0 3d 76 87 46 b3 1f b0 6d 2f 2c 3b 1f 49 |...=v.F...m/,;.I|
00000290 ff 7c a8 3b |.|.;|
>>> Flow 16 (server to client)
00000000 00 00 00 10 80 00 79 db a8 ad 00 6f ae 0c 3f 21 |......y....o..?!|
00000010 55 c3 33 5b 0f 09 8a 8e 7f 90 49 69 df 9e 03 44 |U.3[......Ii...D|
00000020 a3 b9 41 49 |..AI|
+317
View File
@@ -0,0 +1,317 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 9c 07 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |........+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 43 64 69 66 66 69 65 |EPv..>...Cdiffie|
00000020 2d 68 65 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 34 |-hellman-group14|
00000030 2d 73 68 61 31 2c 65 78 74 2d 69 6e 66 6f 2d 63 |-sha1,ext-info-c|
00000040 2c 6b 65 78 2d 73 74 72 69 63 74 2d 63 2d 76 30 |,kex-strict-c-v0|
00000050 30 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 00 00 00 |0@openssh.com...|
00000060 57 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 |Wecdsa-sha2-nist|
00000070 70 32 35 36 2c 65 63 64 73 61 2d 73 68 61 32 2d |p256,ecdsa-sha2-|
00000080 6e 69 73 74 70 33 38 34 2c 65 63 64 73 61 2d 73 |nistp384,ecdsa-s|
00000090 68 61 32 2d 6e 69 73 74 70 35 32 31 2c 73 73 68 |ha2-nistp521,ssh|
000000a0 2d 72 73 61 2c 73 73 68 2d 64 73 73 2c 73 73 68 |-rsa,ssh-dss,ssh|
000000b0 2d 65 64 32 35 35 31 39 00 00 00 6c 61 65 73 31 |-ed25519...laes1|
000000c0 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-gcm@openssh.c|
000000d0 6f 6d 2c 61 65 73 32 35 36 2d 67 63 6d 40 6f 70 |om,aes256-gcm@op|
000000e0 65 6e 73 73 68 2e 63 6f 6d 2c 63 68 61 63 68 61 |enssh.com,chacha|
000000f0 32 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e |20-poly1305@open|
00000100 73 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 |ssh.com,aes128-c|
00000110 74 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 |tr,aes192-ctr,ae|
00000120 73 32 35 36 2d 63 74 72 00 00 00 6c 61 65 73 31 |s256-ctr...laes1|
00000130 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-gcm@openssh.c|
00000140 6f 6d 2c 61 65 73 32 35 36 2d 67 63 6d 40 6f 70 |om,aes256-gcm@op|
00000150 65 6e 73 73 68 2e 63 6f 6d 2c 63 68 61 63 68 61 |enssh.com,chacha|
00000160 32 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e |20-poly1305@open|
00000170 73 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 |ssh.com,aes128-c|
00000180 74 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 |tr,aes192-ctr,ae|
00000190 73 32 35 36 2d 63 74 72 00 00 00 6e 68 6d 61 63 |s256-ctr...nhmac|
000001a0 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 |-sha2-256-etm@op|
000001b0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000001c0 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e |ha2-512-etm@open|
000001d0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
000001e0 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 2d |2-256,hmac-sha2-|
000001f0 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 2c 68 6d |512,hmac-sha1,hm|
00000200 61 63 2d 73 68 61 31 2d 39 36 00 00 00 6e 68 6d |ac-sha1-96...nhm|
00000210 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d 40 |ac-sha2-256-etm@|
00000220 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000230 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f 70 |-sha2-512-etm@op|
00000240 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
00000250 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 |ha2-256,hmac-sha|
00000260 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 2c |2-512,hmac-sha1,|
00000270 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 00 04 |hmac-sha1-96....|
00000280 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 00 00 00 |none....none....|
00000290 00 00 00 00 00 00 00 00 00 d7 3b 80 93 f6 ef bc |..........;.....|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 ff f5 d7 3a af 23 41 81 6a 18 |.........:.#A.j.|
00000010 ad 28 8a 69 66 8e 00 00 01 7a 73 6e 74 72 75 70 |.(.if....zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 01 0c 05 1e 00 00 01 01 00 8d 90 76 04 3b |.............v.;|
00000010 04 11 b1 36 c8 be 80 a0 85 a0 f1 65 b6 ab a4 9c |...6.......e....|
00000020 3d f5 f0 27 4e 02 8f ef 22 50 f1 0c 1a 5c 06 e6 |=..'N..."P...\..|
00000030 d0 a9 0c bb eb 58 07 90 b8 a5 cf 44 89 1f 3f 2e |.....X.....D..?.|
00000040 95 84 03 33 22 a2 7a a4 61 90 d8 e9 cc 24 0b a1 |...3".z.a....$..|
00000050 c1 ba e2 0f 1b cd aa 1a 93 70 40 58 50 f7 d4 1a |.........p@XP...|
00000060 3b 24 d4 3c bc 73 d5 d5 60 72 63 36 cb 5c e9 44 |;$.<.s..`rc6.\.D|
00000070 67 16 6e 57 58 7f cd 46 bd 64 c7 8d 0f 45 02 80 |g.nWX..F.d...E..|
00000080 9c 74 0c ef 8b 9e b3 ce b5 f2 f2 be 1a 7f f8 34 |.t.............4|
00000090 f0 86 77 cf c1 20 03 87 13 6f 49 f4 ee 8f ed 63 |..w.. ...oI....c|
000000a0 ef e5 31 7c 5b 7a 8b 24 e6 a9 b1 43 39 3b 67 57 |..1|[z.$...C9;gW|
000000b0 8c 65 76 e2 22 24 9d 29 51 f4 64 fb ab 0d 9c 94 |.ev."$.)Q.d.....|
000000c0 fa 69 0e 33 3e 1d b7 23 66 ec ae 8a 04 78 57 64 |.i.3>..#f....xWd|
000000d0 41 9b 2e a2 03 a6 97 91 e8 35 b8 a6 b9 d5 0e 87 |A........5......|
000000e0 83 c0 da 73 b1 4e 1c a0 78 59 8a 82 17 1c ef 95 |...s.N..xY......|
000000f0 99 3f 11 86 d4 40 31 cc 29 b6 a4 b6 1f 43 45 a3 |.?...@1.)....CE.|
00000100 9d 9c af 0d 29 ee 4e e3 63 53 39 59 3e a3 ae eb |....).N.cS9Y>...|
>>> Flow 6 (server to client)
00000000 00 00 01 e4 08 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 01 01 00 bb e8 9c 28 7b fd 80 e3 c8 |..........({....|
00000080 e3 28 f9 6f 18 2c ec d3 b6 c5 97 3d 40 c5 68 29 |.(.o.,.....=@.h)|
00000090 21 b0 05 76 78 c4 7e 4b cf f4 a7 7a 9c 07 ea 3a |!..vx.~K...z...:|
000000a0 c0 f7 c8 1e 91 fa 90 1d d7 3b 39 63 25 57 d4 3c |.........;9c%W.<|
000000b0 01 60 a9 93 6a c8 6d ce 29 4d 44 b4 54 c9 bf ed |.`..j.m.)MD.T...|
000000c0 03 d8 d3 4f f2 0a 4a f3 b2 45 9c bf 10 b9 be 07 |...O..J..E......|
000000d0 1c 17 c4 fd 63 e8 df ed d9 e1 e4 fa e3 03 91 d5 |....c...........|
000000e0 a8 67 1b f5 d2 81 07 0d e0 34 20 32 ba fd 70 ab |.g.......4 2..p.|
000000f0 2b 04 2a a5 d1 58 30 b1 5e 76 89 72 1c 41 32 f4 |+.*..X0.^v.r.A2.|
00000100 7d 15 d8 e0 9d 98 65 f9 3c 5e 91 da e5 2e 73 43 |}.....e.<^....sC|
00000110 73 a5 81 2e 81 b1 c2 9b 8c bd 51 ba 7f 69 b4 67 |s.........Q..i.g|
00000120 78 eb 01 78 68 69 0f dd 82 1a a8 20 cc e3 29 77 |x..xhi..... ..)w|
00000130 89 28 97 0b 3f c4 07 bd 83 d3 19 a8 8a eb a8 aa |.(..?...........|
00000140 dc 8a b7 ad 1d 88 3b c8 81 5f 71 40 6f 52 b5 0a |......;.._q@oR..|
00000150 ed 04 39 9f 4d df f9 55 44 a1 e6 51 51 a9 9a 05 |..9.M..UD..QQ...|
00000160 c5 17 e3 b7 f8 70 bc 5d 00 a3 ee d0 c0 2f 57 29 |.....p.]...../W)|
00000170 95 1a 0d 70 36 07 1a 00 00 00 65 00 00 00 13 65 |...p6.....e....e|
00000180 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 |cdsa-sha2-nistp2|
00000190 35 36 00 00 00 4a 00 00 00 21 00 eb d8 60 e1 40 |56...J...!...`.@|
000001a0 ae af 29 c5 d4 6d ed 45 13 51 ae d1 69 a5 bf 65 |..)..m.E.Q..i..e|
000001b0 8d 24 84 7b 92 1c 90 d4 cb c4 78 00 00 00 21 00 |.$.{......x...!.|
000001c0 c6 1e 47 79 49 4d e5 33 5b 9e b2 c9 cf 52 fa f8 |..GyIM.3[....R..|
000001d0 93 d9 43 b4 43 5e bc d7 27 f9 3f bc f6 f7 a7 cd |..C.C^..'.?.....|
000001e0 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
000001f0 00 00 00 00 00 00 00 00 00 00 01 40 e0 46 21 57 |...........@.F!W|
00000200 04 64 96 ed d2 fa a6 f5 b0 bf 0a a2 c8 01 b5 9f |.d..............|
00000210 38 b4 cf c9 c0 2b 99 58 8f 18 c0 3c b3 d2 ca ad |8....+.X...<....|
00000220 bc 06 75 37 57 9e 94 ff 37 37 cd a4 56 5c b9 ba |..u7W...77..V\..|
00000230 4e 3c 25 6b b5 2f 5e 0f ab af 10 ed 87 27 09 e8 |N<%k./^......'..|
00000240 de 05 27 aa 44 ed 90 ff 0e dd 68 ec 03 25 90 13 |..'.D.....h..%..|
00000250 d6 50 8d 02 44 ad b6 2a f5 17 ca 65 c8 50 0f 51 |.P..D..*...e.P.Q|
00000260 44 41 5e ab aa ca 05 42 70 1e 88 39 60 e3 2b 76 |DA^....Bp..9`.+v|
00000270 57 55 65 48 34 57 fc 2e a5 3b ef a9 83 ab 4a 29 |WUeH4W...;....J)|
00000280 66 10 ca 2a a5 a2 9e d5 4c 59 00 18 91 b4 f6 61 |f..*....LY.....a|
00000290 ea c3 02 72 00 1b d5 42 db bf 51 52 d4 d1 14 64 |...r...B..QR...d|
000002a0 fe 80 f3 98 18 de 69 2d 52 cb 17 5f 01 5a 60 84 |......i-R.._.Z`.|
000002b0 c3 ab 7c 75 ea 76 40 c1 16 af 18 cd 98 b1 68 9f |..|u.v@.......h.|
000002c0 9f 65 d3 7e a1 fe a2 d0 35 fd f8 32 ea b1 0b ee |.e.~....5..2....|
000002d0 4d 8b d1 28 62 8b 7f c4 c1 96 f3 d5 dd aa 71 20 |M..(b.........q |
000002e0 17 1f 48 9d cc 13 5e a2 c6 a1 06 c0 8a ab 86 45 |..H...^........E|
000002f0 25 b2 87 dc 4e 86 b9 5f de f0 60 cd b9 8c 60 18 |%...N.._..`...`.|
00000300 26 87 78 44 8d e0 56 c2 f9 56 5a 0c 52 68 a7 b9 |&.xD..V..VZ.Rh..|
00000310 48 8a 62 55 b6 d4 4f f5 dd df 20 90 34 d7 24 b5 |H.bU..O... .4.$.|
00000320 a2 f4 77 ac c8 79 cf f4 ad 73 8a c8 48 0a f7 a8 |..w..y...s..H...|
00000330 53 7f 8f f3 25 1d a5 18 e4 c5 8e 18 b3 93 21 ac |S...%.........!.|
00000340 db 53 83 1a 61 b0 65 f7 bc 64 c7 91 |.S..a.e..d..|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 61 3a 7f 1b 1d e3 3f d7 50 81 |......a:....?.P.|
00000010 00 00 00 20 04 f6 df f4 31 88 9c 11 03 01 aa d5 |... ....1.......|
00000020 9b e4 26 59 10 5e 56 43 8e a7 a3 9f 63 e5 12 15 |..&Y.^VC....c...|
00000030 54 21 47 c7 9b 25 63 8b 94 c1 13 cc 29 24 c2 5c |T!G..%c.....)$.\|
00000040 c0 c1 aa 0c |....|
>>> Flow 8 (server to client)
00000000 00 00 00 20 4c 85 e2 fe 02 7f 88 69 0d 6f 4d 47 |... L......i.oMG|
00000010 66 10 ee 86 ea 1a 8a d3 55 15 c8 a9 35 c1 e8 2b |f.......U...5..+|
00000020 3b 65 1b 74 95 16 93 1b cc c4 80 fa 04 e5 c5 21 |;e.t...........!|
00000030 af 2e 33 24 |..3$|
>>> Flow 9 (client to server)
00000000 00 00 00 30 ca f0 de 0e 0d 83 1a 71 2e c9 8d f8 |...0.......q....|
00000010 bf 89 c0 6f 46 cd 5f 4a ea fc b1 a9 3c 4e 6b 4f |...oF._J....<NkO|
00000020 89 6e 84 f7 a9 57 2c 25 60 5f 09 d2 f9 c4 0e 59 |.n...W,%`_.....Y|
00000030 18 29 5c 22 11 dc 6d b0 36 29 50 c4 4e f7 f2 bf |.)\"..m.6)P.N...|
00000040 ea 9a bd 7a |...z|
>>> Flow 10 (server to client)
00000000 00 00 00 20 fa 4c 56 f5 13 7b 2f 88 ca 73 f0 12 |... .LV..{/..s..|
00000010 c4 bc be c1 72 b2 ab 60 93 2c 54 26 ce 43 f7 bf |....r..`.,T&.C..|
00000020 0e 83 6f dd 83 f8 51 0d 58 54 69 38 df f9 30 29 |..o...Q.XTi8..0)|
00000030 89 50 a0 61 00 00 00 40 31 e7 db 21 76 3b 12 fa |.P.a...@1..!v;..|
00000040 14 cd a3 d4 ac 6c 1c aa 2b df 09 97 0c 85 9e df |.....l..+.......|
00000050 64 1f 89 de 4a fb 55 a6 26 f4 65 b2 12 79 f7 1e |d...J.U.&.e..y..|
00000060 63 47 8b 63 07 4e cb cd 46 d8 1b 32 bf e3 f3 76 |cG.c.N..F..2...v|
00000070 20 1f 92 03 53 ad 9f 84 32 32 4f 6a 68 53 03 7e | ...S...22OjhS.~|
00000080 b6 16 1e 94 05 b4 20 0f |...... .|
>>> Flow 11 (client to server)
00000000 00 00 01 60 37 91 33 16 95 11 7a 78 6b 59 c7 22 |...`7.3...zxkY."|
00000010 cc 19 90 5b 3d 88 ff 6e af cf 69 0f f7 75 2d 3b |...[=..n..i..u-;|
00000020 53 6e 86 c3 93 58 b6 a3 b5 de 93 d4 ae 10 d9 5a |Sn...X.........Z|
00000030 d5 f1 f9 90 ea d9 38 97 46 ea 52 8c 91 b8 0b ce |......8.F.R.....|
00000040 82 52 3f 0a 7e fb 0b d4 0d c7 72 c7 b2 c5 0f 91 |.R?.~.....r.....|
00000050 71 de a4 f5 be 5c 5b 2e 48 e6 51 37 6c 0d 6c ab |q....\[.H.Q7l.l.|
00000060 47 84 c6 75 23 8d 90 64 dc f2 c1 14 4b 0e 9f 3b |G..u#..d....K..;|
00000070 3f ec d8 b3 73 34 a1 4a b4 aa 0e 6d 8b a8 2b 65 |?...s4.J...m..+e|
00000080 c2 a5 40 ef ea ef 89 cc 40 22 b8 d1 39 e4 c1 ff |..@.....@"..9...|
00000090 73 45 62 81 c9 20 27 9d 66 47 92 05 1c 8c 3b 1c |sEb.. '.fG....;.|
000000a0 b5 09 03 5b 90 c3 ad 5f 03 62 30 86 48 95 2a ac |...[..._.b0.H.*.|
000000b0 ac f5 b8 ec f2 e0 51 8e a9 40 ac 61 4b 69 50 c9 |......Q..@.aKiP.|
000000c0 e4 fa 2a 69 b8 3f 3a 84 e7 2b 49 60 6a d0 5e f7 |..*i.?:..+I`j.^.|
000000d0 af 6b 16 68 c0 1b fc d6 9e e4 23 95 12 4d c5 24 |.k.h......#..M.$|
000000e0 d2 01 75 27 aa 85 9b 6b 00 13 66 62 c3 82 12 6c |..u'...k..fb...l|
000000f0 5a 19 f9 ac 7e 3a 42 a9 f8 c4 27 5d f7 39 3b 11 |Z...~:B...'].9;.|
00000100 8a 4a 15 19 1d f6 cd 87 ed 9e c9 46 cc a3 0d 0a |.J.........F....|
00000110 92 50 c7 96 87 9c 5f 14 57 00 7b 5f 21 1f 15 14 |.P...._.W.{_!...|
00000120 82 4d 30 63 83 35 14 6b 2f af ee 24 13 6b 53 b3 |.M0c.5.k/..$.kS.|
00000130 5a db 12 08 cc a5 e1 da 81 47 3b 90 ee 79 64 37 |Z........G;..yd7|
00000140 a8 6a 12 93 3b c1 96 48 5d 66 69 7e 4d 7c 56 a7 |.j..;..H]fi~M|V.|
00000150 d2 1b 46 73 58 f7 89 22 fa 62 29 be 2c 7f 09 d6 |..FsX..".b).,...|
00000160 0f 5f 5d e4 18 1d 81 3b 0d 88 9c 75 d0 67 6c fe |._]....;...u.gl.|
00000170 65 d6 8c 17 |e...|
>>> Flow 12 (server to client)
00000000 00 00 01 40 cc dc 9b d2 f9 94 0d 33 75 fd b3 c3 |...@.......3u...|
00000010 cf 4c f0 c8 51 37 61 82 2a bc 63 a8 3d 7e dd da |.L..Q7a.*.c.=~..|
00000020 bc 27 da 3c e6 03 3e b8 37 7f 7b 89 d8 68 a8 a8 |.'.<..>.7.{..h..|
00000030 48 66 12 20 ff f5 17 fe 1b 97 c5 36 b8 4e c0 43 |Hf. .......6.N.C|
00000040 05 6d 9a ad 47 fc 28 6c f7 a5 ca a2 ef 86 02 e6 |.m..G.(l........|
00000050 0b 0b c1 b8 23 78 e1 c3 ee 79 42 f0 7b b5 4c 99 |....#x...yB.{.L.|
00000060 2d ab 91 a6 49 62 be 29 00 85 14 96 e8 68 d7 f0 |-...Ib.).....h..|
00000070 a5 d3 68 ab 1e 85 12 35 51 9a 9e 0a 91 80 d4 80 |..h....5Q.......|
00000080 b5 3c 64 a2 40 46 89 fb a3 f9 ff 4c 45 d8 f6 d5 |.<d.@F.....LE...|
00000090 59 06 4a ea f6 4d 80 36 b1 98 7e 3b 92 8a 49 cd |Y.J..M.6..~;..I.|
000000a0 41 8b bf 4c ec 2f 6a 08 ec 58 6d 02 82 0e cb fd |A..L./j..Xm.....|
000000b0 b7 81 c6 06 4f 5d 2e c2 28 f6 7c 04 ce f9 f0 65 |....O]..(.|....e|
000000c0 8c ec 46 39 49 ef 51 47 0f 11 d3 d6 6e ae 66 5c |..F9I.QG....n.f\|
000000d0 ff 3a d2 1c d7 5f 95 9a 15 6c 28 0f c6 af 74 0a |.:..._...l(...t.|
000000e0 43 a9 c3 bc 50 10 14 67 ea 4d b4 f5 06 d4 80 72 |C...P..g.M.....r|
000000f0 ef 4c ea 9b 66 85 b6 79 7c 14 e7 9c 6a 73 7f 5e |.L..f..y|...js.^|
00000100 7c c8 99 bd 8d 23 6b 7f ea 46 08 2e 14 92 16 68 ||....#k..F.....h|
00000110 da 0c 0f 32 6c 17 87 2d a5 b7 4f 4f 85 38 90 85 |...2l..-..OO.8..|
00000120 75 7b eb 76 25 fd 0d 8a 7d c3 39 ac 0a 6a bd d0 |u{.v%...}.9..j..|
00000130 d7 16 73 80 24 7f b4 09 c9 3b 1c a3 a2 a3 44 22 |..s.$....;....D"|
00000140 cc 56 8b cb 8a 40 39 93 8f 7d c5 69 23 88 0e a9 |.V...@9..}.i#...|
00000150 0e bf cd f1 |....|
>>> Flow 13 (client to server)
00000000 00 00 02 80 ba 84 19 c9 a1 0b 8f a9 01 70 83 6c |.............p.l|
00000010 d6 57 d4 ab df bf 7b 26 80 19 ce 05 f3 10 d4 0d |.W....{&........|
00000020 90 bb f9 2e a8 2d 21 3e 1f 27 8f 0b 0c 7e b3 d5 |.....-!>.'...~..|
00000030 71 52 d8 91 89 a9 66 ca 22 f3 21 cf 94 d2 f4 6a |qR....f.".!....j|
00000040 1e b3 42 0f 36 84 5b ea 0f 68 c3 88 84 b5 87 63 |..B.6.[..h.....c|
00000050 21 7e 7b 5e 70 58 f8 1c ad f9 e1 d5 f0 46 a1 44 |!~{^pX.......F.D|
00000060 ee dd 15 f5 3d 81 15 7b e6 3b 9c dc df 81 30 ce |....=..{.;....0.|
00000070 94 26 01 78 05 aa 08 c9 60 d8 65 ab 36 63 27 b6 |.&.x....`.e.6c'.|
00000080 ae 3f dc 44 97 22 a8 6a 3e 79 39 82 31 26 c6 a1 |.?.D.".j>y9.1&..|
00000090 5b 15 1c 7d b2 d1 5b 84 99 3e 06 fe 33 61 88 fc |[..}..[..>..3a..|
000000a0 45 8b 43 f8 fe 73 37 66 71 0e 55 83 5a 61 4a 2f |E.C..s7fq.U.ZaJ/|
000000b0 e5 21 5a ca 24 f3 8c 57 ba e1 51 54 21 bf 0f b9 |.!Z.$..W..QT!...|
000000c0 cb 55 4c 73 c7 e8 a8 91 a9 48 25 1b ff ca 42 d2 |.ULs.....H%...B.|
000000d0 80 ca 0a 5b 80 7e d3 38 0c 9e c2 05 9d aa af e5 |...[.~.8........|
000000e0 13 56 14 84 f6 e8 b5 fe 7a 57 05 2c 90 29 5a 03 |.V......zW.,.)Z.|
000000f0 c6 55 9a 8a c1 0a a2 74 9f c6 ff 17 86 de 34 f1 |.U.....t......4.|
00000100 80 0a 09 5a 23 c1 d0 cc b2 e5 ad 1a ce e8 50 26 |...Z#.........P&|
00000110 67 2b 7e 88 c1 1b 4c 52 34 06 e3 dd b4 6e 17 53 |g+~...LR4....n.S|
00000120 f5 2e 6a 55 b3 cb b8 98 71 d6 54 e8 88 fe 47 55 |..jU....q.T...GU|
00000130 20 db 9d fa 1c 23 73 88 22 0b 4a 16 7a 9b 73 4b | ....#s.".J.z.sK|
00000140 d0 31 e9 60 8b 87 c6 e9 e5 f0 52 93 40 02 b4 bb |.1.`......R.@...|
00000150 e1 8d 28 a3 8b e6 73 8d 8c 3d 5f 9a 4f 7f a6 b4 |..(...s..=_.O...|
00000160 9f 55 58 57 dc 44 a2 9b 1a 67 43 37 45 e8 00 5c |.UXW.D...gC7E..\|
00000170 9a 06 a0 89 0c f2 72 67 9b 60 44 dd 15 62 aa 28 |......rg.`D..b.(|
00000180 e5 99 0d dd f6 7b 2e 6a e1 b8 fc c2 85 01 6a 9d |.....{.j......j.|
00000190 62 20 4f 28 24 1c 62 27 a2 0e 6e 5f 55 62 b2 5d |b O($.b'..n_Ub.]|
000001a0 c7 d2 12 f5 5f 2a a8 98 17 0d 2b 70 0d c0 50 2f |...._*....+p..P/|
000001b0 de e9 ca b5 10 20 17 d6 12 e6 ad bc 26 f9 b1 1a |..... ......&...|
000001c0 ed 7d 1b 41 a6 07 b7 43 2b fa 70 f5 cb 53 60 51 |.}.A...C+.p..S`Q|
000001d0 b6 79 05 20 ee 4b 5e 14 13 1c 37 29 77 94 c5 e1 |.y. .K^...7)w...|
000001e0 ac 3d 1c 90 7f ec bf d9 4f b7 07 b4 a9 86 67 8c |.=......O.....g.|
000001f0 c0 bf 80 61 9c be 2d 75 68 31 20 13 fd 1d ab 3b |...a..-uh1 ....;|
00000200 02 62 6d df 75 ce 30 18 35 be 00 e3 86 a9 00 ed |.bm.u.0.5.......|
00000210 c6 4a ca a1 26 51 f8 b2 bf b2 3c 01 53 4f 37 03 |.J..&Q....<.SO7.|
00000220 31 b0 52 36 bd bf 9f 04 4d 1d 21 10 c5 c1 5c 00 |1.R6....M.!...\.|
00000230 9c 7b 66 a8 97 10 64 d7 20 87 91 ec 92 62 01 99 |.{f...d. ....b..|
00000240 85 d2 4c 3b 54 d5 6d af cc a2 d6 a2 2d 9c e3 ea |..L;T.m.....-...|
00000250 9e fe c7 e4 d9 c1 31 02 ed 10 56 90 8e 19 c1 53 |......1...V....S|
00000260 70 b3 4a 44 95 cc b1 2d 1b a4 99 96 fd 16 db cd |p.JD...-........|
00000270 39 b9 62 60 00 c4 86 79 a4 3f fc a0 70 a2 c8 23 |9.b`...y.?..p..#|
00000280 59 0c f3 da 23 18 e1 78 25 f8 a2 dd 68 4b a2 fc |Y...#..x%...hK..|
00000290 27 eb 07 5b |'..[|
>>> Flow 14 (server to client)
00000000 00 00 00 10 b2 de ad b1 55 01 bf 1c 1f c3 73 60 |........U.....s`|
00000010 3b ec 6d 32 9b 16 32 6d 52 99 0e 29 39 c1 ce 51 |;.m2..2mR..)9..Q|
00000020 d3 02 db 78 |...x|
+317
View File
@@ -0,0 +1,317 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 9c 05 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |........+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 45 64 69 66 66 69 65 |EPv..>...Ediffie|
00000020 2d 68 65 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 34 |-hellman-group14|
00000030 2d 73 68 61 32 35 36 2c 65 78 74 2d 69 6e 66 6f |-sha256,ext-info|
00000040 2d 63 2c 6b 65 78 2d 73 74 72 69 63 74 2d 63 2d |-c,kex-strict-c-|
00000050 76 30 30 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 00 |v00@openssh.com.|
00000060 00 00 57 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 |..Wecdsa-sha2-ni|
00000070 73 74 70 32 35 36 2c 65 63 64 73 61 2d 73 68 61 |stp256,ecdsa-sha|
00000080 32 2d 6e 69 73 74 70 33 38 34 2c 65 63 64 73 61 |2-nistp384,ecdsa|
00000090 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 31 2c 73 |-sha2-nistp521,s|
000000a0 73 68 2d 72 73 61 2c 73 73 68 2d 64 73 73 2c 73 |sh-rsa,ssh-dss,s|
000000b0 73 68 2d 65 64 32 35 35 31 39 00 00 00 6c 61 65 |sh-ed25519...lae|
000000c0 73 31 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 |s128-gcm@openssh|
000000d0 2e 63 6f 6d 2c 61 65 73 32 35 36 2d 67 63 6d 40 |.com,aes256-gcm@|
000000e0 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 63 68 61 63 |openssh.com,chac|
000000f0 68 61 32 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 |ha20-poly1305@op|
00000100 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 |enssh.com,aes128|
00000110 2d 63 74 72 2c 61 65 73 31 39 32 2d 63 74 72 2c |-ctr,aes192-ctr,|
00000120 61 65 73 32 35 36 2d 63 74 72 00 00 00 6c 61 65 |aes256-ctr...lae|
00000130 73 31 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 |s128-gcm@openssh|
00000140 2e 63 6f 6d 2c 61 65 73 32 35 36 2d 67 63 6d 40 |.com,aes256-gcm@|
00000150 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 63 68 61 63 |openssh.com,chac|
00000160 68 61 32 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 |ha20-poly1305@op|
00000170 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 |enssh.com,aes128|
00000180 2d 63 74 72 2c 61 65 73 31 39 32 2d 63 74 72 2c |-ctr,aes192-ctr,|
00000190 61 65 73 32 35 36 2d 63 74 72 00 00 00 6e 68 6d |aes256-ctr...nhm|
000001a0 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d 40 |ac-sha2-256-etm@|
000001b0 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
000001c0 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f 70 |-sha2-512-etm@op|
000001d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000001e0 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 |ha2-256,hmac-sha|
000001f0 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 2c |2-512,hmac-sha1,|
00000200 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 00 6e |hmac-sha1-96...n|
00000210 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 |hmac-sha2-256-et|
00000220 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d |m@openssh.com,hm|
00000230 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 |ac-sha2-512-etm@|
00000240 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000250 2d 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 |-sha2-256,hmac-s|
00000260 68 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 |ha2-512,hmac-sha|
00000270 31 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 |1,hmac-sha1-96..|
00000280 00 04 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 00 |..none....none..|
00000290 00 00 00 00 00 00 00 00 00 00 00 d7 3b 80 93 f6 |............;...|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 3b 38 33 fe f9 9b 4e 24 fc bf |......;83...N$..|
00000010 1e 5a 51 9c 33 20 00 00 01 7a 73 6e 74 72 75 70 |.ZQ.3 ...zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 01 0c 05 1e 00 00 01 01 00 c0 df 6a 69 44 |.............jiD|
00000010 14 06 d3 98 91 ee 99 a4 d9 79 ef be 14 c2 ba 61 |.........y.....a|
00000020 05 12 b5 a3 14 03 76 7a f5 c5 65 c9 e1 a7 97 df |......vz..e.....|
00000030 65 00 8f 76 49 12 81 cc 7b dd 6c 4a b1 a3 92 92 |e..vI...{.lJ....|
00000040 ad 6c 00 10 b8 38 82 91 ce 9d ba 20 f9 88 4f 65 |.l...8..... ..Oe|
00000050 51 bf 19 5b 8e 08 de 30 57 99 65 81 76 b4 4a cd |Q..[...0W.e.v.J.|
00000060 d1 fb 8c be b0 b1 e9 17 c5 40 a3 85 da d8 6c 5c |.........@....l\|
00000070 33 e7 ba 7a 58 49 26 d7 d8 99 3c 41 46 94 dc ff |3..zXI&...<AF...|
00000080 db f3 f8 71 b5 7b dc 19 da 5d 3e 89 8f 42 74 a8 |...q.{...]>..Bt.|
00000090 74 a6 1c 82 78 3e 1f 3e 43 2f 09 a6 16 a4 5b 0e |t...x>.>C/....[.|
000000a0 32 2d 9b 59 92 41 fc be 1e b9 7c 11 96 40 32 5a |2-.Y.A....|..@2Z|
000000b0 97 b2 2b 8f ff 49 b5 a4 88 55 9b dc 36 73 96 b2 |..+..I...U..6s..|
000000c0 07 36 87 8a ba 3f 18 87 24 69 f8 2c e5 f7 c9 1b |.6...?..$i.,....|
000000d0 fe 1a d7 06 1a 34 61 2b 71 3f 1f 51 67 1b b2 6f |.....4a+q?.Qg..o|
000000e0 31 ea 2d d0 0f d5 62 ee 6b 2d 2e 36 62 96 87 05 |1.-...b.k-.6b...|
000000f0 1a e8 e7 d3 e6 52 2b 41 6a 07 28 d0 ed a5 b2 41 |.....R+Aj.(....A|
00000100 bc 1d fd 60 f4 3e cb ab d8 7b 23 f7 0c 59 3e a3 |...`.>...{#..Y>.|
>>> Flow 6 (server to client)
00000000 00 00 01 e4 0a 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 01 00 4d be 3f 6b a5 f8 18 67 76 77 |......M.?k...gvw|
00000080 cd 70 a8 ed d1 bf 49 2d 43 d0 0e 15 b6 9a f6 8b |.p....I-C.......|
00000090 80 ec 8f 33 40 df 38 7b 2c a8 b0 27 fa b4 0e 55 |...3@.8{,..'...U|
000000a0 0f df d1 38 3a 62 60 d0 a7 4f 5e 0e 35 1a 7e 00 |...8:b`..O^.5.~.|
000000b0 9c 07 f4 15 39 f8 17 45 1d 3f ad f7 3d 88 e8 c0 |....9..E.?..=...|
000000c0 2f c4 0c 94 f1 02 51 54 f0 3b a6 80 97 4e cc 7c |/.....QT.;...N.||
000000d0 b9 e1 37 a6 83 1f 5c 3e cd 28 cd f6 b1 ca 70 e4 |..7...\>.(....p.|
000000e0 b2 26 66 ae f3 c9 a1 b6 70 ce 0b e6 9a 43 31 cb |.&f.....p....C1.|
000000f0 00 d2 2c b0 6b 23 3d 84 ea 0f 3e 7c 06 79 06 86 |..,.k#=...>|.y..|
00000100 b7 21 ae bc 53 0a 4d a0 79 93 96 06 b0 fa 0e ed |.!..S.M.y.......|
00000110 3d 76 03 22 03 b7 30 3d 49 6a 28 d1 f7 de d3 8f |=v."..0=Ij(.....|
00000120 ad dd 72 3e fc be 33 40 ba d2 2f 39 48 0e 4b 26 |..r>..3@../9H.K&|
00000130 1d 49 cf 64 9e 87 f6 e5 2f ee 3b bc e7 ce 64 0d |.I.d..../.;...d.|
00000140 0a da e9 2e cc 74 94 05 a4 7b 6a 2c 73 b0 a7 85 |.....t...{j,s...|
00000150 3d ed b3 cb c1 c1 ec 29 70 8c 99 ef 6b 3c 4f 41 |=......)p...k<OA|
00000160 f3 d0 fe b3 55 76 e3 92 3a fd bc d7 ab 97 56 e9 |....Uv..:.....V.|
00000170 e6 8d fe d6 8e b9 00 00 00 64 00 00 00 13 65 63 |.........d....ec|
00000180 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000190 36 00 00 00 49 00 00 00 21 00 88 8f 5c 5a 04 d9 |6...I...!...\Z..|
000001a0 f9 9e 84 c9 85 c1 9b f1 29 45 16 81 34 08 bc d1 |........)E..4...|
000001b0 60 6b 7b 5c e0 79 5d 58 42 49 00 00 00 20 7b a4 |`k{\.y]XBI... {.|
000001c0 30 a0 e8 d0 61 12 c3 54 2b 7b e4 07 ce a1 32 42 |0...a..T+{....2B|
000001d0 67 f9 17 c5 a8 64 5b c8 68 a2 c3 46 cf 16 00 00 |g....d[.h..F....|
000001e0 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
000001f0 00 00 00 00 00 00 00 00 00 00 01 40 ab eb 43 d2 |...........@..C.|
00000200 4c 38 38 cf 8b 02 a4 3b 43 26 5f 34 11 6c 29 2e |L88....;C&_4.l).|
00000210 10 10 d6 aa 0d 45 99 b2 6f cb 62 90 b8 ba 56 fe |.....E..o.b...V.|
00000220 ac 70 56 e9 52 5f cf 28 46 05 22 20 32 f6 1e 48 |.pV.R_.(F." 2..H|
00000230 ed 4b 60 19 5d 26 44 fc d5 95 ca dc 04 56 ff b7 |.K`.]&D......V..|
00000240 31 2e 35 6d 63 0c e2 9c 75 d8 12 3d a0 3d 46 6b |1.5mc...u..=.=Fk|
00000250 05 4a d5 1c 37 bd 6f 0f 8a 42 bb e1 7e c9 b1 18 |.J..7.o..B..~...|
00000260 0d 68 7f 20 9b 8d 60 19 39 1e b1 47 9d bd 11 6e |.h. ..`.9..G...n|
00000270 10 bb d0 41 d0 1c 7c a7 9d d2 48 83 19 59 20 cc |...A..|...H..Y .|
00000280 88 b6 67 4f 67 6a 2a 85 9c e4 6c c0 07 91 b8 51 |..gOgj*...l....Q|
00000290 ef b8 57 34 8f f5 5d 82 10 35 c8 0d 11 52 f4 08 |..W4..]..5...R..|
000002a0 dd 75 7a 70 d4 2e e4 54 a1 6c c2 b3 ac 3f 85 7e |.uzp...T.l...?.~|
000002b0 44 f2 88 bb 92 a4 63 de 99 17 40 4a a6 04 c6 ac |D.....c...@J....|
000002c0 65 32 0f 9c 70 77 1a f9 1b a4 e7 ff ad b1 89 1a |e2..pw..........|
000002d0 ed fc 7d ca d0 da 72 09 dd a4 53 7b 9b 15 38 26 |..}...r...S{..8&|
000002e0 55 d2 2b a7 06 05 14 d2 b6 bb 58 f0 e6 9d 89 fd |U.+.......X.....|
000002f0 6c b4 ee 6f 92 5d 90 f6 41 35 3b a4 0f ff f6 74 |l..o.]..A5;....t|
00000300 68 8f b4 c3 0a cf 8b 92 6d 4f 88 85 eb e3 6c 1d |h.......mO....l.|
00000310 5e 52 c3 7d 8e 7c 40 dc 50 d4 5d a5 34 09 ed 3e |^R.}.|@.P.].4..>|
00000320 a2 50 26 36 c2 de 21 8a 27 23 87 19 d5 f6 ca 13 |.P&6..!.'#......|
00000330 f6 5b 04 3a 9f 26 fe ca e3 4a de fe e9 dd 24 a1 |.[.:.&...J....$.|
00000340 e6 ab 71 92 54 b2 42 ac 93 f9 07 57 |..q.T.B....W|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 ae eb 61 3a 7f 1b 1d e3 3f d7 |........a:....?.|
00000010 00 00 00 20 9a c9 b5 4d 42 44 d3 9e b3 da b2 a8 |... ...MBD......|
00000020 4d 74 61 3c 88 92 61 72 ac 39 46 11 d3 81 11 00 |Mta<..ar.9F.....|
00000030 47 f3 62 f1 a7 9a 0e a3 84 9b 0e d4 cd 05 dd ba |G.b.............|
00000040 74 cb ce c2 |t...|
>>> Flow 8 (server to client)
00000000 00 00 00 20 66 32 98 0b 1c 0e 4c 74 19 72 8c 85 |... f2....Lt.r..|
00000010 45 21 7d 86 2d 52 c4 83 68 93 96 0f f2 e5 3b 3d |E!}.-R..h.....;=|
00000020 d5 37 f7 94 b0 f2 9d 15 bd 41 df 95 ce 5e c7 e0 |.7.......A...^..|
00000030 99 80 c3 f6 |....|
>>> Flow 9 (client to server)
00000000 00 00 00 30 8e 4c 28 17 78 72 67 e6 17 5e 57 96 |...0.L(.xrg..^W.|
00000010 34 da 95 4b 17 d8 13 19 6c 5a 59 8a ac dd 9d ba |4..K....lZY.....|
00000020 13 52 86 a4 d9 28 b3 6c b2 8f 86 e5 52 71 9f 77 |.R...(.l....Rq.w|
00000030 94 c6 72 1d b0 f2 d3 23 f5 37 b1 6d 9b b9 bb be |..r....#.7.m....|
00000040 82 f0 5c 4d |..\M|
>>> Flow 10 (server to client)
00000000 00 00 00 20 13 bd 6c af 45 15 f6 ae 02 8a bf 95 |... ..l.E.......|
00000010 46 67 fb ee fa 4e 46 54 a1 b3 da 5b f7 b5 07 38 |Fg...NFT...[...8|
00000020 30 af 7f 6a bd 35 3f 24 c6 84 7a c3 64 95 63 62 |0..j.5?$..z.d.cb|
00000030 f6 78 be e9 00 00 00 40 53 9c 7b f6 e6 7b 85 0f |.x.....@S.{..{..|
00000040 3b 3e 47 5c 3d 6b 20 47 1d 6f 88 93 b9 01 e5 fa |;>G\=k G.o......|
00000050 57 85 c1 99 f1 84 a4 c2 d9 4a fb 00 4e 5b db 3a |W........J..N[.:|
00000060 ea 10 bd 8a 75 c6 54 a9 b7 33 7f 52 9a b0 ae b9 |....u.T..3.R....|
00000070 f0 7d 43 c9 65 e6 05 14 a8 4d 62 c0 20 92 5f 55 |.}C.e....Mb. ._U|
00000080 cb d5 c6 20 46 dd f7 bd |... F...|
>>> Flow 11 (client to server)
00000000 00 00 01 60 5d c5 de 89 30 9f ae 98 0c 85 11 7a |...`]...0......z|
00000010 99 b7 96 f7 d3 18 13 1d f7 28 b0 c6 4c 55 9a 64 |.........(..LU.d|
00000020 90 85 3d 80 da 61 df fc 44 d1 0d 92 cc fe 29 d5 |..=..a..D.....).|
00000030 c8 23 9e f8 73 59 0b e6 5d f1 2c 79 39 ca 54 51 |.#..sY..].,y9.TQ|
00000040 66 f8 51 00 3d 5b d6 7f 6e e5 ef eb b6 05 38 ac |f.Q.=[..n.....8.|
00000050 8e e8 d9 b2 53 96 58 97 6a 6a d0 50 f2 67 b0 b7 |....S.X.jj.P.g..|
00000060 9b 44 98 11 d3 ca f3 55 14 f9 5c 6c a5 3b d5 50 |.D.....U..\l.;.P|
00000070 95 2b ef 6a 13 50 27 74 b7 0e ae 03 92 da b8 a7 |.+.j.P't........|
00000080 e3 a7 d1 14 5a 8d e6 0a d6 cd f2 29 e6 79 05 3a |....Z......).y.:|
00000090 28 8f 6d a8 95 b9 2f d2 db d6 4f c1 ca 47 d9 1f |(.m.../...O..G..|
000000a0 0e ed 2b e3 0d df e3 7e 65 5f 1e ab 2e 65 a8 da |..+....~e_...e..|
000000b0 df 43 59 99 5e 6d 71 3c dc 6a 7a 80 62 2f 96 f9 |.CY.^mq<.jz.b/..|
000000c0 08 8b 62 c4 f9 77 74 93 1d 18 ad e1 d5 f9 8e 08 |..b..wt.........|
000000d0 bc 6b 4e 4b 09 de 6b 39 e0 ab c0 f6 f3 06 fa ef |.kNK..k9........|
000000e0 94 c9 80 cc 8a 8b f3 16 eb 00 9d 20 62 bb 6d 50 |........... b.mP|
000000f0 27 e0 df 13 9c 64 45 ae aa 8c 50 8d 87 66 7c d7 |'....dE...P..f|.|
00000100 37 bf e2 45 7e 0b bc 4e ab 7f a4 9d b8 ba 66 f2 |7..E~..N......f.|
00000110 4a f8 24 0c c1 83 fc cb d2 03 24 f8 d1 18 71 7b |J.$.......$...q{|
00000120 21 67 c8 e5 6d 48 92 99 25 70 4c 4a 99 e2 aa 2b |!g..mH..%pLJ...+|
00000130 6c 66 32 f8 81 d7 2a 62 46 ad e3 ae 03 7c f4 29 |lf2...*bF....|.)|
00000140 af a6 30 33 31 9e 91 9d ae 80 80 97 f7 cc 32 68 |..031.........2h|
00000150 f6 59 e6 82 9b f3 a5 9a c1 f8 8c 4f ef c8 1b 67 |.Y.........O...g|
00000160 11 0f 7c 46 5c 5b 14 49 7b a6 60 2d b7 8c 48 e7 |..|F\[.I{.`-..H.|
00000170 3c 2f f9 0d |</..|
>>> Flow 12 (server to client)
00000000 00 00 01 40 0d 6b 28 2d 9c 27 de f3 ea 99 00 2e |...@.k(-.'......|
00000010 51 fc a7 29 ae cc 31 01 e9 d4 fe 3e 44 61 f6 57 |Q..)..1....>Da.W|
00000020 0e 07 4a bc ce 98 a2 34 e0 52 99 e7 17 d3 0b 51 |..J....4.R.....Q|
00000030 fc 58 17 c1 1e 38 33 4f c6 cb a9 33 f1 c5 5d 07 |.X...83O...3..].|
00000040 93 98 7f 3f c9 59 65 b1 a0 9d 54 81 fa be cb 5d |...?.Ye...T....]|
00000050 be e5 38 dd 1a a8 70 48 e1 f3 1e 29 7d 50 fa 1a |..8...pH...)}P..|
00000060 95 28 89 d8 76 03 58 29 cd 9e 74 38 4a b9 ec 04 |.(..v.X)..t8J...|
00000070 36 06 ba dd fb 78 d9 3a 94 18 52 ba e5 64 f5 b8 |6....x.:..R..d..|
00000080 3e 9d 86 b4 0a c0 91 36 a3 87 b4 7b 24 18 65 7a |>......6...{$.ez|
00000090 0c ad 41 fb 71 77 75 ce 84 77 5b 44 11 0d dc 55 |..A.qwu..w[D...U|
000000a0 0d 10 35 3e e6 20 67 42 3a e4 21 ec be b2 61 1e |..5>. gB:.!...a.|
000000b0 24 33 20 79 22 18 6a 06 49 57 c3 13 44 96 72 76 |$3 y".j.IW..D.rv|
000000c0 e6 00 fd 1a c6 cb c4 1d 98 2f cb 96 56 90 cc 13 |........./..V...|
000000d0 43 85 7a 0e 30 a8 71 59 2f 8f a9 db 91 9c cb 59 |C.z.0.qY/......Y|
000000e0 b3 16 1b 3b f6 9a 9c 8b 48 a4 ad 60 80 32 74 cd |...;....H..`.2t.|
000000f0 c5 ff 0f a5 1e 48 17 65 c5 97 73 b0 eb 73 46 6c |.....H.e..s..sFl|
00000100 56 ae 0e 6f 66 49 46 9f 39 6f 53 28 49 35 61 24 |V..ofIF.9oS(I5a$|
00000110 d6 4d 00 60 b3 fa 91 c5 6b 2f 1f 29 5f 16 e2 ae |.M.`....k/.)_...|
00000120 07 2b a5 b4 19 c5 b9 b0 3b ed 9e 60 56 22 da 8f |.+......;..`V"..|
00000130 df 22 dc e8 e6 c1 2e 09 a5 d3 9f 2a fe ab 94 6e |.".........*...n|
00000140 02 a3 a4 0a fa 1c 0a d9 fb b4 62 f4 74 58 95 d5 |..........b.tX..|
00000150 33 ee 31 51 |3.1Q|
>>> Flow 13 (client to server)
00000000 00 00 02 80 93 12 97 51 29 07 f8 48 52 c4 01 fb |.......Q)..HR...|
00000010 61 96 41 26 54 05 47 3d 2c c6 8b 8a 5f da 0b 47 |a.A&T.G=,..._..G|
00000020 0e ba 66 c3 69 cd 6e 8b 6b b7 81 6a 8f 4f 95 be |..f.i.n.k..j.O..|
00000030 5c 9f c7 78 54 e8 14 52 a0 cb 43 3a b0 97 75 1a |\..xT..R..C:..u.|
00000040 08 51 eb c0 47 b9 e5 19 aa 3f ef fc cb 5d 6f d4 |.Q..G....?...]o.|
00000050 54 2e 40 bd 02 3d 46 37 6b 11 04 f0 07 af cf b6 |T.@..=F7k.......|
00000060 ba 21 d0 bd ce 4f fd 8d 1d f0 5e ce c1 d2 65 7e |.!...O....^...e~|
00000070 3b 77 5c cb e9 cb 39 38 26 75 3f b8 24 53 58 96 |;w\...98&u?.$SX.|
00000080 3e 8e 2a 14 9b 48 9f 70 7f e6 85 33 9a 17 03 ae |>.*..H.p...3....|
00000090 10 81 d0 2d 37 fd 53 2a 3d 75 74 68 63 43 97 a0 |...-7.S*=uthcC..|
000000a0 e6 bb 5e 62 e1 86 aa 74 9c 26 25 b2 8f 2f 39 b4 |..^b...t.&%../9.|
000000b0 3a 76 bb 79 76 71 26 45 30 1b 96 1e a9 a3 32 90 |:v.yvq&E0.....2.|
000000c0 97 31 a3 93 90 d1 71 74 13 77 84 f2 a6 78 7a 3c |.1....qt.w...xz<|
000000d0 4e c6 10 41 43 9e 66 c5 27 5a 38 41 ff b4 ce 3d |N..AC.f.'Z8A...=|
000000e0 f8 0d 89 0e f1 3d bc 86 9a 1f aa b3 44 59 69 5e |.....=......DYi^|
000000f0 cb c4 66 6b 01 84 20 ab 07 64 ac e4 aa 9d 61 1a |..fk.. ..d....a.|
00000100 f9 3c ec 7e 7f 1a 16 7b c5 ca 8b f5 d0 74 5b 80 |.<.~...{.....t[.|
00000110 bc 94 f4 1c be 85 a4 1a ac 3b ed 7b e4 a1 6b 3f |.........;.{..k?|
00000120 80 50 75 41 c3 b5 d6 6d f2 35 26 b6 cf c6 5e 87 |.PuA...m.5&...^.|
00000130 b3 ae a6 6b 97 2b fa c9 dc ca b4 89 8e 0b 3a 09 |...k.+........:.|
00000140 7a 24 a7 2f f7 cf d6 69 b2 89 c1 de e2 97 5e 7b |z$./...i......^{|
00000150 53 30 bf b7 03 5e 0c ef 0c 9b fb c9 bb 4c 12 a0 |S0...^.......L..|
00000160 ad 6b 8f a0 10 f0 73 05 ea b8 8a 3f a0 58 eb 93 |.k....s....?.X..|
00000170 7b b4 4d 8e bd 36 ae 93 0c 2b 67 c6 a0 27 af f0 |{.M..6...+g..'..|
00000180 4e d5 be 66 ff 25 f1 58 87 1f 20 65 f0 41 98 e9 |N..f.%.X.. e.A..|
00000190 46 1e 1b 50 0d 25 70 dd 77 b0 ab 41 e0 54 32 e4 |F..P.%p.w..A.T2.|
000001a0 8e ed 30 d3 1c 99 3c 7d 68 10 6b 28 ed 1e a2 2d |..0...<}h.k(...-|
000001b0 76 34 54 d6 a1 ce 8e e0 ad b7 0f 9c 8e 0f 87 90 |v4T.............|
000001c0 fa d2 7b fc bc e3 fd 30 52 36 b9 87 f8 1e 4d 57 |..{....0R6....MW|
000001d0 c6 f8 74 0d bb d1 f5 a7 95 02 cb 4b 8e 33 6a 7c |..t........K.3j||
000001e0 6c 26 ce d2 cb 28 18 46 08 fe d6 bf 4c 3b 83 34 |l&...(.F....L;.4|
000001f0 98 7f 6d b7 0f f1 27 5b 54 dc 87 97 ee 3a 83 99 |..m...'[T....:..|
00000200 a4 bb 49 bd 7c a3 36 e7 3c f4 c0 8f bf 97 ed 59 |..I.|.6.<......Y|
00000210 be d2 24 1a 1b bf e7 25 4d 17 d6 b9 89 c5 46 e8 |..$....%M.....F.|
00000220 d2 69 5c 8b fa b4 dc b8 f8 3d da b9 b4 4d 54 11 |.i\......=...MT.|
00000230 b6 f2 bf 82 71 e9 87 f5 57 f2 d8 77 ca 9f 1e 4e |....q...W..w...N|
00000240 4f 85 39 70 d4 b8 4f 1b dd 05 63 0f a5 17 1e 4a |O.9p..O...c....J|
00000250 ce 82 41 0f 46 39 4d fe c8 0f 9a 5e 8b 9f cc e0 |..A.F9M....^....|
00000260 65 1f dd 79 79 d4 bb 66 4a 40 cc de cd f8 24 89 |e..yy..fJ@....$.|
00000270 36 f6 54 54 c0 07 ea ea 0d fb 28 f9 dd f5 1e 24 |6.TT......(....$|
00000280 67 21 f9 c9 9f 41 6d 3b c8 2d 48 e3 77 ff 5f ea |g!...Am;.-H.w._.|
00000290 b1 9c 79 73 |..ys|
>>> Flow 14 (server to client)
00000000 00 00 00 10 07 08 d7 f3 96 64 73 c5 a1 1d d5 56 |.........ds....V|
00000010 6a 4b 7a 2d 9d 07 c8 4a ba b0 35 f4 d8 2b fc 2a |jKz-...J..5..+.*|
00000020 49 ff cb a4 |I...|
+349
View File
@@ -0,0 +1,349 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 9c 05 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |........+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 45 64 69 66 66 69 65 |EPv..>...Ediffie|
00000020 2d 68 65 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 |-hellman-group16|
00000030 2d 73 68 61 35 31 32 2c 65 78 74 2d 69 6e 66 6f |-sha512,ext-info|
00000040 2d 63 2c 6b 65 78 2d 73 74 72 69 63 74 2d 63 2d |-c,kex-strict-c-|
00000050 76 30 30 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 00 |v00@openssh.com.|
00000060 00 00 57 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 |..Wecdsa-sha2-ni|
00000070 73 74 70 32 35 36 2c 65 63 64 73 61 2d 73 68 61 |stp256,ecdsa-sha|
00000080 32 2d 6e 69 73 74 70 33 38 34 2c 65 63 64 73 61 |2-nistp384,ecdsa|
00000090 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 31 2c 73 |-sha2-nistp521,s|
000000a0 73 68 2d 72 73 61 2c 73 73 68 2d 64 73 73 2c 73 |sh-rsa,ssh-dss,s|
000000b0 73 68 2d 65 64 32 35 35 31 39 00 00 00 6c 61 65 |sh-ed25519...lae|
000000c0 73 31 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 |s128-gcm@openssh|
000000d0 2e 63 6f 6d 2c 61 65 73 32 35 36 2d 67 63 6d 40 |.com,aes256-gcm@|
000000e0 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 63 68 61 63 |openssh.com,chac|
000000f0 68 61 32 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 |ha20-poly1305@op|
00000100 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 |enssh.com,aes128|
00000110 2d 63 74 72 2c 61 65 73 31 39 32 2d 63 74 72 2c |-ctr,aes192-ctr,|
00000120 61 65 73 32 35 36 2d 63 74 72 00 00 00 6c 61 65 |aes256-ctr...lae|
00000130 73 31 32 38 2d 67 63 6d 40 6f 70 65 6e 73 73 68 |s128-gcm@openssh|
00000140 2e 63 6f 6d 2c 61 65 73 32 35 36 2d 67 63 6d 40 |.com,aes256-gcm@|
00000150 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 63 68 61 63 |openssh.com,chac|
00000160 68 61 32 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 |ha20-poly1305@op|
00000170 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 |enssh.com,aes128|
00000180 2d 63 74 72 2c 61 65 73 31 39 32 2d 63 74 72 2c |-ctr,aes192-ctr,|
00000190 61 65 73 32 35 36 2d 63 74 72 00 00 00 6e 68 6d |aes256-ctr...nhm|
000001a0 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 6d 40 |ac-sha2-256-etm@|
000001b0 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
000001c0 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 6f 70 |-sha2-512-etm@op|
000001d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000001e0 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 |ha2-256,hmac-sha|
000001f0 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 2c |2-512,hmac-sha1,|
00000200 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 00 6e |hmac-sha1-96...n|
00000210 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2d 65 74 |hmac-sha2-256-et|
00000220 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d |m@openssh.com,hm|
00000230 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 74 6d 40 |ac-sha2-512-etm@|
00000240 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 |openssh.com,hmac|
00000250 2d 73 68 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 |-sha2-256,hmac-s|
00000260 68 61 32 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 |ha2-512,hmac-sha|
00000270 31 2c 68 6d 61 63 2d 73 68 61 31 2d 39 36 00 00 |1,hmac-sha1-96..|
00000280 00 04 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 00 |..none....none..|
00000290 00 00 00 00 00 00 00 00 00 00 00 d7 3b 80 93 f6 |............;...|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 d2 4a b6 5d 8b 7e d1 03 c4 f4 |.......J.].~....|
00000010 7a 17 56 11 92 67 00 00 01 7a 73 6e 74 72 75 70 |z.V..g...zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 02 0c 05 1e 00 00 02 01 00 8c 9c 9f c9 11 |................|
00000010 7f c3 d4 4e a0 8b 88 6d e1 d6 7b 17 05 e4 93 8f |...N...m..{.....|
00000020 2e 13 f1 b6 0b 30 1b cb f6 da d5 86 41 95 b2 8b |.....0......A...|
00000030 13 3b 7f fa 8b d3 bc 2e d7 e8 cb 4a 58 1b f3 e9 |.;.........JX...|
00000040 f5 b6 4d 3f e8 10 98 0c 38 27 cf 76 04 94 50 4a |..M?....8'.v..PJ|
00000050 59 c8 d0 1d 85 b1 b0 c0 30 73 33 d6 d9 95 b6 c3 |Y.......0s3.....|
00000060 26 dd 66 4e 58 af df b4 26 97 0f 70 87 e2 cf 47 |&.fNX...&..p...G|
00000070 eb 98 f5 15 6e 4b 66 b3 0e 3a e8 ac b5 11 91 77 |....nKf..:.....w|
00000080 b1 1a 0e d1 dc 3c a8 28 8a 28 81 62 f7 2c 3d 20 |.....<.(.(.b.,= |
00000090 c3 2d f1 c1 0c 58 a8 bd 85 88 f3 5b d5 5a 7b 03 |.-...X.....[.Z{.|
000000a0 92 f8 91 1f ab d9 ea e0 4c bd b6 5f e5 49 b1 ba |........L.._.I..|
000000b0 38 b5 da 9d d2 a0 9e a4 ca b4 0b d3 03 0f 0e 7d |8..............}|
000000c0 98 e0 22 c6 10 f5 da bf 5d 87 27 2d 26 2e 4f ab |..".....].'-&.O.|
000000d0 8e 2c ae e4 f0 93 1a 6e a9 e3 cc a0 07 39 1c 4d |.,.....n.....9.M|
000000e0 16 23 94 a0 ed b4 68 65 eb 82 0d 7d fc 2b 3a ec |.#....he...}.+:.|
000000f0 e7 40 9c 58 15 aa 46 25 20 1b 90 f0 b2 db ac fd |.@.X..F% .......|
00000100 be 48 94 9e c4 59 e9 83 26 21 aa 82 96 a0 71 45 |.H...Y..&!....qE|
00000110 2a f3 4b bd cf 67 ce d1 cc 1a 17 5f 2d ff dd 75 |*.K..g....._-..u|
00000120 c8 55 f5 82 93 43 95 09 03 db 6c 57 26 0b 1e 45 |.U...C....lW&..E|
00000130 df 1a 51 b1 c0 89 ad 40 af a3 ed b6 7b 13 0c 34 |..Q....@....{..4|
00000140 91 22 3b 25 8a cd 93 40 a7 6f 07 23 40 da 51 15 |.";%...@.o.#@.Q.|
00000150 b6 48 cd 0c 1e 67 c6 c5 e9 8c a8 27 fb da 8d c8 |.H...g.....'....|
00000160 de 4c 39 b7 51 ee b8 2b 6a dd b1 4b 97 a7 8f 0e |.L9.Q..+j..K....|
00000170 37 b8 f8 cc ee 29 72 b7 03 ea 02 4b c2 c7 c3 59 |7....)r....K...Y|
00000180 7f be 04 3b 44 3a d8 5c 23 fe 08 5d 06 40 5c 77 |...;D:.\#..].@\w|
00000190 8b 08 63 30 9a d8 68 9c 45 a8 aa 38 b0 e9 6c 8c |..c0..h.E..8..l.|
000001a0 fb a3 e1 0e 79 bc 59 53 2e 0d 28 08 5c 6d 34 cc |....y.YS..(.\m4.|
000001b0 89 b5 7b 6d 38 4e 2b 6b 48 53 fb 5d 5c 9f 3a ac |..{m8N+kHS.]\.:.|
000001c0 ab 6c 10 3f e4 e5 4a 1d 8c a1 ee e1 96 1d db 53 |.l.?..J........S|
000001d0 42 ee b5 be 68 dd b6 e5 b5 2a 3f 0f c6 63 f2 a3 |B...h....*?..c..|
000001e0 b0 60 b6 29 a1 94 d3 f2 b9 33 0c 85 4a e6 41 11 |.`.).....3..J.A.|
000001f0 ef d1 56 31 91 71 db 3d 1f 7b e3 16 99 e0 20 96 |..V1.q.=.{.... .|
00000200 bf e7 be e2 ac b2 34 d0 45 e8 6a 30 2e e0 97 f0 |......4.E.j0....|
>>> Flow 6 (server to client)
00000000 00 00 02 e4 09 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 02 01 00 f9 1e 24 e5 e3 f9 f2 37 c0 |.........$....7.|
00000080 75 e3 a9 45 07 66 4d d6 d1 23 4f 14 67 ff 77 93 |u..E.fM..#O.g.w.|
00000090 30 81 85 51 1f b5 31 d5 f3 73 1b 64 54 2d f2 45 |0..Q..1..s.dT-.E|
000000a0 be 82 6c 9b 43 01 5b 10 9c 78 19 61 92 ba c6 0d |..l.C.[..x.a....|
000000b0 3e d9 0b 8b ba 43 1b a0 93 1d 6f 06 b3 35 4a d1 |>....C....o..5J.|
000000c0 e3 13 6f 65 e1 2f 43 a5 0b 1e 48 03 01 c0 83 4f |..oe./C...H....O|
000000d0 d7 99 28 b9 3f c7 95 d5 eb d6 9b 73 3c e7 43 b6 |..(.?......s<.C.|
000000e0 9e fb 61 02 e6 45 83 b6 d7 4f 30 55 6d df ec 4e |..a..E...O0Um..N|
000000f0 d2 5e cd 2a 7b 8c 3c d7 27 a7 e0 b7 33 5b c5 27 |.^.*{.<.'...3[.'|
00000100 a6 13 fc 3f 58 cd 5c 26 82 bd 32 b8 00 ad cd f9 |...?X.\&..2.....|
00000110 46 88 28 64 f1 a5 6d 4c c0 22 d6 35 d6 10 ca df |F.(d..mL.".5....|
00000120 e9 10 b4 9d d4 04 22 05 9e b0 3e 39 ab 8e 10 4a |......"...>9...J|
00000130 a1 52 1c 63 4e fd 5a cf 11 ba 46 77 c2 72 46 57 |.R.cN.Z...Fw.rFW|
00000140 49 54 9f 56 7e cb c5 0a bd e8 98 b1 d5 d9 07 78 |IT.V~..........x|
00000150 84 fa 25 b8 37 72 32 13 68 b1 50 18 d1 0a 3d 96 |..%.7r2.h.P...=.|
00000160 52 11 2c 6d f0 60 a8 2e 16 33 1d 66 cf 58 03 1e |R.,m.`...3.f.X..|
00000170 e8 e5 57 af 23 a6 78 2e 06 a4 ee 7f 73 52 04 73 |..W.#.x.....sR.s|
00000180 67 9a 67 a5 ef 15 ba d6 61 d1 95 65 c0 22 59 8f |g.g.....a..e."Y.|
00000190 f2 ef cc ba 62 4f 75 14 a2 3d 1d 34 0d 06 c8 cb |....bOu..=.4....|
000001a0 dd ca a4 72 d4 b6 4f b4 36 ef c0 46 61 b3 3c 1f |...r..O.6..Fa.<.|
000001b0 04 a6 12 c5 41 88 9d b7 39 23 ca 92 ae 73 7f 36 |....A...9#...s.6|
000001c0 46 ab 3b cd d4 89 12 27 a1 36 1a 35 b3 28 98 3f |F.;....'.6.5.(.?|
000001d0 24 2a 21 5f 7c de 1c c8 68 65 7a 01 13 5b ce 85 |$*!_|...hez..[..|
000001e0 f9 c8 9f f8 0e 34 98 c7 64 63 8e 1f c0 72 5a 33 |.....4..dc...rZ3|
000001f0 43 17 9a 16 b1 78 2d 40 56 4b df 18 66 cf 18 a6 |C....x-@VK..f...|
00000200 05 80 e1 8a b6 1c 67 7e e5 aa 2c 6e 61 92 85 cd |......g~..,na...|
00000210 17 87 09 6a 5d e0 c9 22 ce be de 1c 0c 3d 98 9c |...j]..".....=..|
00000220 1c 55 6f 95 94 0a 75 d1 0a ec 7e 80 db 6d 68 2f |.Uo...u...~..mh/|
00000230 73 7d a5 ee b6 10 79 ed 09 04 33 fe 23 26 9b 4c |s}....y...3.#&.L|
00000240 ab e9 f0 8a 2f bb 7c 73 54 ac 4d e5 a2 1b 2c 22 |..../.|sT.M...,"|
00000250 ac c3 5e 43 28 0c 12 cc c7 9d 81 87 a7 4b 38 09 |..^C(........K8.|
00000260 e5 28 dc 0b 3c aa 4d 13 e3 e6 05 91 71 cd 9c 64 |.(..<.M.....q..d|
00000270 b8 aa d3 99 52 99 7c 00 00 00 64 00 00 00 13 65 |....R.|...d....e|
00000280 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 |cdsa-sha2-nistp2|
00000290 35 36 00 00 00 49 00 00 00 20 77 df ca 22 f4 a3 |56...I... w.."..|
000002a0 86 33 24 22 39 c5 e5 80 22 bf a2 10 ea fc 4a b7 |.3$"9...".....J.|
000002b0 6c 68 06 9b af ac c1 f1 22 11 00 00 00 21 00 d1 |lh......"....!..|
000002c0 e5 47 13 00 d4 23 ad 6c ee 24 c8 85 9c c4 d9 10 |.G...#.l.$......|
000002d0 0b 02 cf b3 b5 af 6d f7 26 f8 38 53 1f 16 18 00 |......m.&.8S....|
000002e0 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
000002f0 00 00 00 00 00 00 00 00 00 00 01 40 e8 ac 64 a0 |...........@..d.|
00000300 6f a8 9a 04 12 e7 4e 5f 10 d2 ca 05 24 f1 b6 ce |o.....N_....$...|
00000310 e4 41 a0 03 48 d4 aa da 23 85 47 b7 81 64 2a 7a |.A..H...#.G..d*z|
00000320 e1 ac 16 2a 7a d9 9d 4f d1 ad 81 37 be 44 8f 9e |...*z..O...7.D..|
00000330 2c 47 58 44 b2 1a 1d 7d 9f 97 e3 96 1e 22 27 fd |,GXD...}....."'.|
00000340 b2 88 8d 5b 28 7e 2d 76 79 21 2e 7a db ea 30 8e |...[(~-vy!.z..0.|
00000350 85 4b 35 bf bc f1 23 7d fe 1d 30 5d ee aa 98 8e |.K5...#}..0]....|
00000360 76 e3 a9 59 f5 ef 5e 68 38 c9 47 84 ae 95 8d 95 |v..Y..^h8.G.....|
00000370 5e eb 29 23 06 d6 dd 87 65 20 98 58 9e 6b 91 8c |^.)#....e .X.k..|
00000380 d6 13 32 8f 74 1f d6 f0 1f 8c fa b0 b2 bb dd 97 |..2.t...........|
00000390 76 37 53 c7 9e 30 af ef 11 f2 5b 66 44 b7 b4 78 |v7S..0....[fD..x|
000003a0 a1 bc ab ce 66 7f b8 09 fd 6f 21 83 96 39 f9 db |....f....o!..9..|
000003b0 45 fa 78 ed 4a ed ec 2d 4f cb 7d a9 22 2c 34 21 |E.x.J..-O.}.",4!|
000003c0 2d ce a0 03 6c 1a 16 f1 03 9d ea 56 72 de 76 0a |-...l......Vr.v.|
000003d0 b6 4d 5d 09 27 79 64 84 31 07 79 15 bd a9 39 b9 |.M].'yd.1.y...9.|
000003e0 91 ba ae 5c af 81 39 9d 2d e0 09 29 f4 b4 4a 83 |...\..9.-..)..J.|
000003f0 25 67 1a 9e d6 46 a5 c1 72 bd 38 d7 eb 98 93 47 |%g...F..r.8....G|
00000400 85 66 5e 27 18 79 c1 4c 1e 28 ec 38 db da 5d 1e |.f^'.y.L.(.8..].|
00000410 f3 a8 28 ec 04 d1 46 0e 70 02 3a dd 38 dc 84 c4 |..(...F.p.:.8...|
00000420 9a 4d 00 d4 5a 5e 43 18 85 51 28 47 40 b5 29 a2 |.M..Z^C..Q(G@.).|
00000430 16 fd 53 6b 1c a4 01 08 5d f5 a2 4c 3d 44 8a 28 |..Sk....]..L=D.(|
00000440 c9 37 5a 62 90 15 36 39 a6 8f ac ff |.7Zb..69....|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 51 26 6b e6 9d c7 16 fd ee f9 |......Q&k.......|
00000010 00 00 00 20 8d b3 7d d6 80 ca f1 af 43 14 33 54 |... ..}.....C.3T|
00000020 6d d1 9f 11 f2 0d 24 9f 35 5f 1f 8e a0 5f b7 cb |m.....$.5_..._..|
00000030 35 a5 7a 73 67 68 07 4f b5 4e f3 da 07 c8 b2 24 |5.zsgh.O.N.....$|
00000040 e0 06 47 c6 |..G.|
>>> Flow 8 (server to client)
00000000 00 00 00 20 14 7e 81 5a 85 57 4a 02 7a e1 0e 85 |... .~.Z.WJ.z...|
00000010 0f 80 d3 38 19 f8 4b df 99 d9 a2 27 b8 bc dc b8 |...8..K....'....|
00000020 ec 8e 4c 27 a2 ae 8d 05 01 40 dd 19 7f 0d 79 5a |..L'.....@....yZ|
00000030 30 08 72 20 |0.r |
>>> Flow 9 (client to server)
00000000 00 00 00 30 ac 45 c9 1a d5 3e fe 78 92 94 9c 43 |...0.E...>.x...C|
00000010 95 e1 bb 3c 72 fc bc 49 f7 53 84 82 cc 1b aa 8f |...<r..I.S......|
00000020 33 0c 1a 98 fc 80 68 a8 07 55 d8 63 7c 0c 17 08 |3.....h..U.c|...|
00000030 fc cf e2 91 38 19 46 27 cf fe 54 f2 a1 9a 16 44 |....8.F'..T....D|
00000040 76 10 bd b2 |v...|
>>> Flow 10 (server to client)
00000000 00 00 00 20 6a 8d fc 08 05 ea d4 ab 1d 78 9b f5 |... j........x..|
00000010 94 d2 78 7e bd 44 0d ec 51 20 d0 24 29 b0 91 9b |..x~.D..Q .$)...|
00000020 04 cd ba 5b e7 4e 40 a5 0f 3b ae 21 aa aa e1 bf |...[.N@..;.!....|
00000030 78 82 a7 c5 00 00 00 40 32 ec f5 d5 3d d3 0d 48 |x......@2...=..H|
00000040 13 6e ea be dc d5 65 fa 9d 86 67 9f 4f 9f 22 ad |.n....e...g.O.".|
00000050 94 0f cb d4 a1 20 e1 da d0 87 fb b7 78 8c f4 76 |..... ......x..v|
00000060 e0 5d bb 90 37 ed cc 51 fb b2 b1 60 4d 9e 38 06 |.]..7..Q...`M.8.|
00000070 72 21 4a 31 2d 5b 8f 7f 1d 7d 7d 6e 0a c2 0c f8 |r!J1-[...}}n....|
00000080 cb 97 e7 66 b2 74 18 75 |...f.t.u|
>>> Flow 11 (client to server)
00000000 00 00 01 60 21 51 bd 4f 01 fe 7e 6f c3 ee 8f e0 |...`!Q.O..~o....|
00000010 75 9b e1 07 e9 ed 0c 3f c3 18 3d 24 cb 67 c6 1e |u......?..=$.g..|
00000020 28 3f 9c 0e b3 48 e8 a1 2c 69 66 b7 20 ef 18 c3 |(?...H..,if. ...|
00000030 c4 f0 d6 5b 9b e1 f7 ed 7c c7 f6 39 3c 64 1d 73 |...[....|..9<d.s|
00000040 29 ff e8 69 68 73 b8 cf 33 14 5f 8e 68 53 1c a7 |)..ihs..3._.hS..|
00000050 c1 83 ad d2 9d ba 0b 5f 99 b9 bc 95 3c bc fa 62 |......._....<..b|
00000060 bc 3c 2c 79 2b 02 0c 62 b1 e6 ef a0 32 bb 98 cc |.<,y+..b....2...|
00000070 d3 ee 2c a0 5d 7e c2 cb 62 1b 23 5a ed 40 82 2c |..,.]~..b.#Z.@.,|
00000080 a5 08 bd 76 5b de 30 19 85 36 af c8 50 2d 86 8e |...v[.0..6..P-..|
00000090 e2 3f 20 b8 db f6 0c 9e fe fc ce 79 cd 9a 71 4e |.? ........y..qN|
000000a0 42 8f 6a 5e de 59 a8 f9 09 e4 d2 26 2b c4 a4 54 |B.j^.Y.....&+..T|
000000b0 fd 26 cb 19 fe 11 0a 27 28 ef 18 6b 28 e7 c1 6c |.&.....'(..k(..l|
000000c0 55 bf e6 bb 45 d3 ec 08 fc 57 e8 cf 10 0f e7 32 |U...E....W.....2|
000000d0 4a ec b1 e6 5a 7a 99 e2 9c 96 83 e9 11 6f b8 88 |J...Zz.......o..|
000000e0 ce ab af 2f b2 63 67 b3 9e a6 ca 56 c0 e4 b2 fe |.../.cg....V....|
000000f0 5b 10 38 3a 3b 02 c4 7e 1c 09 7d 64 c0 64 88 9e |[.8:;..~..}d.d..|
00000100 65 91 60 91 66 89 d7 fb d8 e0 eb cf 1b 68 e9 01 |e.`.f........h..|
00000110 f4 e8 90 e0 a2 34 c6 8b e6 e6 7a b9 b6 ad 29 3c |.....4....z...)<|
00000120 ed d4 51 ec 8f 30 42 87 dd 8f 37 07 2a ce d1 83 |..Q..0B...7.*...|
00000130 f5 75 70 54 89 09 02 24 56 8f 9d c7 8d 88 a8 58 |.upT...$V......X|
00000140 c8 6b 91 b1 0b 97 41 32 08 72 b5 bb e7 a2 b3 7b |.k....A2.r.....{|
00000150 b8 48 e9 15 88 36 eb 38 fe 6f 18 18 60 84 75 19 |.H...6.8.o..`.u.|
00000160 bc 65 b5 ad 49 38 69 2e 54 8d 92 81 74 fe 40 98 |.e..I8i.T...t.@.|
00000170 79 05 3d 3e |y.=>|
>>> Flow 12 (server to client)
00000000 00 00 01 40 27 8c ce 9f f2 8d 05 26 fb 68 14 c3 |...@'......&.h..|
00000010 eb 27 a0 81 77 ea 69 da 06 87 19 37 92 6e fa 5d |.'..w.i....7.n.]|
00000020 e9 25 67 d3 88 d6 ae e8 73 7f 06 51 53 30 d1 e2 |.%g.....s..QS0..|
00000030 05 32 ed 62 f4 cd 5e 23 7d a8 0d e7 15 43 61 4f |.2.b..^#}....CaO|
00000040 de ff a0 b4 39 3e 7c 82 65 98 5a c1 fb 25 63 6d |....9>|.e.Z..%cm|
00000050 45 65 56 15 46 2e 92 83 ca 61 b3 4e 9e e1 d2 33 |EeV.F....a.N...3|
00000060 93 a0 01 ec 8f 34 6e c3 e3 dc 5f 98 13 2b 26 a0 |.....4n..._..+&.|
00000070 e2 8f 85 4e f2 ee 67 e2 db bd ce 3d 3e b4 29 37 |...N..g....=>.)7|
00000080 24 3b 82 d6 5a d6 a4 3e 68 bf 7d 99 4a 79 73 29 |$;..Z..>h.}.Jys)|
00000090 05 df 3a 6b 91 c5 0c 36 6e 48 1d 94 33 aa 97 90 |..:k...6nH..3...|
000000a0 78 a0 2e 9e 3c 34 23 fb ec 16 97 72 2c 2a db 74 |x...<4#....r,*.t|
000000b0 70 72 17 48 5e 3c 50 23 53 1e a8 4a 67 c0 94 46 |pr.H^<P#S..Jg..F|
000000c0 b3 f2 58 8b 77 35 32 ee ff 96 3e 87 3f 68 bc f0 |..X.w52...>.?h..|
000000d0 70 2c 74 14 b7 db 43 51 f2 f3 af 8e 1e ca eb 74 |p,t...CQ.......t|
000000e0 d3 10 f5 08 bf 40 3a f3 4e 0c 69 b0 5a 88 d0 a0 |.....@:.N.i.Z...|
000000f0 c8 a7 61 16 7a 16 6f 11 2b b1 fa 89 fe 10 f6 d7 |..a.z.o.+.......|
00000100 c6 77 11 d2 f5 bc f1 9f aa 56 22 2b 08 42 14 2b |.w.......V"+.B.+|
00000110 f9 80 68 19 82 4c c2 42 e2 3f a8 30 04 18 e0 06 |..h..L.B.?.0....|
00000120 75 ca 0c 5f 0b d3 3a 9a 85 48 76 76 e6 ad 56 cb |u.._..:..Hvv..V.|
00000130 f3 d1 83 02 62 24 e2 a4 e6 0e aa 68 02 bd 38 e2 |....b$.....h..8.|
00000140 64 db 1e 86 f9 7a b1 54 21 c2 94 e9 b1 65 b7 ed |d....z.T!....e..|
00000150 36 01 ed 22 |6.."|
>>> Flow 13 (client to server)
00000000 00 00 02 80 88 c9 77 4f 84 f5 77 3e 81 77 5d 36 |......wO..w>.w]6|
00000010 43 24 da 9b 3a 2c a8 4d 71 ec 35 89 90 2a 9e d0 |C$..:,.Mq.5..*..|
00000020 85 8f 37 e0 df ab 08 42 2f 45 d3 a9 84 99 ca 37 |..7....B/E.....7|
00000030 81 0e 91 b5 ac bd 85 11 97 d9 2e 5c 9f 48 a2 3b |...........\.H.;|
00000040 14 c8 75 82 a9 df 8d 2c 68 4a 23 89 bc ae 9a 46 |..u....,hJ#....F|
00000050 1a 2a 88 aa 65 56 d4 af b3 98 b4 20 cc 80 a2 5e |.*..eV..... ...^|
00000060 83 3c 2f 2c cc 9b db 2c 41 78 ba 70 26 62 6a b5 |.</,...,Ax.p&bj.|
00000070 22 68 9c 30 66 10 f3 5f 84 76 24 47 06 2f df ac |"h.0f.._.v$G./..|
00000080 a9 30 d1 7a 94 a7 67 36 ce 1f 36 17 bb ca b8 47 |.0.z..g6..6....G|
00000090 78 2d b1 64 3d 68 53 59 ec 2d 9c be fa d8 ab 1d |x-.d=hSY.-......|
000000a0 3c 4f cb 1e 4e 31 d4 64 1d b8 eb bb a8 2f f0 f1 |<O..N1.d...../..|
000000b0 b7 23 a3 eb df d6 33 93 a3 c5 5e 03 9d eb 83 19 |.#....3...^.....|
000000c0 d8 df 11 43 0d d2 e7 b9 60 b7 2c 11 46 3e 77 11 |...C....`.,.F>w.|
000000d0 79 d7 25 66 93 fe 43 4a a8 bd 17 3d be 9f 3a 67 |y.%f..CJ...=..:g|
000000e0 67 c6 be e5 e8 2a 81 b5 19 de ca 7f d1 10 d6 20 |g....*......... |
000000f0 15 76 0b db 3b 66 8e 94 35 e5 d4 f3 9a 0e ab 67 |.v..;f..5......g|
00000100 6b d7 1d d8 d4 7b 86 d4 14 22 01 2e fb 85 24 1f |k....{..."....$.|
00000110 56 59 04 81 35 fe a9 7a a1 dc 08 87 a3 6e 88 81 |VY..5..z.....n..|
00000120 5a d3 75 55 90 8c fb f7 a0 be cf cf bd 0c f5 b1 |Z.uU............|
00000130 e9 17 82 d0 4d 19 82 25 e9 ad 36 5a 74 48 06 a7 |....M..%..6ZtH..|
00000140 99 16 3e ae 15 89 2d 90 27 f4 f4 08 e1 e1 25 6c |..>...-.'.....%l|
00000150 00 7e 83 1a f0 61 56 87 70 46 a2 ab 67 85 05 db |.~...aV.pF..g...|
00000160 70 ac 0e 17 cb 8c 67 2e f7 4f 18 7a 98 ab d2 10 |p.....g..O.z....|
00000170 39 bc e5 cc 77 e3 e3 92 bc 91 a4 70 31 9b 1e fa |9...w......p1...|
00000180 63 be dd e1 ae 51 88 83 92 3b 07 f7 c6 58 6f 43 |c....Q...;...XoC|
00000190 6b c6 e8 22 73 92 eb 98 fe 0a 2c c1 cf 68 e7 8f |k.."s.....,..h..|
000001a0 d0 c8 8d 0a c4 53 81 84 f5 38 87 08 eb f5 da 17 |.....S...8......|
000001b0 74 2d 33 3e 0f 00 ae cc af f6 84 5a 31 68 44 0c |t-3>.......Z1hD.|
000001c0 f7 da db 5c 2e 95 79 e3 20 9c 59 be 3a 07 d5 c1 |...\..y. .Y.:...|
000001d0 70 af 87 c6 05 e0 2d 0d cd a2 70 77 4b db e6 d0 |p.....-...pwK...|
000001e0 4a 18 3c 40 95 b5 09 5e 25 43 e4 db 25 44 a3 44 |J.<@...^%C..%D.D|
000001f0 2a 47 46 e2 57 9a ad 54 70 f5 8e 63 1c 10 ff 24 |*GF.W..Tp..c...$|
00000200 fc 37 30 72 42 5d 41 8f 72 0a 26 77 13 5e 6b 6e |.70rB]A.r.&w.^kn|
00000210 bd d7 54 d5 33 a4 1c 79 57 c4 a7 9a ec 93 fc 87 |..T.3..yW.......|
00000220 1e 62 b8 ae fd a0 2e 16 f6 63 6c dc 9e 2a 13 6c |.b.......cl..*.l|
00000230 ae 62 69 c0 69 b3 91 1c 54 7a ab 17 7d ef f5 af |.bi.i...Tz..}...|
00000240 b2 5b 4f c9 bf 08 c4 ee 6d 0a ec 96 93 54 51 4a |.[O.....m....TQJ|
00000250 e3 51 d7 52 5e eb 62 69 db 99 8b 77 2f e4 3b f7 |.Q.R^.bi...w/.;.|
00000260 c3 ee 42 90 24 b0 69 94 ef 74 38 4a 0f 36 e7 95 |..B.$.i..t8J.6..|
00000270 31 c7 74 e8 34 b5 d4 fc 87 3f 04 e7 7f 0b 28 c2 |1.t.4....?....(.|
00000280 22 2c 81 ec 1b 7e 94 4b ba 03 91 ad d8 6e 4c a5 |",...~.K.....nL.|
00000290 62 9e a2 78 |b..x|
>>> Flow 14 (server to client)
00000000 00 00 00 10 62 11 dc d1 aa fd 23 46 24 10 70 c9 |....b.....#F$.p.|
00000010 b2 d7 41 06 0f d9 21 5f e4 31 3f aa 4c ab 3f 03 |..A...!_.1?.L.?.|
00000020 8d 76 dc 61 |.v.a|
+431
View File
@@ -0,0 +1,431 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 9c 0d 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |........+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 3d 6d 6c 6b 65 6d 37 |EPv..>...=mlkem7|
00000020 36 38 78 32 35 35 31 39 2d 73 68 61 32 35 36 2c |68x25519-sha256,|
00000030 65 78 74 2d 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 |ext-info-c,kex-s|
00000040 74 72 69 63 74 2d 63 2d 76 30 30 40 6f 70 65 6e |trict-c-v00@open|
00000050 73 73 68 2e 63 6f 6d 00 00 00 57 65 63 64 73 61 |ssh.com...Wecdsa|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 |-sha2-nistp256,e|
00000070 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 33 |cdsa-sha2-nistp3|
00000080 38 34 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 |84,ecdsa-sha2-ni|
00000090 73 74 70 35 32 31 2c 73 73 68 2d 72 73 61 2c 73 |stp521,ssh-rsa,s|
000000a0 73 68 2d 64 73 73 2c 73 73 68 2d 65 64 32 35 35 |sh-dss,ssh-ed255|
000000b0 31 39 00 00 00 6c 61 65 73 31 32 38 2d 67 63 6d |19...laes128-gcm|
000000c0 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 |@openssh.com,aes|
000000d0 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e |256-gcm@openssh.|
000000e0 63 6f 6d 2c 63 68 61 63 68 61 32 30 2d 70 6f 6c |com,chacha20-pol|
000000f0 79 31 33 30 35 40 6f 70 65 6e 73 73 68 2e 63 6f |y1305@openssh.co|
00000100 6d 2c 61 65 73 31 32 38 2d 63 74 72 2c 61 65 73 |m,aes128-ctr,aes|
00000110 31 39 32 2d 63 74 72 2c 61 65 73 32 35 36 2d 63 |192-ctr,aes256-c|
00000120 74 72 00 00 00 6c 61 65 73 31 32 38 2d 67 63 6d |tr...laes128-gcm|
00000130 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 |@openssh.com,aes|
00000140 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 68 2e |256-gcm@openssh.|
00000150 63 6f 6d 2c 63 68 61 63 68 61 32 30 2d 70 6f 6c |com,chacha20-pol|
00000160 79 31 33 30 35 40 6f 70 65 6e 73 73 68 2e 63 6f |y1305@openssh.co|
00000170 6d 2c 61 65 73 31 32 38 2d 63 74 72 2c 61 65 73 |m,aes128-ctr,aes|
00000180 31 39 32 2d 63 74 72 2c 61 65 73 32 35 36 2d 63 |192-ctr,aes256-c|
00000190 74 72 00 00 00 6e 68 6d 61 63 2d 73 68 61 32 2d |tr...nhmac-sha2-|
000001a0 32 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e |256-etm@openssh.|
000001b0 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 |com,hmac-sha2-51|
000001c0 32 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f |2-etm@openssh.co|
000001d0 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
000001e0 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
000001f0 61 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 68 61 |ac-sha1,hmac-sha|
00000200 31 2d 39 36 00 00 00 6e 68 6d 61 63 2d 73 68 61 |1-96...nhmac-sha|
00000210 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-256-etm@openss|
00000220 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d |h.com,hmac-sha2-|
00000230 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e |512-etm@openssh.|
00000240 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 |com,hmac-sha2-25|
00000250 36 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c |6,hmac-sha2-512,|
00000260 68 6d 61 63 2d 73 68 61 31 2c 68 6d 61 63 2d 73 |hmac-sha1,hmac-s|
00000270 68 61 31 2d 39 36 00 00 00 04 6e 6f 6e 65 00 00 |ha1-96....none..|
00000280 00 04 6e 6f 6e 65 00 00 00 00 00 00 00 00 00 00 |..none..........|
00000290 00 00 00 d7 3b 80 93 f6 ef bc 88 eb 1a 6e ac fa |....;........n..|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 13 87 be 98 05 82 0f cd db cd |................|
00000010 35 d2 89 cd 67 3f 00 00 01 7a 73 6e 74 72 75 70 |5...g?...zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 04 cc 06 1e 00 00 04 c0 28 78 86 0d a4 88 |..........(x....|
00000010 c0 a9 3d 09 28 09 86 c8 9f cb 26 34 d4 cb 73 68 |..=.(.....&4..sh|
00000020 11 01 d7 d3 2e 46 7b 3c c6 39 c6 2c a6 7c ad d5 |.....F{<.9.,.|..|
00000030 64 81 c5 1b 56 fc 75 2d 71 42 d6 d3 72 2d 12 7f |d...V.u-qB..r-..|
00000040 25 71 be 48 da 71 6a 82 17 f6 c4 97 e2 bc 91 50 |%q.H.qj........P|
00000050 78 73 b9 5b 4f 73 06 51 bc 24 02 07 ca 6a c2 f7 |xs.[Os.Q.$...j..|
00000060 4a 8b 02 bf df 62 99 0c 1a c2 f0 63 62 94 90 9b |J....b.....cb...|
00000070 3e 63 72 30 61 4c 43 40 27 e6 d2 74 f7 d3 8a 74 |>cr0aLC@'..t...t|
00000080 41 40 ef 67 50 84 06 03 1b 4c 4c a2 64 17 c2 4b |A@.gP....LL.d..K|
00000090 21 53 f4 69 67 50 8d 7c 3a a8 a3 29 27 d8 57 59 |!S.igP.|:..)'.WY|
000000a0 d9 83 c8 15 82 2d 35 b0 51 d7 65 82 3b d4 78 06 |.....-5.Q.e.;.x.|
000000b0 71 70 95 1b ab e3 74 4a 87 2c 51 b3 b8 ae ea 7c |qp....tJ.,Q....||
000000c0 c9 1a e4 79 2c e3 a2 6b 91 4c b4 14 cf 49 69 90 |...y,..k.L...Ii.|
000000d0 97 60 33 5d e7 28 ca 3a 68 97 9c a5 05 93 43 5e |.`3].(.:h.....C^|
000000e0 0c 05 15 c9 44 2e 25 c4 17 72 04 d3 e6 5c 97 10 |....D.%..r...\..|
000000f0 5a 28 b1 c9 e1 c8 ce 6b b7 4d 28 45 37 f8 35 c8 |Z(.....k.M(E7.5.|
00000100 04 3c cb 66 d1 0a 0f 16 bd 21 7c 42 f5 08 08 7a |.<.f.....!|B...z|
00000110 17 90 1f d8 5e eb 00 a5 8f 21 3e 96 30 65 8c 76 |....^....!>.0e.v|
00000120 40 a2 90 84 06 e9 63 2c 24 74 1c 93 4d 93 11 51 |@.....c,$t..M..Q|
00000130 ff 30 20 41 73 7f 96 94 92 e5 e5 3c 50 31 64 1f |.0 As......<P1d.|
00000140 29 10 53 eb 31 a3 d3 66 ca 3a 00 80 d0 43 b2 f0 |).S.1..f.:...C..|
00000150 c6 a8 16 95 0f e9 3c 42 31 2e 22 d7 9d 3d 4b 61 |......<B1."..=Ka|
00000160 00 4d 9e 44 fc 8b 38 44 03 a0 c0 c0 66 80 54 75 |.M.D..8D....f.Tu|
00000170 a6 96 4d 09 cf ed a5 11 cc fb 0e 22 0c 7f 82 a6 |..M........"....|
00000180 27 6d f1 87 21 b0 13 88 bb b0 56 6c 87 07 76 a1 |'m..!.....Vl..v.|
00000190 09 a9 2d 49 73 8d 0b 02 59 32 29 6c 34 4c 4b 46 |..-Is...Y2)l4LKF|
000001a0 93 4a 2f a6 8a 59 20 23 1d a7 71 25 bc c2 ff 0a |.J/..Y #..q%....|
000001b0 4c c7 c3 72 2b 3c 31 13 44 0b 8d c9 bf 24 f8 b0 |L..r+<1.D....$..|
000001c0 ae 07 cd 93 d1 25 af e2 ce 05 31 2c df f8 b6 3a |.....%....1,...:|
000001d0 78 1d 68 e7 97 d9 ba 81 dc 33 08 eb a4 0a 69 d5 |x.h......3....i.|
000001e0 8e 21 5c 2f c4 a0 67 78 06 10 ce 05 80 28 74 6e |.!\/..gx.....(tn|
000001f0 7c 4a 00 72 38 57 97 6b c7 07 d0 6f a0 06 85 e1 ||J.r8W.k...o....|
00000200 b9 00 6b 14 31 f8 8c cd bf 54 5c 63 d9 74 16 85 |..k.1....T\c.t..|
00000210 54 b6 02 c2 29 4a ac eb 35 17 a3 10 1d 3c 95 36 |T...)J..5....<.6|
00000220 f7 f8 cc 48 b5 49 7e 51 46 73 a9 c8 01 4b 5d 87 |...H.I~QFs...K].|
00000230 8b 9f 19 88 36 2b 29 cd 07 2a c2 aa a7 82 58 d1 |....6+)..*....X.|
00000240 9f bc c0 3e ae 51 3b 58 a1 48 ae 59 72 64 f4 b5 |...>.Q;X.H.Yrd..|
00000250 8d a2 7f af 5b 2b 86 69 09 69 12 8b 8e c6 2d e7 |....[+.i.i....-.|
00000260 09 24 48 22 6c 14 96 c7 70 e7 20 c6 26 5c 69 ba |.$H"l...p. .&\i.|
00000270 cb 63 93 6c f6 12 c4 c6 24 42 00 f2 1a bb db 1c |.c.l....$B......|
00000280 3e b7 b2 80 b0 60 25 80 cc 8f 56 63 be 82 40 3c |>....`%...Vc..@<|
00000290 00 c4 b1 90 05 49 91 72 b2 a1 68 59 17 62 2d 68 |.....I.r..hY.b-h|
000002a0 3e 09 6c bc 1e 46 6c c8 5a 57 96 35 1b 82 38 2d |>.l..Fl.ZW.5..8-|
000002b0 42 8a 5c 5d c4 b0 0a 20 51 8a ca 6e 90 89 02 28 |B.\]... Q..n...(|
000002c0 68 34 b7 c6 2e 68 5c 3a e1 48 34 bd ba ab 96 11 |h4...h\:.H4.....|
000002d0 98 f0 58 09 d4 a2 7f ee 59 36 a5 20 57 37 80 a1 |..X.....Y6. W7..|
000002e0 02 4c 96 0e b2 9b 80 c4 7f 1e a6 8e 66 b6 8d 86 |.L..........f...|
000002f0 e9 3d 65 55 48 62 e1 60 62 97 84 03 85 54 b1 e6 |.=eUHb.`b....T..|
00000300 08 75 ea cb 7d 93 5c 3f 48 ba ec c1 52 36 42 ce |.u..}.\?H...R6B.|
00000310 50 74 68 0e b8 43 c9 90 a7 7a e7 28 fc 30 52 74 |Pth..C...z.(.0Rt|
00000320 48 9c 5a 61 5a 9e 62 64 e9 27 27 60 01 04 77 51 |H.ZaZ.bd.''`..wQ|
00000330 11 b9 93 ab c4 e3 85 b8 1a 1b 67 6c 15 6f ba 85 |..........gl.o..|
00000340 39 44 15 26 92 90 bb e0 8a 85 58 3a 44 40 40 83 |9D.&......X:D@@.|
00000350 68 79 65 b7 b0 30 32 c3 cf 3c 52 e1 e0 86 e5 41 |hye..02..<R....A|
00000360 ac 26 d2 2e 72 d8 a6 00 95 a3 0c 43 b1 f0 3a 11 |.&..r......C..:.|
00000370 1b bc 17 81 19 7d a1 d4 08 b4 47 b7 59 25 09 cd |.....}....G.Y%..|
00000380 cc 1d 6d c9 43 b3 45 50 64 7a 5c 63 48 7d 31 2c |..m.C.EPdz\cH}1,|
00000390 3d 74 e7 4a 26 8c 69 fb a1 7c 23 f9 45 32 8a 90 |=t.J&.i..|#.E2..|
000003a0 77 91 4c 8b 60 7f 33 b6 af cf 74 43 43 b6 b7 49 |w.L.`.3...tCC..I|
000003b0 66 9e a0 e0 ac 35 e6 46 da 8c b6 91 fb 39 bd fa |f....5.F.....9..|
000003c0 cc 9a e6 05 f4 1c bf 82 f1 52 87 07 c3 6f 0c 70 |.........R...o.p|
000003d0 1b 1b 95 45 07 45 e8 e4 94 50 66 ce 4a 49 71 28 |...E.E...Pf.JIq(|
000003e0 b6 54 92 da 32 fa 63 61 c9 f1 6f dc 32 83 15 bb |.T..2.ca..o.2...|
000003f0 67 b8 8b 4b a3 73 a2 e0 24 08 14 ec 53 14 d4 2e |g..K.s..$...S...|
00000400 e0 ea 78 ec 89 0e fd 68 9c f4 90 61 9f ea 78 3d |..x....h...a..x=|
00000410 37 32 77 36 16 70 09 a7 0d 43 6f 76 72 9c c2 88 |72w6.p...Covr...|
00000420 35 f7 95 65 5c 49 0b e5 38 b5 d2 96 0f 7f a8 50 |5..e\I..8......P|
00000430 fd 88 68 ca e0 af 1d c3 b6 c0 74 2f 3a 86 4c ca |..h.......t/:.L.|
00000440 7a 5f a9 30 36 1e 08 7e 37 f5 7a 6a 98 32 12 30 |z_.06..~7.zj.2.0|
00000450 36 a1 36 8c 6c 23 59 9f 56 77 f8 49 27 ed 07 7f |6.6.l#Y.Vw.I'...|
00000460 4d 5b af f4 f2 11 8e 97 04 7d 63 a1 af d8 0c ca |M[.......}c.....|
00000470 8a b5 46 a7 9a 14 ca bc 59 d9 52 9f 87 45 a3 bc |..F.....Y.R..E..|
00000480 2f 20 85 89 54 46 01 b0 ec bb 18 c1 1c bb 96 37 |/ ..TF.........7|
00000490 b5 fc 54 0a 20 ac 9a 61 84 26 a4 ea 2b 3c b1 cb |..T. ..a.&..+<..|
000004a0 87 82 6d 13 2e e8 99 d0 f3 55 7e 4a 3b cc bf 9a |..m......U~J;...|
000004b0 2e 84 5f cb bb 32 fa b6 67 2f 28 60 b3 d3 48 e8 |.._..2..g/(`..H.|
000004c0 f9 c9 38 6f ae b4 a3 c4 5b 73 51 20 ea 17 cd a7 |..8o....[sQ ....|
>>> Flow 6 (server to client)
00000000 00 00 05 44 09 1f 00 00 00 68 00 00 00 13 65 63 |...D.....h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 04 60 4f 59 50 a8 8c d3 ab 46 64 b7 |.....`OYP....Fd.|
00000080 23 0e b0 d0 67 f1 41 e4 41 8d 6a cf 00 b6 87 7c |#...g.A.A.j....||
00000090 f2 e2 c9 5d 3a f7 ee 69 25 f3 b5 e5 44 ea e6 98 |...]:..i%...D...|
000000a0 39 57 09 1b ee 5b 43 27 6d d8 13 3d 2d 54 10 20 |9W...[C'm..=-T. |
000000b0 d2 27 d9 43 08 4f 9a 57 46 27 31 8f 76 5e ba 40 |.'.C.O.WF'1.v^.@|
000000c0 de f2 83 45 d3 c4 6c 75 cf 6b 0d 8e 79 66 6c a6 |...E..lu.k..yfl.|
000000d0 78 55 e4 f8 75 33 f1 d2 12 59 83 9c bb 97 42 16 |xU..u3...Y....B.|
000000e0 58 61 83 7b 25 30 c9 05 b1 75 f5 7b 84 03 e2 fc |Xa.{%0...u.{....|
000000f0 61 6c 69 8d 16 65 14 9b 4b a0 9c 52 9e 6c 9e 09 |ali..e..K..R.l..|
00000100 2f b7 ac a9 30 2f 10 00 52 f2 e0 a8 71 5a 7a 0b |/...0/..R...qZz.|
00000110 6d e2 1b 42 81 e4 99 43 a2 64 e1 4d 4a 9e dc 2f |m..B...C.d.MJ../|
00000120 f3 1f ab bd b2 f8 21 fd df 74 f7 f4 9d 9a 4c d6 |......!..t....L.|
00000130 5e b7 d3 b3 77 0e ba d2 c5 87 2b 29 ee 1b 6d b2 |^...w.....+)..m.|
00000140 e2 e0 f8 ee 63 39 57 4f db ea ed ea d9 fb de 3a |....c9WO.......:|
00000150 6c 16 67 46 ff 66 c7 fb c6 1c 2b 11 71 d1 73 75 |l.gF.f....+.q.su|
00000160 1d 96 27 0f a3 88 d9 42 af 7d eb 8b ed 3b cb f5 |..'....B.}...;..|
00000170 ad 57 e6 cd ae ee de 4f 2b a6 28 f6 0b ae 4f 82 |.W.....O+.(...O.|
00000180 e3 37 5a e1 c9 1c cd 63 d3 a2 b1 60 29 39 07 0e |.7Z....c...`)9..|
00000190 b6 6e c1 d3 d2 3e 2d cd 33 64 18 bf c0 3b ca cf |.n...>-.3d...;..|
000001a0 22 5f f5 d8 f3 eb 01 d9 93 e8 19 29 78 8a 06 61 |"_.........)x..a|
000001b0 33 02 e5 8d b9 fc b3 e9 f8 e1 fd 65 d0 ac df 78 |3..........e...x|
000001c0 83 e1 9e 4f d8 24 b4 1e a2 04 35 d0 8e 98 8d 28 |...O.$....5....(|
000001d0 62 d9 4a f5 07 c7 25 44 1e ab c3 7c 17 f9 5f fd |b.J...%D...|.._.|
000001e0 4c 12 a0 c7 4d f3 05 ed 79 aa de e9 99 82 30 a2 |L...M...y.....0.|
000001f0 57 f1 a4 da 7d 37 0d 26 39 15 25 41 93 be 9b a6 |W...}7.&9.%A....|
00000200 a5 4c 01 7b 82 18 27 c9 96 cb d8 f5 ce 42 04 9c |.L.{..'......B..|
00000210 83 4f ea 4b 64 00 12 ec 11 86 d7 92 35 e6 c8 e9 |.O.Kd.......5...|
00000220 2c ee f0 ef ed 60 6a dc 80 ec 75 00 1c fb f9 7b |,....`j...u....{|
00000230 3e 32 20 aa 6b 3c 62 69 d0 84 17 c5 77 bc 49 83 |>2 .k<bi....w.I.|
00000240 78 c8 17 ab 96 d0 f7 93 b1 73 27 bc c4 01 21 c3 |x........s'...!.|
00000250 2e 1b 59 cb a3 c0 7b d2 96 aa 29 17 6a 7f 8e 21 |..Y...{...).j..!|
00000260 42 7e ba ec d4 99 13 f2 86 1f 0c d6 32 1f c7 93 |B~..........2...|
00000270 7c 26 7e b8 1e 35 99 6d d5 d6 40 cf 1a 91 68 4e ||&~..5.m..@...hN|
00000280 13 69 49 e3 79 2b 08 3b af d3 44 9e 5b 17 2f fd |.iI.y+.;..D.[./.|
00000290 59 68 3b 09 64 1f 55 f8 59 9f 71 59 76 3f 46 9d |Yh;.d.U.Y.qYv?F.|
000002a0 2a aa bb d2 9b 9d 05 89 08 14 9c 35 ca fc 6b 5e |*..........5..k^|
000002b0 f8 59 4c e2 2e 75 ec bf dc 00 4a f4 9a a3 c8 e5 |.YL..u....J.....|
000002c0 4f 59 80 37 2b 0b dc c6 cd c2 37 2c 87 ef 18 1d |OY.7+.....7,....|
000002d0 8d 2d 37 f2 62 9c 16 da 2d 16 af f2 b8 8b 3d af |.-7.b...-.....=.|
000002e0 47 0f 92 6c 0b f2 d3 b2 5d 2c d9 d0 35 30 0a ed |G..l....],..50..|
000002f0 2e 6f bd be 1f 18 c7 ca 9a 66 df bf 45 3c b6 50 |.o.......f..E<.P|
00000300 a8 59 52 42 e3 04 08 d6 18 62 54 72 6c 99 7b 62 |.YRB.....bTrl.{b|
00000310 60 07 aa eb fe 05 41 a2 c5 57 93 47 29 63 ca ad |`.....A..W.G)c..|
00000320 00 fb a3 78 aa d5 96 d8 fc ab c6 f7 53 43 bc c4 |...x........SC..|
00000330 7c c3 47 ce b0 61 11 8e 97 7e 47 b4 f0 f5 be 3a ||.G..a...~G....:|
00000340 46 99 5e 21 e7 5b e8 5b ec ca 8a 57 9d 64 81 3a |F.^!.[.[...W.d.:|
00000350 f0 ef f7 b3 f2 43 2d 43 b8 0e 03 8d fa 4b b4 94 |.....C-C.....K..|
00000360 1f 84 62 96 f5 80 07 53 35 f8 f7 ba 33 7c 7a ff |..b....S5...3|z.|
00000370 26 47 43 92 fe aa 3f 75 7c 24 0a 8d 67 76 51 12 |&GC...?u|$..gvQ.|
00000380 ee 82 25 4e ba 9a a0 88 c0 29 ed a8 2e 9e bd 0a |..%N.....)......|
00000390 9f ba 09 37 bb fb 8d 68 ca 9c c5 95 04 ac 41 d6 |...7...h......A.|
000003a0 3f f0 ae ce ab e4 7c 79 42 97 a2 34 13 d7 8a 31 |?.....|yB..4...1|
000003b0 b5 99 04 8f 21 60 96 8c a0 68 de 7e 6e 2d 4a f1 |....!`...h.~n-J.|
000003c0 52 d1 f1 71 0d ce d4 c7 5c 82 1f f3 f0 40 7b 5f |R..q....\....@{_|
000003d0 fb f2 4d d0 c4 75 77 e4 4e 65 27 2b 47 43 41 a6 |..M..uw.Ne'+GCA.|
000003e0 fd 8e 47 89 96 a8 ee 52 ff 93 57 3a 84 ec 1e 74 |..G....R..W:...t|
000003f0 86 cf ed 7c f2 d2 85 0d d4 5a d4 80 f5 d8 79 bc |...|.....Z....y.|
00000400 20 1f 19 a9 c8 7c ad 7a 21 3d 68 ee 47 3b a6 7a | ....|.z!=h.G;.z|
00000410 40 19 19 6d c7 94 7f 6f d6 9d d7 ae 2c a5 3e 49 |@..m...o....,.>I|
00000420 aa 11 c2 53 41 37 c4 48 ad ba 7f 59 59 49 ab 59 |...SA7.H...YYI.Y|
00000430 7c f0 04 32 fa 07 64 23 86 ab d9 5c e0 ef 91 a3 ||..2..d#...\....|
00000440 b0 8c 86 20 dd 3c 4b 26 98 dc 28 3c c6 7c 11 cf |... .<K&..(<.|..|
00000450 48 50 62 d3 1b bf c9 07 59 51 b5 d4 ed 97 31 d5 |HPb.....YQ....1.|
00000460 fe 91 34 7f 6c 0e 2e 09 78 6d db cb f9 76 9a 5e |..4.l...xm...v.^|
00000470 02 b9 5b 36 87 73 e9 b1 14 2f 4b 8c 9a 69 4d 4d |..[6.s.../K..iMM|
00000480 49 9d f5 1f 96 9c 5b da 05 2a 0c 7c 42 bb cd 42 |I.....[..*.|B..B|
00000490 21 87 9f 46 67 49 ee 29 af 87 ce 6f bd c2 d9 66 |!..FgI.)...o...f|
000004a0 9c 9c 35 2e d5 b3 3c 72 00 82 10 8c 9d 15 7e d8 |..5...<r......~.|
000004b0 15 3f da c5 6c 48 91 75 d4 88 c0 db 93 70 e7 10 |.?..lH.u.....p..|
000004c0 87 b5 7b 8d 1c fa 27 c2 ae c8 7e bb 98 70 03 f0 |..{...'...~..p..|
000004d0 b0 bf 79 0c 5d 06 00 00 00 65 00 00 00 13 65 63 |..y.]....e....ec|
000004e0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000004f0 36 00 00 00 4a 00 00 00 21 00 e3 35 f1 ed 9c b2 |6...J...!..5....|
00000500 b1 f7 24 66 17 4d 77 c6 68 e5 bb 2d 70 c7 22 16 |..$f.Mw.h..-p.".|
00000510 f3 e8 ed f0 b2 5c 6c af c2 c4 00 00 00 21 00 ec |.....\l......!..|
00000520 25 80 32 13 28 5f ce ec b9 db ed d7 19 e2 6c 2d |%.2.(_........l-|
00000530 f4 2a e3 00 f3 f1 ca 33 87 e7 f2 42 27 c6 f6 00 |.*.....3...B'...|
00000540 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000550 00 00 00 00 00 00 00 00 00 00 01 40 22 bd b5 b0 |...........@"...|
00000560 9b ec eb 63 0b 8d e6 87 82 49 4e 8e 70 83 8c 35 |...c.....IN.p..5|
00000570 bc de 8c 43 0f 63 5a 94 cc 3e b5 41 a2 4e ae 9c |...C.cZ..>.A.N..|
00000580 f3 72 0e 62 ac 2d d2 b1 0b 77 7f 6a 1b da ba af |.r.b.-...w.j....|
00000590 eb d0 0c a6 0d fa 7c ec 3a cf 25 80 82 6a af 3c |......|.:.%..j.<|
000005a0 d8 f4 dc 0b 5a dd af 30 2c 6c f3 a3 50 48 15 0c |....Z..0,l..PH..|
000005b0 50 6f 0e 66 ca a4 af f8 48 58 28 ae 73 af 29 e1 |Po.f....HX(.s.).|
000005c0 50 60 91 41 29 d6 44 28 3b 87 5b 3f 75 5f 2d 3e |P`.A).D(;.[?u_->|
000005d0 b5 ad 02 cd 99 92 32 ae ec d1 2f 38 88 d9 ad 7c |......2.../8...||
000005e0 1d d5 a0 36 b2 82 b4 f0 88 cd 61 7e 3b 3a c8 42 |...6......a~;:.B|
000005f0 58 34 8e 2c 10 29 2a ac cf 7a 2c 21 76 43 ff 8a |X4.,.)*..z,!vC..|
00000600 8c f6 d6 4b 47 9f ee 57 19 7d cb 63 c4 f9 bb 16 |...KG..W.}.c....|
00000610 a9 47 02 e2 93 94 40 0e 37 f9 82 7f 9d 61 d4 9a |.G....@.7....a..|
00000620 29 fb e5 d5 da 8f 32 1b 89 c2 15 58 84 58 0d 17 |).....2....X.X..|
00000630 e6 6d e1 39 7b 71 d7 4d a5 d7 c7 17 2e 2f e3 07 |.m.9{q.M...../..|
00000640 c9 4f 34 ec 6d 0a 05 81 f8 da bf 2f fb de 90 1d |.O4.m....../....|
00000650 4e 4c 97 6d a6 52 8f 4a 37 63 2e 48 5e 63 7f f5 |NL.m.R.J7c.H^c..|
00000660 68 5b 43 b1 99 a1 51 2d b4 66 a8 d8 47 0e 42 27 |h[C...Q-.f..G.B'|
00000670 d4 70 fa 10 1e f2 6d 13 68 86 0c a0 00 07 0a 76 |.p....m.h......v|
00000680 f3 b9 d8 1e 28 dc d9 76 4a 9d cd b7 99 26 25 62 |....(..vJ....&%b|
00000690 9f 17 43 31 be 91 68 a1 97 03 42 8a db 6b 4f 9a |..C1..h...B..kO.|
000006a0 ed 7e e6 3e 62 11 8e 28 47 e8 49 fe |.~.>b..(G.I.|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 cf ad 76 5f 56 23 47 4d 36 8c |........v_V#GM6.|
00000010 00 00 00 20 47 e3 ba 49 21 aa d2 2e 87 78 d6 95 |... G..I!....x..|
00000020 a7 09 49 c5 fd 45 c1 eb 65 52 ec aa ea 71 c0 a6 |..I..E..eR...q..|
00000030 0e 53 b7 05 e9 96 a7 fd cd cd 84 aa 6f 9c ba d4 |.S..........o...|
00000040 02 8a 20 01 |.. .|
>>> Flow 8 (server to client)
00000000 00 00 00 20 bc a6 26 a0 e1 ce 32 4f a3 26 19 11 |... ..&...2O.&..|
00000010 d4 d5 12 e5 3e 85 08 78 52 81 92 88 6b 83 32 b9 |....>..xR...k.2.|
00000020 3f 76 04 7b 44 c8 da dd 06 4e fc 31 3b 20 4f 15 |?v.{D....N.1; O.|
00000030 01 f0 a4 ed |....|
>>> Flow 9 (client to server)
00000000 00 00 00 30 a9 34 0c fe c5 8b 78 21 68 b5 2f 8b |...0.4....x!h./.|
00000010 7b 69 9c 4e a2 6a dd d0 50 36 d6 01 f9 f4 79 df |{i.N.j..P6....y.|
00000020 e7 25 97 57 09 ca 3b 85 ef fb 6b 90 51 03 ae a4 |.%.W..;...k.Q...|
00000030 f1 65 d0 84 ba 1f 3e c0 02 7f ad d7 38 dc 71 9b |.e....>.....8.q.|
00000040 28 8c 47 db |(.G.|
>>> Flow 10 (server to client)
00000000 00 00 00 20 bb 18 ce a6 b6 00 6d db e7 00 02 3f |... ......m....?|
00000010 5a f5 42 a4 a9 88 15 5f 25 c0 1d fa 0c 35 1b 26 |Z.B...._%....5.&|
00000020 df b0 f5 9c 9b 8b 2f 6f 87 d4 2e 5e e9 a1 07 c8 |....../o...^....|
00000030 83 2e 4a 09 00 00 00 40 30 11 f9 77 34 a1 18 79 |..J....@0..w4..y|
00000040 91 ef 8b 32 f1 e1 8f 41 3c 3a 81 e4 9f 84 c3 c6 |...2...A<:......|
00000050 91 bd a4 74 04 2a dd 1f fb c7 23 30 c9 8a 92 67 |...t.*....#0...g|
00000060 95 40 de 26 08 f6 74 79 52 ad 01 a3 dd d1 97 0f |.@.&..tyR.......|
00000070 9e 84 31 6b 04 f4 ca ff 0a 7b 4f d2 f1 5d a6 dd |..1k.....{O..]..|
00000080 18 f9 39 79 eb 7c 94 19 |..9y.|..|
>>> Flow 11 (client to server)
00000000 00 00 01 60 46 a4 b1 d7 37 fa 1a ed 9c d8 2d 45 |...`F...7.....-E|
00000010 14 db 96 23 10 55 6b f4 b6 bc 41 a3 ae 5e 63 3a |...#.Uk...A..^c:|
00000020 82 a1 bf 7a bb 30 4f 84 4e 5c c6 d2 9e d6 76 3e |...z.0O.N\....v>|
00000030 96 15 82 92 6d 45 1f 08 26 19 9a a0 4d de ac 12 |....mE..&...M...|
00000040 2f 0e f2 7e 38 94 da 1a 82 e4 31 f6 d5 70 1c c5 |/..~8.....1..p..|
00000050 7f 0f f5 af ac b0 a0 86 94 27 ee 9f 68 03 0c a8 |.........'..h...|
00000060 84 f6 fe 0d 20 69 70 66 de 58 12 d1 e5 1f e1 cf |.... ipf.X......|
00000070 ad 8d a2 f6 76 38 be 27 59 23 76 ee eb 9a 48 85 |....v8.'Y#v...H.|
00000080 2d 5a 35 69 08 dc 18 24 41 65 48 5e 69 a7 3c 67 |-Z5i...$AeH^i.<g|
00000090 9d 2e 69 7b f2 f6 a5 5c 2a 7a bb 51 c1 a6 95 34 |..i{...\*z.Q...4|
000000a0 b5 a9 59 8c f4 af a6 ab 13 b7 3f d0 e4 45 28 48 |..Y.......?..E(H|
000000b0 6d 81 1d 4e 6a e7 5e f8 c3 0f 54 42 6e 43 c1 fc |m..Nj.^...TBnC..|
000000c0 36 b6 34 29 73 d6 06 73 c7 d1 b7 b9 64 be a4 5a |6.4)s..s....d..Z|
000000d0 39 15 a5 89 b2 b5 08 88 fa 78 96 17 59 1f a4 af |9........x..Y...|
000000e0 33 4f 85 07 4e 7c 94 7f 40 11 96 cc b9 fa 6b ca |3O..N|..@.....k.|
000000f0 cf e1 b6 0a 68 d7 41 ff 98 7c 00 77 dd 2d 36 2c |....h.A..|.w.-6,|
00000100 92 3b 36 6a 56 4b 48 7a ba 98 c8 a5 62 66 90 94 |.;6jVKHz....bf..|
00000110 e5 2e 5f 3d 9a ed b8 d6 19 67 bf fc d0 1c f4 68 |.._=.....g.....h|
00000120 e9 ec ec 2a d0 1a 9f ce fe c7 a8 02 46 16 76 75 |...*........F.vu|
00000130 0f d8 a0 bb d1 a6 41 18 30 6c cb ae b9 50 78 f8 |......A.0l...Px.|
00000140 da 17 00 b6 9e 54 36 4c f9 73 e2 e7 96 e2 fe ba |.....T6L.s......|
00000150 97 ec 7e 83 28 90 1b 30 cc d2 1f 67 7d 95 06 93 |..~.(..0...g}...|
00000160 14 4b c7 ed 62 f4 12 c0 ae ac 2c e7 56 2c de 72 |.K..b.....,.V,.r|
00000170 b1 0c e0 7c |...||
>>> Flow 12 (server to client)
00000000 00 00 01 40 d8 f3 ab e8 5a 68 2b 87 69 2f 89 82 |...@....Zh+.i/..|
00000010 79 d4 49 5f cb 3d d5 e9 c9 62 8f 0c 03 ef e3 33 |y.I_.=...b.....3|
00000020 6a 40 a0 5c 80 7e 36 b9 0c 21 28 ec 61 9f fa ac |j@.\.~6..!(.a...|
00000030 7b 6f 2a 1b e2 79 05 40 d5 be 16 3a 34 16 c7 aa |{o*..y.@...:4...|
00000040 e2 ff 96 6f fe c0 ca e9 c4 56 5c 0e 28 15 51 9d |...o.....V\.(.Q.|
00000050 e7 7b 34 d8 e4 87 cc 92 f7 38 10 87 79 9d 96 de |.{4......8..y...|
00000060 0c 26 81 d3 e2 14 12 ce 09 3c 8a a7 c2 86 7e 9a |.&.......<....~.|
00000070 64 35 71 8e 37 43 0c 82 ba bf 99 09 76 d0 1e 3e |d5q.7C......v..>|
00000080 7b 07 c3 3f e3 3a 87 b2 e6 56 de c7 30 c5 a6 1e |{..?.:...V..0...|
00000090 1f 15 9f 38 67 94 12 6c de a9 ae e6 42 fa 00 31 |...8g..l....B..1|
000000a0 2a 7f c3 39 fb a3 d0 60 26 ac d9 3f 10 5f c6 28 |*..9...`&..?._.(|
000000b0 49 eb ca 1f 51 b9 9d 6a f8 ab 51 80 71 99 77 28 |I...Q..j..Q.q.w(|
000000c0 40 21 64 6e 57 9a ea d1 56 ea 7a 34 dd 07 4b d4 |@!dnW...V.z4..K.|
000000d0 e0 ba 3c 1a 91 61 92 45 01 00 2c 97 87 3c 67 66 |..<..a.E..,..<gf|
000000e0 58 1a f4 2c fd 74 01 af 1c 42 f7 e6 16 6b 8d 27 |X..,.t...B...k.'|
000000f0 ad f7 2c 19 2d 8f 64 60 d7 d7 76 1c f5 3a 41 b8 |..,.-.d`..v..:A.|
00000100 5d 32 95 83 b6 92 c5 be 64 ae 56 64 4c 27 1b 06 |]2......d.VdL'..|
00000110 29 80 1d f3 d6 c7 b5 e1 93 30 98 1e 2a b4 03 fa |)........0..*...|
00000120 2c 4a be e1 07 b4 c6 e2 50 c3 b5 da 2d 67 cd c4 |,J......P...-g..|
00000130 96 ba b3 f3 7f 6d 68 eb 4b 29 54 98 ab d0 c6 c5 |.....mh.K)T.....|
00000140 b8 cf ec b1 45 7b 4b 23 8c 33 1f c9 2c 8e 4e a8 |....E{K#.3..,.N.|
00000150 f1 3d a7 83 |.=..|
>>> Flow 13 (client to server)
00000000 00 00 02 80 73 df 7a c3 c6 df 0c 86 29 85 09 e5 |....s.z.....)...|
00000010 49 43 1c f6 90 e3 e3 10 33 95 3b ab 9c 66 c5 db |IC......3.;..f..|
00000020 cb ed 75 99 c8 1e a8 e2 6c 23 81 c3 62 14 2c 46 |..u.....l#..b.,F|
00000030 43 84 76 e4 2f 9b f3 05 2e 75 0a 6a a6 09 50 8c |C.v./....u.j..P.|
00000040 54 53 61 05 ec 41 7e 66 e4 74 36 1d 59 78 79 43 |TSa..A~f.t6.YxyC|
00000050 ea 35 21 fc 14 3d d1 83 ed 48 95 60 5c f3 82 4f |.5!..=...H.`\..O|
00000060 03 a9 6d 37 2e f7 e5 e6 ea 65 db e8 36 05 4a fa |..m7.....e..6.J.|
00000070 44 c4 04 a0 41 a7 7f 3f 98 f1 91 6f d5 3c 00 57 |D...A..?...o.<.W|
00000080 0f 4a 65 e6 5e 9a 9d fd db c9 93 48 52 50 ad f9 |.Je.^......HRP..|
00000090 73 77 71 f9 f7 89 df 51 e9 1c ed 59 aa 33 57 93 |swq....Q...Y.3W.|
000000a0 6c d0 3f 71 6f 9d 88 34 cd f9 39 8c a3 eb 22 ea |l.?qo..4..9...".|
000000b0 d0 9d 04 f4 83 80 3c 27 5b 77 22 6c 69 15 10 c5 |......<'[w"li...|
000000c0 e0 6b 3c 70 52 7d 06 b6 6d 86 6c c5 df 24 1a f1 |.k<pR}..m.l..$..|
000000d0 01 12 91 e1 c3 57 3e 04 92 ee 80 ba 12 0c 67 6c |.....W>.......gl|
000000e0 ac 4c b6 ce ab a7 a6 87 81 de 42 67 40 dc 1d bc |.L........Bg@...|
000000f0 c7 0c 57 c7 f1 8b b5 6e 2c d8 b1 9a 35 79 e4 c3 |..W....n,...5y..|
00000100 7f 3e 1f 83 c2 b3 db 7e 89 b7 9b 7f 7a 0b 1e 41 |.>.....~....z..A|
00000110 fd 13 65 bb 25 cd 95 2f c8 e3 6e 77 00 b0 dd 45 |..e.%../..nw...E|
00000120 34 17 4c 98 23 9e b0 e4 b6 2d 5f 98 e3 2a 36 73 |4.L.#....-_..*6s|
00000130 bd 37 da 23 7b d2 4b d8 c4 71 61 35 21 35 3a b2 |.7.#{.K..qa5!5:.|
00000140 c1 d5 64 72 90 ee 68 20 f8 49 e5 a0 b2 95 63 fe |..dr..h .I....c.|
00000150 df ab 21 eb 55 e4 df 57 22 cc 6e 6a e0 bd 20 90 |..!.U..W".nj.. .|
00000160 72 06 b8 da 3a ec 71 0a 53 4d 92 3d 57 db 0e 6c |r...:.q.SM.=W..l|
00000170 13 71 31 8f b5 73 56 5f 1c a7 d8 c3 88 04 e4 d2 |.q1..sV_........|
00000180 1e f1 3f 64 7e 5e 48 a1 dd 11 ea 9e 7f dc 8f 9a |..?d~^H.........|
00000190 ab dd 77 96 c3 d8 8f d5 22 82 74 29 90 fa 80 85 |..w.....".t)....|
000001a0 a7 4f df c0 e2 77 a9 d7 3c ff ae 15 1f ed c1 56 |.O...w..<......V|
000001b0 bf a0 e6 11 f6 89 6a 5c 7e 91 56 e3 10 e7 67 1c |......j\~.V...g.|
000001c0 b0 84 8e 77 8f 3b 94 10 99 2d c3 8b 5b bb 97 89 |...w.;...-..[...|
000001d0 83 f9 e3 78 92 84 45 f6 3f 10 57 e1 21 cb 23 97 |...x..E.?.W.!.#.|
000001e0 c2 97 e9 05 d6 70 6d 91 a3 75 5e 81 03 ba 4e 74 |.....pm..u^...Nt|
000001f0 2a 51 9e bd dc 67 f0 2b 73 4d b8 51 46 e6 82 e8 |*Q...g.+sM.QF...|
00000200 15 e9 d4 31 9d fd 46 18 2d ab 89 9a e7 2c 94 01 |...1..F.-....,..|
00000210 f4 61 53 d3 18 15 3f 1b 31 c7 40 44 df 89 6d df |.aS...?.1.@D..m.|
00000220 e7 df a3 dd 69 a7 61 d4 d4 c9 2c 84 07 80 1d e9 |....i.a...,.....|
00000230 8c e5 de a4 60 25 39 35 95 c9 af a1 37 ef 28 8f |....`%95....7.(.|
00000240 2a 1a c1 59 e3 7a ac 77 77 82 43 0e 9a 15 f4 40 |*..Y.z.ww.C....@|
00000250 1d 2c 26 2e 59 4a 9d 1b c0 4e 18 f3 a5 cb 32 8d |.,&.YJ...N....2.|
00000260 a3 7d da d6 77 fc 1a 45 17 f0 05 80 dc 4b 23 71 |.}..w..E.....K#q|
00000270 45 0d 0c c5 52 0c c5 0e 0b 26 0d 9a 83 2a 55 22 |E...R....&...*U"|
00000280 7e c7 da ca b6 37 1e 14 8b 5a 66 da 3d 6f 0d c7 |~....7...Zf.=o..|
00000290 f4 2b d9 87 |.+..|
>>> Flow 14 (server to client)
00000000 00 00 00 10 0f f7 b8 2d e5 e0 1a 69 67 73 61 5a |.......-...igsaZ|
00000010 7a fe 3d 4f d7 3a d6 50 cc 3f 21 32 2a d1 64 82 |z.=O.:.P.?!2*.d.|
00000020 b8 fb d6 31 |...1|
+285
View File
@@ -0,0 +1,285 @@
>>> Flow 1 (client to server)
00000000 53 53 48 2d 32 2e 30 2d 47 6f 0d 0a |SSH-2.0-Go..|
>>> Flow 2 (server to client)
00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_|
00000010 39 2e 39 0d 0a |9.9..|
>>> Flow 3 (client to server)
00000000 00 00 02 5c 0b 14 7f 9c 2b a4 e8 8f 82 7d 61 60 |...\....+....}a`|
00000010 45 50 76 05 85 3e 00 00 00 c9 63 75 72 76 65 32 |EPv..>....curve2|
00000020 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000030 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000040 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
00000050 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
00000060 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000070 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
00000080 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
00000090 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 2c |-group14-sha256,|
000000a0 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d 67 |diffie-hellman-g|
000000b0 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 2d |roup14-sha1,ext-|
000000c0 69 6e 66 6f 2d 63 2c 6b 65 78 2d 73 74 72 69 63 |info-c,kex-stric|
000000d0 74 2d 63 2d 76 30 30 40 6f 70 65 6e 73 73 68 2e |t-c-v00@openssh.|
000000e0 63 6f 6d 00 00 00 57 65 63 64 73 61 2d 73 68 61 |com...Wecdsa-sha|
000000f0 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 73 61 |2-nistp256,ecdsa|
00000100 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
00000110 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 |cdsa-sha2-nistp5|
00000120 32 31 2c 73 73 68 2d 72 73 61 2c 73 73 68 2d 64 |21,ssh-rsa,ssh-d|
00000130 73 73 2c 73 73 68 2d 65 64 32 35 35 31 39 00 00 |ss,ssh-ed25519..|
00000140 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |.laes128-gcm@ope|
00000150 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 35 36 2d |nssh.com,aes256-|
00000160 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |gcm@openssh.com,|
00000170 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 33 30 |chacha20-poly130|
00000180 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 |5@openssh.com,ae|
00000190 73 31 32 38 2d 63 74 72 2c 61 65 73 31 39 32 2d |s128-ctr,aes192-|
000001a0 63 74 72 2c 61 65 73 32 35 36 2d 63 74 72 00 00 |ctr,aes256-ctr..|
000001b0 00 6c 61 65 73 31 32 38 2d 67 63 6d 40 6f 70 65 |.laes128-gcm@ope|
000001c0 6e 73 73 68 2e 63 6f 6d 2c 61 65 73 32 35 36 2d |nssh.com,aes256-|
000001d0 67 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |gcm@openssh.com,|
000001e0 63 68 61 63 68 61 32 30 2d 70 6f 6c 79 31 33 30 |chacha20-poly130|
000001f0 35 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 65 |5@openssh.com,ae|
00000200 73 31 32 38 2d 63 74 72 2c 61 65 73 31 39 32 2d |s128-ctr,aes192-|
00000210 63 74 72 2c 61 65 73 32 35 36 2d 63 74 72 00 00 |ctr,aes256-ctr..|
00000220 00 09 68 6d 61 63 2d 73 68 61 31 00 00 00 09 68 |..hmac-sha1....h|
00000230 6d 61 63 2d 73 68 61 31 00 00 00 04 6e 6f 6e 65 |mac-sha1....none|
00000240 00 00 00 04 6e 6f 6e 65 00 00 00 00 00 00 00 00 |....none........|
00000250 00 00 00 00 00 d7 3b 80 93 f6 ef bc 88 eb 1a 6e |......;........n|
>>> Flow 4 (server to client)
00000000 00 00 04 9c 0a 14 e9 cb 41 9a 90 81 ba 92 0e 19 |........A.......|
00000010 be 4a 95 d9 4c 20 00 00 01 7a 73 6e 74 72 75 70 |.J..L ...zsntrup|
00000020 37 36 31 78 32 35 35 31 39 2d 73 68 61 35 31 32 |761x25519-sha512|
00000030 2c 73 6e 74 72 75 70 37 36 31 78 32 35 35 31 39 |,sntrup761x25519|
00000040 2d 73 68 61 35 31 32 40 6f 70 65 6e 73 73 68 2e |-sha512@openssh.|
00000050 63 6f 6d 2c 6d 6c 6b 65 6d 37 36 38 78 32 35 35 |com,mlkem768x255|
00000060 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 65 32 |19-sha256,curve2|
00000070 35 35 31 39 2d 73 68 61 32 35 36 2c 63 75 72 76 |5519-sha256,curv|
00000080 65 32 35 35 31 39 2d 73 68 61 32 35 36 40 6c 69 |e25519-sha256@li|
00000090 62 73 73 68 2e 6f 72 67 2c 65 63 64 68 2d 73 68 |bssh.org,ecdh-sh|
000000a0 61 32 2d 6e 69 73 74 70 32 35 36 2c 65 63 64 68 |a2-nistp256,ecdh|
000000b0 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34 2c 65 |-sha2-nistp384,e|
000000c0 63 64 68 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 |cdh-sha2-nistp52|
000000d0 31 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e |1,diffie-hellman|
000000e0 2d 67 72 6f 75 70 2d 65 78 63 68 61 6e 67 65 2d |-group-exchange-|
000000f0 73 68 61 32 35 36 2c 64 69 66 66 69 65 2d 68 65 |sha256,diffie-he|
00000100 6c 6c 6d 61 6e 2d 67 72 6f 75 70 31 36 2d 73 68 |llman-group16-sh|
00000110 61 35 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c |a512,diffie-hell|
00000120 6d 61 6e 2d 67 72 6f 75 70 31 38 2d 73 68 61 35 |man-group18-sha5|
00000130 31 32 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 |12,diffie-hellma|
00000140 6e 2d 67 72 6f 75 70 31 34 2d 73 68 61 32 35 36 |n-group14-sha256|
00000150 2c 64 69 66 66 69 65 2d 68 65 6c 6c 6d 61 6e 2d |,diffie-hellman-|
00000160 67 72 6f 75 70 31 34 2d 73 68 61 31 2c 65 78 74 |group14-sha1,ext|
00000170 2d 69 6e 66 6f 2d 73 2c 6b 65 78 2d 73 74 72 69 |-info-s,kex-stri|
00000180 63 74 2d 73 2d 76 30 30 40 6f 70 65 6e 73 73 68 |ct-s-v00@openssh|
00000190 2e 63 6f 6d 00 00 00 2d 72 73 61 2d 73 68 61 32 |.com...-rsa-sha2|
000001a0 2d 35 31 32 2c 72 73 61 2d 73 68 61 32 2d 32 35 |-512,rsa-sha2-25|
000001b0 36 2c 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 |6,ecdsa-sha2-nis|
000001c0 74 70 32 35 36 00 00 00 6c 63 68 61 63 68 61 32 |tp256...lchacha2|
000001d0 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
000001e0 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
000001f0 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000200 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000210 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000220 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
00000230 68 2e 63 6f 6d 00 00 00 6c 63 68 61 63 68 61 32 |h.com...lchacha2|
00000240 30 2d 70 6f 6c 79 31 33 30 35 40 6f 70 65 6e 73 |0-poly1305@opens|
00000250 73 68 2e 63 6f 6d 2c 61 65 73 31 32 38 2d 63 74 |sh.com,aes128-ct|
00000260 72 2c 61 65 73 31 39 32 2d 63 74 72 2c 61 65 73 |r,aes192-ctr,aes|
00000270 32 35 36 2d 63 74 72 2c 61 65 73 31 32 38 2d 67 |256-ctr,aes128-g|
00000280 63 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 61 |cm@openssh.com,a|
00000290 65 73 32 35 36 2d 67 63 6d 40 6f 70 65 6e 73 73 |es256-gcm@openss|
000002a0 68 2e 63 6f 6d 00 00 00 d5 75 6d 61 63 2d 36 34 |h.com....umac-64|
000002b0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000002c0 2c 75 6d 61 63 2d 31 32 38 2d 65 74 6d 40 6f 70 |,umac-128-etm@op|
000002d0 65 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 |enssh.com,hmac-s|
000002e0 68 61 32 2d 32 35 36 2d 65 74 6d 40 6f 70 65 6e |ha2-256-etm@open|
000002f0 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 |ssh.com,hmac-sha|
00000300 32 2d 35 31 32 2d 65 74 6d 40 6f 70 65 6e 73 73 |2-512-etm@openss|
00000310 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 61 31 2d |h.com,hmac-sha1-|
00000320 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c |etm@openssh.com,|
00000330 75 6d 61 63 2d 36 34 40 6f 70 65 6e 73 73 68 2e |umac-64@openssh.|
00000340 63 6f 6d 2c 75 6d 61 63 2d 31 32 38 40 6f 70 65 |com,umac-128@ope|
00000350 6e 73 73 68 2e 63 6f 6d 2c 68 6d 61 63 2d 73 68 |nssh.com,hmac-sh|
00000360 61 32 2d 32 35 36 2c 68 6d 61 63 2d 73 68 61 32 |a2-256,hmac-sha2|
00000370 2d 35 31 32 2c 68 6d 61 63 2d 73 68 61 31 00 00 |-512,hmac-sha1..|
00000380 00 d5 75 6d 61 63 2d 36 34 2d 65 74 6d 40 6f 70 |..umac-64-etm@op|
00000390 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 31 |enssh.com,umac-1|
000003a0 32 38 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 |28-etm@openssh.c|
000003b0 6f 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 |om,hmac-sha2-256|
000003c0 2d 65 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |-etm@openssh.com|
000003d0 2c 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2d 65 |,hmac-sha2-512-e|
000003e0 74 6d 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 68 |tm@openssh.com,h|
000003f0 6d 61 63 2d 73 68 61 31 2d 65 74 6d 40 6f 70 65 |mac-sha1-etm@ope|
00000400 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 63 2d 36 34 |nssh.com,umac-64|
00000410 40 6f 70 65 6e 73 73 68 2e 63 6f 6d 2c 75 6d 61 |@openssh.com,uma|
00000420 63 2d 31 32 38 40 6f 70 65 6e 73 73 68 2e 63 6f |c-128@openssh.co|
00000430 6d 2c 68 6d 61 63 2d 73 68 61 32 2d 32 35 36 2c |m,hmac-sha2-256,|
00000440 68 6d 61 63 2d 73 68 61 32 2d 35 31 32 2c 68 6d |hmac-sha2-512,hm|
00000450 61 63 2d 73 68 61 31 00 00 00 15 6e 6f 6e 65 2c |ac-sha1....none,|
00000460 7a 6c 69 62 40 6f 70 65 6e 73 73 68 2e 63 6f 6d |zlib@openssh.com|
00000470 00 00 00 15 6e 6f 6e 65 2c 7a 6c 69 62 40 6f 70 |....none,zlib@op|
00000480 65 6e 73 73 68 2e 63 6f 6d 00 00 00 00 00 00 00 |enssh.com.......|
00000490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
>>> Flow 5 (client to server)
00000000 00 00 00 2c 06 1e 00 00 00 20 90 43 9e 5f db 35 |...,..... .C._.5|
00000010 6a 06 dc ee c2 cb 5b 73 c3 9a ad 63 f4 e8 c5 c6 |j.....[s...c....|
00000020 60 0e 6b 6d 49 93 ea 68 c0 26 e3 f9 ae 57 e2 35 |`.kmI..h.&...W.5|
>>> Flow 6 (server to client)
00000000 00 00 01 04 0a 1f 00 00 00 68 00 00 00 13 65 63 |.........h....ec|
00000010 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
00000020 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 00 |6....nistp256...|
00000030 41 04 8b d1 dd c3 a2 af 65 c5 b1 7e 0d 88 0e 10 |A.......e..~....|
00000040 3b 52 4a 43 b7 3c ed e9 9a 89 5d 2b 05 74 b7 7e |;RJC.<....]+.t.~|
00000050 2b 1e 12 dd 2c 78 71 53 be eb f6 4e 5d 19 cf 98 |+...,xqS...N]...|
00000060 d0 25 2d 4a a3 4a 15 2c 50 10 67 80 6d 2e d9 fa |.%-J.J.,P.g.m...|
00000070 84 a8 00 00 00 20 fd 1d b1 2f 12 02 cc da 86 7b |..... .../.....{|
00000080 19 49 89 38 e4 41 77 d6 1d f3 59 8e 06 ca 66 d4 |.I.8.Aw...Y...f.|
00000090 45 d4 20 a6 ca 5d 00 00 00 64 00 00 00 13 65 63 |E. ..]...d....ec|
000000a0 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 |dsa-sha2-nistp25|
000000b0 36 00 00 00 49 00 00 00 21 00 8c 55 68 1e 48 68 |6...I...!..Uh.Hh|
000000c0 44 4f c9 c4 ef ce 2c 51 2b 5d 41 d5 79 6f cd c7 |DO....,Q+]A.yo..|
000000d0 78 52 b1 fe d3 4b 78 74 37 85 00 00 00 20 37 68 |xR...Kxt7.... 7h|
000000e0 52 2a b5 58 67 48 1c 2e 9f ba ec 7f d7 e4 08 84 |R*.XgH..........|
000000f0 c6 51 0e 13 33 26 10 5c 1f 5d 08 ea 67 50 00 00 |.Q..3&.\.]..gP..|
00000100 00 00 00 00 00 00 00 00 00 00 00 0c 0a 15 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 01 40 ba d2 50 93 |...........@..P.|
00000120 7b 59 49 97 a9 87 f0 35 ae 63 5f 78 17 05 a5 02 |{YI....5.c_x....|
00000130 ac 12 05 c6 09 09 56 ec 88 5f ac a7 61 77 62 d5 |......V.._..awb.|
00000140 87 b8 5e 41 3e 0b 02 48 46 60 50 4f 52 1c fb 55 |..^A>..HF`POR..U|
00000150 3c a3 1e 14 21 30 b2 b7 81 7d 32 37 c3 27 bb 57 |<...!0...}27.'.W|
00000160 0d cd 72 34 b9 6d c9 90 f6 0e ed 0a f3 19 f0 90 |..r4.m..........|
00000170 70 12 68 d3 c3 69 24 94 e7 87 d2 58 26 16 8e 8c |p.h..i$....X&...|
00000180 bd bf 1d 39 8a d9 f5 66 59 b4 f1 ac 96 ef 38 f7 |...9...fY.....8.|
00000190 56 c9 f0 40 76 98 a3 19 4b 9c d5 5f a9 c7 53 59 |V..@v...K.._..SY|
000001a0 81 58 9f 70 72 b2 31 56 c1 1e ab 89 0b a1 c6 b7 |.X.pr.1V........|
000001b0 23 7d c2 fc a8 00 7d 0b 85 9c e6 0c 18 f7 65 9f |#}....}.......e.|
000001c0 59 f5 b9 23 50 80 ca 79 ee e5 a1 12 6f 79 d6 4d |Y..#P..y....oy.M|
000001d0 32 91 da 53 60 85 f8 ed 68 cb 7a 27 9a ce c6 cc |2..S`...h.z'....|
000001e0 77 9e 0f 0e f9 13 80 74 fc f4 4b 28 5a 9b 6a 15 |w......t..K(Z.j.|
000001f0 ac a0 5e 04 60 67 e1 87 3e 50 d6 52 fc 4d 9e 3c |..^.`g..>P.R.M.<|
00000200 77 2f 31 60 c8 12 f1 59 74 30 01 9e 9c d6 c6 e4 |w/1`...Yt0......|
00000210 62 f8 eb de ff c8 d6 98 10 1f 54 69 2d 1d ae ce |b.........Ti-...|
00000220 f9 94 e6 ec cc 3c 3b c0 68 96 a7 28 8f 8f 39 0a |.....<;.h..(..9.|
00000230 1e 46 4f f1 5d 05 6b 99 d9 e2 0e f3 58 16 78 7b |.FO.].k.....X.x{|
00000240 9d 5f 62 06 c9 1b 35 de 1d 4d c2 fd e0 b5 d7 c4 |._b...5..M......|
00000250 a2 73 b7 fc 5d b9 73 33 f8 49 41 3f 87 1d 0d 48 |.s..].s3.IA?...H|
00000260 4a d2 32 d5 2a c3 36 87 0e 1e 00 30 |J.2.*.6....0|
>>> Flow 7 (client to server)
00000000 00 00 00 0c 0a 15 b8 cc 87 3c 23 dc 62 b8 d2 60 |.........<#.b..`|
00000010 00 00 00 20 23 ea f8 14 49 04 74 f5 66 c2 8e 5c |... #...I.t.f..\|
00000020 ef bc 31 df db a5 b4 90 d7 76 dc 8a 2a 45 30 2e |..1......v..*E0.|
00000030 c7 9f d3 7f 3b 9d c6 eb 95 56 60 f4 99 4a e1 07 |....;....V`..J..|
00000040 ad 0e 64 9a |..d.|
>>> Flow 8 (server to client)
00000000 00 00 00 20 9a 2a d0 a9 2a 53 17 f3 8e 87 2c 42 |... .*..*S....,B|
00000010 2d 71 70 57 e9 16 81 63 27 46 7c a2 16 97 a7 d7 |-qpW...c'F|.....|
00000020 2c cd ba a0 86 f5 4b 20 a6 f0 d2 89 68 64 ef 14 |,.....K ....hd..|
00000030 2b a9 26 f2 |+.&.|
>>> Flow 9 (client to server)
00000000 00 00 00 30 6e 5b 35 1d 7b 3d d3 15 b0 55 94 25 |...0n[5.{=...U.%|
00000010 f9 25 29 cc cb 9d d1 24 ab 9f b9 f6 84 11 01 e3 |.%)....$........|
00000020 73 cf d2 30 88 75 7a 66 57 d9 fb 12 7c 88 6c f1 |s..0.uzfW...|.l.|
00000030 0c 74 16 04 21 35 6e 45 56 6a f5 cb 53 92 4b ef |.t..!5nEVj..S.K.|
00000040 c9 98 05 ec |....|
>>> Flow 10 (server to client)
00000000 00 00 00 20 6d 1e b1 6a c6 34 ac 7d e5 c9 0c ad |... m..j.4.}....|
00000010 6d 76 c8 64 e0 97 08 3a 86 0c 0e e5 3c 80 f9 fd |mv.d...:....<...|
00000020 61 bb eb 51 6d 0d 8d 0c c3 3f 65 a6 53 a8 48 6f |a..Qm....?e.S.Ho|
00000030 31 29 e7 d6 00 00 00 40 1d ea 5e 15 62 ae b2 af |1).....@..^.b...|
00000040 54 01 a1 cd c3 e7 5d 40 e2 94 e6 d9 27 93 b6 ac |T.....]@....'...|
00000050 fc a7 37 43 c6 d6 b5 91 07 7e 20 0f 35 40 46 69 |..7C.....~ .5@Fi|
00000060 7b d2 f6 9b dc 95 ba bc fe 85 ae 93 f4 f1 61 78 |{.............ax|
00000070 c3 9d a1 ac 5a ab fc 49 4b 36 48 90 e5 e1 a9 29 |....Z..IK6H....)|
00000080 78 5b 1e 41 5c 5d f6 20 |x[.A\]. |
>>> Flow 11 (client to server)
00000000 00 00 01 60 ac 56 a1 af 43 27 43 fc ed 11 9a 4f |...`.V..C'C....O|
00000010 04 45 a6 90 cc f4 0a 53 12 7e c7 91 de 9c 00 1f |.E.....S.~......|
00000020 42 33 db 71 50 c3 66 ca f4 04 3e 7e 31 62 48 2f |B3.qP.f...>~1bH/|
00000030 ea cf 63 1e 6d b5 0e aa 1e 12 81 df d6 17 e5 3b |..c.m..........;|
00000040 fe b1 6b 8d ee 49 90 0d cf 7c 07 1a 17 06 0d 3b |..k..I...|.....;|
00000050 fc f5 71 ef 09 5e 3a 34 e4 fe 5c b5 42 16 6d 92 |..q..^:4..\.B.m.|
00000060 05 bc 9a 04 70 1c 3b 14 70 d9 25 6d 6d 72 1c c0 |....p.;.p.%mmr..|
00000070 54 be 28 49 17 ed 4c dc 78 4b f5 6b ba 76 6a 6c |T.(I..L.xK.k.vjl|
00000080 14 16 36 dd 26 f7 07 d1 0d f6 a0 49 2a 33 67 94 |..6.&......I*3g.|
00000090 b6 96 1a a3 d1 58 89 a5 46 2d 16 7e 19 66 b7 9c |.....X..F-.~.f..|
000000a0 d2 e3 19 f0 54 d6 04 54 dc 6a 37 b3 e8 08 a9 41 |....T..T.j7....A|
000000b0 27 69 ce 23 f4 aa f8 98 3e 02 d4 b3 e8 3b 69 0b |'i.#....>....;i.|
000000c0 0a 1a 4e 2e 78 2a 85 a6 6d a0 d9 70 45 13 d6 75 |..N.x*..m..pE..u|
000000d0 b6 f6 a5 7b 6a 9a 96 33 e7 c9 17 9d 8d 57 88 1c |...{j..3.....W..|
000000e0 7f 00 4c af 87 ca 27 ec 96 70 db b9 2f cf ec 75 |..L...'..p../..u|
000000f0 72 41 e2 f8 00 03 89 95 bc 69 c3 25 a5 20 88 74 |rA.......i.%. .t|
00000100 b6 e4 55 32 15 b4 50 2c 58 c9 ad 78 45 d9 3a 20 |..U2..P,X..xE.: |
00000110 85 c3 e3 ea 49 98 1d 0f 41 95 15 30 7c 75 6e 70 |....I...A..0|unp|
00000120 c6 b0 c1 55 61 97 22 4d d7 8d 26 33 8b 0e eb 69 |...Ua."M..&3...i|
00000130 fd 02 33 d5 17 74 63 3c b7 41 79 dd 91 54 0b bc |..3..tc<.Ay..T..|
00000140 9a ab ba 65 54 ce 49 69 29 e8 88 2a 92 b9 4f 58 |...eT.Ii)..*..OX|
00000150 fb 13 d5 ee d4 bc 41 ac df 90 f2 61 55 0c 99 4e |......A....aU..N|
00000160 43 f2 a3 1e 35 a0 54 16 a6 c9 18 c3 2e 30 9d 79 |C...5.T......0.y|
00000170 7c 0b ec b0 ||...|
>>> Flow 12 (server to client)
00000000 00 00 01 40 34 79 ba dd 20 7e 67 11 41 80 29 06 |...@4y.. ~g.A.).|
00000010 d4 7c 14 87 79 a0 1f cb d6 bb 90 ee 9e 91 b8 77 |.|..y..........w|
00000020 57 23 fe 4c 66 74 db f0 60 b9 cb 3b 87 ba 0e 3b |W#.Lft..`..;...;|
00000030 27 1d e7 67 2e be 2d db a4 c9 15 d8 d1 1c 91 f3 |'..g..-.........|
00000040 02 b7 8c 1d 52 04 75 1e 6c 58 a6 b0 28 a8 1e db |....R.u.lX..(...|
00000050 9a e1 d4 82 29 dd ab 24 24 c2 3f 50 ed 9d d8 8a |....)..$$.?P....|
00000060 75 b0 a0 66 eb 00 b7 fb 54 99 ff 53 83 e4 8c e9 |u..f....T..S....|
00000070 23 09 17 37 0c ed 22 f9 cf f4 ce 31 3d 88 30 54 |#..7.."....1=.0T|
00000080 dd 56 40 53 51 a7 f2 4e 69 65 2c 32 a1 ed 75 18 |.V@SQ..Nie,2..u.|
00000090 e3 fc 13 ca 79 9d d4 07 3d fa eb aa 1c af 78 7b |....y...=.....x{|
000000a0 60 4f ca 0b 58 32 cd b0 67 c9 90 e8 99 56 47 98 |`O..X2..g....VG.|
000000b0 47 bf 9e a1 02 e4 83 b4 48 cf 01 65 a9 b7 43 aa |G.......H..e..C.|
000000c0 8d 63 68 19 cb 24 c9 0c 3c bd e1 3a 51 db c5 1e |.ch..$..<..:Q...|
000000d0 a2 bf 80 1d a8 33 71 d7 7e e8 13 0b 00 d7 76 2d |.....3q.~.....v-|
000000e0 01 ba d7 2c 05 b8 9e a4 a7 82 3f 49 83 c9 31 b6 |...,......?I..1.|
000000f0 d1 2f 0d a2 f1 cc c6 18 de cf 62 03 93 30 12 15 |./........b..0..|
00000100 0b 3c ab 6a 98 45 0b 97 51 17 7e d1 d2 a1 eb d7 |.<.j.E..Q.~.....|
00000110 9c 96 13 ba 4c db 48 e3 4e ee 4a 9b 27 b2 c2 87 |....L.H.N.J.'...|
00000120 c0 95 21 09 d4 85 e2 40 b9 1c 70 02 15 02 bb 96 |..!....@..p.....|
00000130 48 a9 d6 56 33 e0 9e c2 82 bb ea fe 3d 04 7d c4 |H..V3.......=.}.|
00000140 a2 5f 9d 49 c2 36 6f 33 77 1f 30 e7 4d 88 59 bb |._.I.6o3w.0.M.Y.|
00000150 ca 3b f3 9c |.;..|
>>> Flow 13 (client to server)
00000000 00 00 02 80 cd d3 42 80 d7 90 70 d5 7d 57 31 29 |......B...p.}W1)|
00000010 a0 f5 02 d2 dd 48 eb f3 d3 29 ba b2 30 62 a5 00 |.....H...)..0b..|
00000020 aa 04 03 0b e5 8e 87 49 a3 e6 48 63 3c c5 c6 50 |.......I..Hc<..P|
00000030 b0 87 60 68 c8 da cf 06 c3 39 60 e6 51 a5 67 1f |..`h.....9`.Q.g.|
00000040 71 8a c2 f3 a6 63 26 6a f9 1b 22 28 92 d6 58 ac |q....c&j.."(..X.|
00000050 e7 6f c7 11 01 3f e4 26 2c b9 47 26 a1 60 c4 5e |.o...?.&,.G&.`.^|
00000060 76 4e 66 5d 55 a2 4a cf 45 84 7c b4 ae 27 3e 71 |vNf]U.J.E.|..'>q|
00000070 dd 5a ca 60 15 08 f1 51 5a 70 96 21 b7 fc 06 23 |.Z.`...QZp.!...#|
00000080 32 1f f4 4a 58 66 d3 2e 55 24 fc 5d 59 ad 65 dd |2..JXf..U$.]Y.e.|
00000090 d5 47 4e 47 40 04 43 be 5c d5 87 92 22 c8 21 a7 |.GNG@.C.\...".!.|
000000a0 d8 1a ca 88 51 80 88 d5 2a 1c 93 fc 3b 70 6e b9 |....Q...*...;pn.|
000000b0 a0 ca 65 ff 5c ad 9d 49 65 66 77 e2 32 2d 18 82 |..e.\..Iefw.2-..|
000000c0 16 a6 83 00 9d 9e db 8f 1b 77 0b 0e 37 50 a8 de |.........w..7P..|
000000d0 ee e0 33 48 a3 01 bb 82 13 58 b6 8b f1 bc 05 10 |..3H.....X......|
000000e0 7e 6d c1 4b c6 8f 2b cd aa 49 58 c8 4a 02 3e 8c |~m.K..+..IX.J.>.|
000000f0 20 51 41 64 f0 ff 1a 46 fd 3f b3 f7 19 9f aa 50 | QAd...F.?.....P|
00000100 48 bd 64 6f ef e1 14 55 55 10 ae d7 da fe 4e 9e |H.do...UU.....N.|
00000110 0b f1 19 da 9e ae c2 f6 b6 ff 23 17 e6 3a 3c 40 |..........#..:<@|
00000120 8a 99 bc 51 62 3e 67 80 03 d7 38 7e f3 70 ef 2d |...Qb>g...8~.p.-|
00000130 30 c9 ff bc fd 19 fe b7 46 08 cc c0 63 31 24 00 |0.......F...c1$.|
00000140 e9 d5 a4 f2 5f 4d ae f4 f1 d7 ac f7 49 bb 01 b2 |...._M......I...|
00000150 21 77 17 7e 19 a0 15 d9 cc 72 36 13 e0 b2 51 7f |!w.~.....r6...Q.|
00000160 51 2f 64 c9 f1 45 ed fb 7e 8e 13 49 8b ba 8f 72 |Q/d..E..~..I...r|
00000170 94 0a d6 30 6c 40 01 75 2d e1 2b 63 8d cc 73 ce |...0l@.u-.+c..s.|
00000180 da 36 16 cf 5f 28 ef 5f ef 06 ed 08 11 2e 80 11 |.6.._(._........|
00000190 19 42 e0 ea 4e ce 3c e5 78 ea c0 fa 11 17 d1 6f |.B..N.<.x......o|
000001a0 ca 62 aa 49 b1 8a 86 a4 c8 4f 03 e6 b6 92 7f 0e |.b.I.....O......|
000001b0 e5 6d 21 60 44 7a d6 c7 13 9b 56 99 bd 8a d1 93 |.m!`Dz....V.....|
000001c0 64 13 ad 0e 89 27 46 ef a4 b9 59 18 79 a9 82 ac |d....'F...Y.y...|
000001d0 cb d4 50 0d fd af a3 a8 c3 49 26 09 3c 22 e8 fb |..P......I&.<"..|
000001e0 ca 54 94 6a 78 fd 58 c4 08 99 0d b7 c0 ef 76 c1 |.T.jx.X.......v.|
000001f0 14 41 aa 63 e5 f9 35 cc 62 93 1b fb fa be 08 98 |.A.c..5.b.......|
00000200 44 2b 98 d0 dd e1 74 47 b7 d1 2d 51 60 cd ec 91 |D+....tG..-Q`...|
00000210 94 fa 53 0f dd 50 c0 67 10 e1 96 70 01 f0 b7 0b |..S..P.g...p....|
00000220 a6 83 d8 aa a4 ca e1 26 b7 37 a7 4e 22 43 43 80 |.......&.7.N"CC.|
00000230 75 f7 ab 50 0e 91 18 68 a7 bb 84 b6 84 01 05 1a |u..P...h........|
00000240 f7 69 29 68 61 8e 18 66 2f 44 73 6a aa 22 e8 cf |.i)ha..f/Dsj."..|
00000250 cc 22 48 d9 ea 74 76 e1 3a 87 ca 2e bd d9 9f 81 |."H..tv.:.......|
00000260 94 85 b0 c7 0b 1b ab 62 f0 62 18 b1 e8 6e af e5 |.......b.b...n..|
00000270 2f ec 4a 0a cc 18 10 6f 98 a6 91 de 5c 27 eb 3f |/.J....o....\'.?|
00000280 c5 d1 12 8c 4c 61 14 c4 87 44 44 53 09 a5 bf e7 |....La...DDS....|
00000290 5d 85 31 ff |].1.|
>>> Flow 14 (server to client)
00000000 00 00 00 10 b7 a2 15 df 62 f7 15 b4 d9 01 8f d5 |........b.......|
00000010 bc ef ae 73 43 7e 07 ca 16 9a 23 5e 03 8c 2e 60 |...sC~....#^...`|
00000020 d5 4f c2 8a |.O..|

Some files were not shown because too many files have changed in this diff Show More