diff options
author | Gibheer <gibheer+github@zero-knowledge.org> | 2017-10-26 03:49:41 +0200 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2017-10-26 09:49:41 +0800 |
commit | bc8411098979da5599d314e982da2985e0bb29c2 (patch) | |
tree | 4a61bfa3a31a42baa78180ad2c86ddab167a0367 | |
parent | eca05b09aa269dda1309ee77ac750e29e71c3fd3 (diff) | |
download | gitea-bc8411098979da5599d314e982da2985e0bb29c2.tar.gz gitea-bc8411098979da5599d314e982da2985e0bb29c2.zip |
don't check minimum key size when disabled (#1754)
* cleanup old comments for ed25519
These comments were added when x/crypto/ed25519 could not yet handle
ed25519. It does now, so it should be removed.
Also the key type is now replaced with the proper constant.
* move the minimum key size config before the check
This moves the actual config lookup before any check is done. This
avoids problems with calling to ssh-keygen which doesn't support the
expected output format and returning an error, when the check is disabled.
-rw-r--r-- | models/ssh_key.go | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/models/ssh_key.go b/models/ssh_key.go index 1cca47f565..15544efbc6 100644 --- a/models/ssh_key.go +++ b/models/ssh_key.go @@ -202,7 +202,6 @@ func SSHKeyGenParsePublicKey(key string) (string, int, error) { } // SSHNativeParsePublicKey extracts the key type and length using the golang SSH library. -// NOTE: ed25519 is not supported. func SSHNativeParsePublicKey(keyLine string) (string, int, error) { fields := strings.Fields(keyLine) if len(fields) < 2 { @@ -251,7 +250,7 @@ func SSHNativeParsePublicKey(keyLine string) (string, int, error) { return "ecdsa", 384, nil case ssh.KeyAlgoECDSA521: return "ecdsa", 521, nil - case "ssh-ed25519": // TODO: replace with ssh constant when available + case ssh.KeyAlgoED25519: return "ed25519", 256, nil } return "", 0, fmt.Errorf("unsupported key length detection for type: %s", pkey.Type()) @@ -277,6 +276,10 @@ func CheckPublicKeyString(content string) (_ string, err error) { // remove any unnecessary whitespace now content = strings.TrimSpace(content) + if !setting.SSH.MinimumKeySizeCheck { + return content, nil + } + var ( fnName string keyType string @@ -294,9 +297,6 @@ func CheckPublicKeyString(content string) (_ string, err error) { } log.Trace("Key info [native: %v]: %s-%d", setting.SSH.StartBuiltinServer, keyType, length) - if !setting.SSH.MinimumKeySizeCheck { - return content, nil - } if minLen, found := setting.SSH.MinimumKeySizes[keyType]; found && length >= minLen { return content, nil } else if found && length < minLen { |