github.com/deis/deis@v1.13.5-0.20170519182049-1d9e59fbdbfc/Godeps/_workspace/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 c <- kexResultErr{r, e} 30 }() 31 go func() { 32 r, e := kex.Server(b, rand.Reader, &magics, testSigners["ecdsa"]) 33 s <- kexResultErr{r, e} 34 }() 35 36 clientRes := <-c 37 serverRes := <-s 38 if clientRes.err != nil { 39 t.Errorf("client: %v", clientRes.err) 40 } 41 if serverRes.err != nil { 42 t.Errorf("server: %v", serverRes.err) 43 } 44 if !reflect.DeepEqual(clientRes.result, serverRes.result) { 45 t.Errorf("kex %q: mismatch %#v, %#v", name, clientRes.result, serverRes.result) 46 } 47 } 48 }