aboutsummaryrefslogtreecommitdiff
path: root/ssh/client_test.go
diff options
context:
space:
mode:
authorTugdual Saunier <tugdual.saunier@gmail.com>2017-09-21 10:41:56 -0700
committerHan-Wen Nienhuys <hanwen@google.com>2017-11-13 21:34:09 +0000
commit9f005a07e0d31d45e6656d241bb5c0f2efd4bc94 (patch)
treea67aad87c874abb2a8a4a881e7b4a4d67dc989db /ssh/client_test.go
parent6a293f2d4b14b8e6d3f0539e383f6d0d30fce3fd (diff)
downloadgo-x-crypto-9f005a07e0d31d45e6656d241bb5c0f2efd4bc94.tar.xz
ssh: add support for banners
According to RFC 4252 section 5.4, the banner is sent between the ssh-connection request and responding to user authentication. Original support for server sending banner by joshua stein <jcs@jcs.org> Fixes golang/go#19567 Change-Id: I729b3c8e5fd2c0068609d1590b61e92f40d87ea4 Reviewed-on: https://go-review.googlesource.com/71790 Run-TryBot: Han-Wen Nienhuys <hanwen@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Han-Wen Nienhuys <hanwen@google.com>
Diffstat (limited to 'ssh/client_test.go')
-rw-r--r--ssh/client_test.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/ssh/client_test.go b/ssh/client_test.go
index ccf5607..9dbe042 100644
--- a/ssh/client_test.go
+++ b/ssh/client_test.go
@@ -79,3 +79,41 @@ func TestHostKeyCheck(t *testing.T) {
}
}
}
+
+func TestBannerCallback(t *testing.T) {
+ c1, c2, err := netPipe()
+ if err != nil {
+ t.Fatalf("netPipe: %v", err)
+ }
+ defer c1.Close()
+ defer c2.Close()
+
+ serverConf := &ServerConfig{
+ NoClientAuth: true,
+ BannerCallback: func(conn ConnMetadata) string {
+ return "Hello World"
+ },
+ }
+ serverConf.AddHostKey(testSigners["rsa"])
+ go NewServerConn(c1, serverConf)
+
+ var receivedBanner string
+ clientConf := ClientConfig{
+ User: "user",
+ HostKeyCallback: InsecureIgnoreHostKey(),
+ BannerCallback: func(message string) error {
+ receivedBanner = message
+ return nil
+ },
+ }
+
+ _, _, _, err = NewClientConn(c2, "", &clientConf)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ expected := "Hello World"
+ if receivedBanner != expected {
+ t.Fatalf("got %s; want %s", receivedBanner, expected)
+ }
+}