You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
forgejo/models/asymkey
Leon Busch-George 7a8a4f5432
Prefer native parser for SSH public key parsing (#23798)
Without this patch, the setting SSH.StartBuiltinServer decides whether
the native (Go) implementation is used rather than calling 'ssh-keygen'.
It's possible for 'using ssh-keygen' and 'using the built-in server' to
be independent.
In fact, the gitea rootless container doesn't ship ssh-keygen and can be
configured to use the host's SSH server - which will cause the public
key parsing mechanism to break.

This commit changes the decision to be based on SSH.KeygenPath instead.
Any existing configurations with a custom KeygenPath set will continue
to function. The new default value of '' selects the native version. The
downside of this approach is that anyone who has relying on plain
'ssh-keygen' to have special properties will now be using the native
version instead.
I assume the exec-variant is only there because /x/crypto/ssh didn't
support ssh-ed25519 until 2016. I don't see any other reason for using
it so it might be an acceptable risk.

Fixes #23363

EDIT: this message was garbled when I tried to get the commit
description back in.. Trying to reconstruct it:

## ⚠️ BREAKING ⚠️ Users who don't have SSH.KeygenPath
explicitly set and rely on the ssh-keygen binary need to set
SSH.KeygenPath to 'ssh-keygen' in order to be able to continue using it
for public key parsing.

There was something else but I can't remember at the moment.

EDIT2: It was about `make test` and `make lint`. Can't get them to run.
To reproduce the issue, I installed `golang` in `docker.io/node:16` and
got:
```
...
go: mvdan.cc/xurls/v2@v2.4.0: unknown revision mvdan.cc/xurls/v2.4.0
go: gotest.tools/v3@v3.4.0: unknown revision gotest.tools/v3.4.0
...
go: gotest.tools/v3@v3.0.3: unknown revision gotest.tools/v3.0.3
...
go: error loading module requirements
```

Signed-off-by: Leon M. Busch-George <leon@georgemail.eu>
1 year ago
..
error.go Improve error report when user passes a private key (#22726) 1 year ago
gpg_key.go Fix key signature error page (#22229) 2 years ago
gpg_key_add.go Implement FSFE REUSE for golang files (#21840) 2 years ago
gpg_key_commit_verification.go Add context cache as a request level cache (#22294) 1 year ago
gpg_key_common.go Implement FSFE REUSE for golang files (#21840) 2 years ago
gpg_key_import.go Increase Content field size of gpg_key_import to MEDIUMTEXT (#22897) 1 year ago
gpg_key_test.go Implement FSFE REUSE for golang files (#21840) 2 years ago
gpg_key_verify.go Implement FSFE REUSE for golang files (#21840) 2 years ago
main_test.go Refactor the setting to make unit test easier (#22405) 1 year ago
ssh_key.go Improve utils of slices (#22379) 2 years ago
ssh_key_authorized_keys.go Implement FSFE REUSE for golang files (#21840) 2 years ago
ssh_key_authorized_principals.go Implement FSFE REUSE for golang files (#21840) 2 years ago
ssh_key_commit_verification.go Implement FSFE REUSE for golang files (#21840) 2 years ago
ssh_key_deploy.go Implement FSFE REUSE for golang files (#21840) 2 years ago
ssh_key_fingerprint.go Use ErrInvalidArgument in packages (#22268) 2 years ago
ssh_key_parse.go Prefer native parser for SSH public key parsing (#23798) 1 year ago
ssh_key_principals.go Use ErrInvalidArgument in packages (#22268) 2 years ago
ssh_key_test.go Prefer native parser for SSH public key parsing (#23798) 1 year ago
ssh_key_verify.go Implement FSFE REUSE for golang files (#21840) 2 years ago