github.com/maenmax/kairep@v0.0.0-20210218001208-55bf3df36788/src/golang.org/x/crypto/ssh/kex_test.go (about) 1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package ssh 6 7 // Key exchange tests. 8 9 import ( 10 "crypto/rand" 11 "reflect" 12 "testing" 13 ) 14 15 func TestKexes(t *testing.T) { 16 type kexResultErr struct { 17 result *kexResult 18 err error 19 } 20 21 for name, kex := range kexAlgoMap { 22 a, b := memPipe() 23 24 s := make(chan kexResultErr, 1) 25 c := make(chan kexResultErr, 1) 26 var magics handshakeMagics 27 go func() { 28 r, e := kex.Client(a, rand.Reader, &magics) 29 a.Close() 30 c <- kexResultErr{r, e} 31 }() 32 go func() { 33 r, e := kex.Server(b, rand.Reader, &magics, testSigners["ecdsa"]) 34 b.Close() 35 s <- kexResultErr{r, e} 36 }() 37 38 clientRes := <-c 39 serverRes := <-s 40 if clientRes.err != nil { 41 t.Errorf("client: %v", clientRes.err) 42 } 43 if serverRes.err != nil { 44 t.Errorf("server: %v", serverRes.err) 45 } 46 if !reflect.DeepEqual(clientRes.result, serverRes.result) { 47 t.Errorf("kex %q: mismatch %#v, %#v", name, clientRes.result, serverRes.result) 48 } 49 } 50 }