Skip to content

Commit b4e31fe

Browse files
author
Heiko Besemann
committed
fix(asymkey): verify token + CRLF input
Window-based shells will add a CRLF when piping the token into ssh-keygen command resulting in verification error. This resolves go-gitea#21527.
1 parent 4bf5653 commit b4e31fe

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

models/asymkey/ssh_key_verify.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ func VerifySSHKey(ctx context.Context, ownerID int64, fingerprint, token, signat
3030
return "", ErrKeyNotExist{}
3131
}
3232

33-
if err := sshsig.Verify(bytes.NewBuffer([]byte(token)), []byte(signature), []byte(key.Content), "gitea"); err != nil {
33+
// edge case for Windows based shells that will add CR LF if piped to ssh-keygen command
34+
errcrlf := sshsig.Verify(bytes.NewBuffer([]byte(token+"\r\n")), []byte(signature), []byte(key.Content), "gitea")
35+
if err := sshsig.Verify(bytes.NewBuffer([]byte(token)), []byte(signature), []byte(key.Content), "gitea"); err != nil && errcrlf != nil {
3436
log.Error("Unable to validate token signature. Error: %v", err)
3537
return "", ErrSSHInvalidTokenSignature{
3638
Fingerprint: key.Fingerprint,

0 commit comments

Comments
 (0)