~ubuntu-branches/ubuntu/trusty/juju-core/trusty-proposed

« back to all changes in this revision

Viewing changes to src/code.google.com/p/go.crypto/ssh/kex_test.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-01-29 11:40:20 UTC
  • mfrom: (23.1.1 trusty-proposed)
  • Revision ID: package-import@ubuntu.com-20140129114020-ejieitm8smtt5vln
Tags: 1.17.1-0ubuntu2
d/tests/local-provider: Don't fail tests if ~/.juju is present as its
created by the juju version command. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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, ecdsaKey)
 
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
}