@@ -103,7 +103,7 @@ require ( | |||||
github.com/yuin/goldmark v1.2.1 | github.com/yuin/goldmark v1.2.1 | ||||
github.com/yuin/goldmark-highlighting v0.0.0-20200307114337-60d527fdb691 | github.com/yuin/goldmark-highlighting v0.0.0-20200307114337-60d527fdb691 | ||||
github.com/yuin/goldmark-meta v0.0.0-20191126180153-f0638e958b60 | github.com/yuin/goldmark-meta v0.0.0-20191126180153-f0638e958b60 | ||||
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 | |||||
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de | |||||
golang.org/x/net v0.0.0-20200602114024-627f9648deb9 | golang.org/x/net v0.0.0-20200602114024-627f9648deb9 | ||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d | golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d | ||||
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 | golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 | ||||
@@ -711,8 +711,6 @@ github.com/yuin/goldmark v1.1.7/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec | |||||
github.com/yuin/goldmark v1.1.22/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.22/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
github.com/yuin/goldmark v1.1.25 h1:isv+Q6HQAmmL2Ofcmg8QauBmDPlUUnSoNhEcC940Rds= | github.com/yuin/goldmark v1.1.25 h1:isv+Q6HQAmmL2Ofcmg8QauBmDPlUUnSoNhEcC940Rds= | ||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
github.com/yuin/goldmark v1.1.32 h1:5tjfNdR2ki3yYQ842+eX2sQHeiwpKJ0RnHO4IYOc4V8= | |||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | |||||
github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM= | github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM= | ||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
github.com/yuin/goldmark-highlighting v0.0.0-20200307114337-60d527fdb691 h1:VWSxtAiQNh3zgHJpdpkpVYjTPqRE3P6UZCOPa1nRDio= | github.com/yuin/goldmark-highlighting v0.0.0-20200307114337-60d527fdb691 h1:VWSxtAiQNh3zgHJpdpkpVYjTPqRE3P6UZCOPa1nRDio= | ||||
@@ -750,8 +748,8 @@ golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8U | |||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 h1:xMPOj6Pz6UipU1wXLkrtqpHbR0AVFnyPEQq/wRWz9lM= | golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 h1:xMPOj6Pz6UipU1wXLkrtqpHbR0AVFnyPEQq/wRWz9lM= | ||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 h1:vEg9joUBmeBcK9iSJftGNf3coIG4HqZElCPehJsfAYM= | |||||
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | |||||
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de h1:ikNHVSjEfnvz6sxdSPCaPt572qowuyMDMJLLm3Db3ig= | |||||
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | |||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | ||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= | golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= | ||||
@@ -36,7 +36,7 @@ func (c *connection) clientAuthenticate(config *ClientConfig) error { | |||||
// during the authentication phase the client first attempts the "none" method | // during the authentication phase the client first attempts the "none" method | ||||
// then any untried methods suggested by the server. | // then any untried methods suggested by the server. | ||||
tried := make(map[string]bool) | |||||
var tried []string | |||||
var lastMethods []string | var lastMethods []string | ||||
sessionID := c.transport.getSessionID() | sessionID := c.transport.getSessionID() | ||||
@@ -49,7 +49,9 @@ func (c *connection) clientAuthenticate(config *ClientConfig) error { | |||||
// success | // success | ||||
return nil | return nil | ||||
} else if ok == authFailure { | } else if ok == authFailure { | ||||
tried[auth.method()] = true | |||||
if m := auth.method(); !contains(tried, m) { | |||||
tried = append(tried, m) | |||||
} | |||||
} | } | ||||
if methods == nil { | if methods == nil { | ||||
methods = lastMethods | methods = lastMethods | ||||
@@ -61,7 +63,7 @@ func (c *connection) clientAuthenticate(config *ClientConfig) error { | |||||
findNext: | findNext: | ||||
for _, a := range config.Auth { | for _, a := range config.Auth { | ||||
candidateMethod := a.method() | candidateMethod := a.method() | ||||
if tried[candidateMethod] { | |||||
if contains(tried, candidateMethod) { | |||||
continue | continue | ||||
} | } | ||||
for _, meth := range methods { | for _, meth := range methods { | ||||
@@ -72,16 +74,16 @@ func (c *connection) clientAuthenticate(config *ClientConfig) error { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
return fmt.Errorf("ssh: unable to authenticate, attempted methods %v, no supported methods remain", keys(tried)) | |||||
return fmt.Errorf("ssh: unable to authenticate, attempted methods %v, no supported methods remain", tried) | |||||
} | } | ||||
func keys(m map[string]bool) []string { | |||||
s := make([]string, 0, len(m)) | |||||
for key := range m { | |||||
s = append(s, key) | |||||
func contains(list []string, e string) bool { | |||||
for _, s := range list { | |||||
if s == e { | |||||
return true | |||||
} | |||||
} | } | ||||
return s | |||||
return false | |||||
} | } | ||||
// An AuthMethod represents an instance of an RFC 4252 authentication method. | // An AuthMethod represents an instance of an RFC 4252 authentication method. | ||||
@@ -741,7 +741,7 @@ go.mongodb.org/mongo-driver/bson/bsonrw | |||||
go.mongodb.org/mongo-driver/bson/bsontype | go.mongodb.org/mongo-driver/bson/bsontype | ||||
go.mongodb.org/mongo-driver/bson/primitive | go.mongodb.org/mongo-driver/bson/primitive | ||||
go.mongodb.org/mongo-driver/x/bsonx/bsoncore | go.mongodb.org/mongo-driver/x/bsonx/bsoncore | ||||
# golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 | |||||
# golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de | |||||
## explicit | ## explicit | ||||
golang.org/x/crypto/acme | golang.org/x/crypto/acme | ||||
golang.org/x/crypto/acme/autocert | golang.org/x/crypto/acme/autocert | ||||