|
@@ -291,15 +291,6 @@ func (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error)
|
|
|
return perms, err
|
|
|
}
|
|
|
|
|
|
-func isAcceptableAlgo(algo string) bool {
|
|
|
- switch algo {
|
|
|
- case KeyAlgoRSA, KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoDSA, KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521, KeyAlgoSKECDSA256, KeyAlgoED25519, KeyAlgoSKED25519,
|
|
|
- CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoSKECDSA256v01, CertAlgoED25519v01, CertAlgoSKED25519v01:
|
|
|
- return true
|
|
|
- }
|
|
|
- return false
|
|
|
-}
|
|
|
-
|
|
|
func checkSourceAddress(addr net.Addr, sourceAddrs string) error {
|
|
|
if addr == nil {
|
|
|
return errors.New("ssh: no address known for client, but source-address match required")
|
|
@@ -514,7 +505,7 @@ userAuthLoop:
|
|
|
return nil, parseError(msgUserAuthRequest)
|
|
|
}
|
|
|
algo := string(algoBytes)
|
|
|
- if !isAcceptableAlgo(algo) {
|
|
|
+ if !contains(supportedPubKeyAuthAlgos, underlyingAlgo(algo)) {
|
|
|
authErr = fmt.Errorf("ssh: algorithm %q not accepted", algo)
|
|
|
break
|
|
|
}
|
|
@@ -572,7 +563,7 @@ userAuthLoop:
|
|
|
// algorithm name that corresponds to algo with
|
|
|
// sig.Format. This is usually the same, but
|
|
|
// for certs, the names differ.
|
|
|
- if !isAcceptableAlgo(sig.Format) {
|
|
|
+ if !contains(supportedPubKeyAuthAlgos, sig.Format) {
|
|
|
authErr = fmt.Errorf("ssh: algorithm %q not accepted", sig.Format)
|
|
|
break
|
|
|
}
|