summaryrefslogtreecommitdiffstats
path: root/models/ssh_key.go
diff options
context:
space:
mode:
authorGibheer <gibheer+github@zero-knowledge.org>2017-10-26 03:49:41 +0200
committerLunny Xiao <xiaolunwen@gmail.com>2017-10-26 09:49:41 +0800
commitbc8411098979da5599d314e982da2985e0bb29c2 (patch)
tree4a61bfa3a31a42baa78180ad2c86ddab167a0367 /models/ssh_key.go
parenteca05b09aa269dda1309ee77ac750e29e71c3fd3 (diff)
downloadgitea-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.
Diffstat (limited to 'models/ssh_key.go')
-rw-r--r--models/ssh_key.go10
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 {