OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / golang.org / x / crypto / ssh / test / agent_unix_test.go
1 // Copyright 2014 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 // +build darwin dragonfly freebsd linux netbsd openbsd
6
7 package test
8
9 import (
10         "bytes"
11         "testing"
12
13         "golang.org/x/crypto/ssh"
14         "golang.org/x/crypto/ssh/agent"
15 )
16
17 func TestAgentForward(t *testing.T) {
18         server := newServer(t)
19         defer server.Shutdown()
20         conn := server.Dial(clientConfig())
21         defer conn.Close()
22
23         keyring := agent.NewKeyring()
24         if err := keyring.Add(agent.AddedKey{PrivateKey: testPrivateKeys["dsa"]}); err != nil {
25                 t.Fatalf("Error adding key: %s", err)
26         }
27         if err := keyring.Add(agent.AddedKey{
28                 PrivateKey:       testPrivateKeys["dsa"],
29                 ConfirmBeforeUse: true,
30                 LifetimeSecs:     3600,
31         }); err != nil {
32                 t.Fatalf("Error adding key with constraints: %s", err)
33         }
34         pub := testPublicKeys["dsa"]
35
36         sess, err := conn.NewSession()
37         if err != nil {
38                 t.Fatalf("NewSession: %v", err)
39         }
40         if err := agent.RequestAgentForwarding(sess); err != nil {
41                 t.Fatalf("RequestAgentForwarding: %v", err)
42         }
43
44         if err := agent.ForwardToAgent(conn, keyring); err != nil {
45                 t.Fatalf("SetupForwardKeyring: %v", err)
46         }
47         out, err := sess.CombinedOutput("ssh-add -L")
48         if err != nil {
49                 t.Fatalf("running ssh-add: %v, out %s", err, out)
50         }
51         key, _, _, _, err := ssh.ParseAuthorizedKey(out)
52         if err != nil {
53                 t.Fatalf("ParseAuthorizedKey(%q): %v", out, err)
54         }
55
56         if !bytes.Equal(key.Marshal(), pub.Marshal()) {
57                 t.Fatalf("got key %s, want %s", ssh.MarshalAuthorizedKey(key), ssh.MarshalAuthorizedKey(pub))
58         }
59 }