diff options
author | Unknwon <u@gogs.io> | 2015-09-24 17:55:01 -0400 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2015-09-24 17:55:01 -0400 |
commit | 216f0477b557d5aa6a47fbb0e44d9669c2b30bd5 (patch) | |
tree | 5e872e0028bcd3104ab9b152937eb3f3a461f2a5 /modules/crypto/ssh/kex_test.go | |
parent | befed9c20c99840acbb91995b32103311e07b267 (diff) |
fix subrepo break change
Diffstat (limited to 'modules/crypto/ssh/kex_test.go')
-rwxr-xr-x | modules/crypto/ssh/kex_test.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/modules/crypto/ssh/kex_test.go b/modules/crypto/ssh/kex_test.go new file mode 100755 index 00000000..12ca0acd --- /dev/null +++ b/modules/crypto/ssh/kex_test.go @@ -0,0 +1,50 @@ +// Copyright 2013 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 ssh + +// Key exchange tests. + +import ( + "crypto/rand" + "reflect" + "testing" +) + +func TestKexes(t *testing.T) { + type kexResultErr struct { + result *kexResult + err error + } + + for name, kex := range kexAlgoMap { + a, b := memPipe() + + s := make(chan kexResultErr, 1) + c := make(chan kexResultErr, 1) + var magics handshakeMagics + go func() { + r, e := kex.Client(a, rand.Reader, &magics) + a.Close() + c <- kexResultErr{r, e} + }() + go func() { + r, e := kex.Server(b, rand.Reader, &magics, testSigners["ecdsa"]) + b.Close() + s <- kexResultErr{r, e} + }() + + clientRes := <-c + serverRes := <-s + if clientRes.err != nil { + t.Errorf("client: %v", clientRes.err) + } + if serverRes.err != nil { + t.Errorf("server: %v", serverRes.err) + } + if !reflect.DeepEqual(clientRes.result, serverRes.result) { + t.Errorf("kex %q: mismatch %#v, %#v", name, clientRes.result, serverRes.result) + } + } +} |