Skip to content

Commit ab13efd

Browse files
committed
Fix SSH signing key path will be displayed in the pull request UI
1 parent 0c6326e commit ab13efd

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

routers/web/repo/issue_view.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import (
88
"math/big"
99
"net/http"
1010
"net/url"
11+
"os"
1112
"sort"
1213
"strconv"
1314

1415
activities_model "code.gitea.io/gitea/models/activities"
16+
asymkey_model "code.gitea.io/gitea/models/asymkey"
1517
"code.gitea.io/gitea/models/db"
1618
git_model "code.gitea.io/gitea/models/git"
1719
issues_model "code.gitea.io/gitea/models/issues"
@@ -494,7 +496,24 @@ func preparePullViewSigning(ctx *context.Context, issue *issues_model.Issue) {
494496
if ctx.Doer != nil {
495497
sign, key, _, err := asymkey_service.SignMerge(ctx, pull, ctx.Doer, pull.BaseRepo.RepoPath(), pull.BaseBranch, pull.GetGitHeadRefName())
496498
ctx.Data["WillSign"] = sign
497-
ctx.Data["SigningKey"] = key
499+
switch key.Format {
500+
case git.SigningKeyFormatOpenPGP:
501+
ctx.Data["SigningKey"] = key.KeyID
502+
case git.SigningKeyFormatSSH:
503+
content, readErr := os.ReadFile(key.KeyID)
504+
if readErr != nil {
505+
log.Error("Error whilst reading public key of pr %d in repo %s. Error: %v", pull.ID, pull.BaseRepo.FullName(), readErr)
506+
ctx.Data["SigningKey"] = "Unknown"
507+
} else {
508+
var fingerprintErr error
509+
ctx.Data["SigningKey"], fingerprintErr = asymkey_model.CalcFingerprint(string(content))
510+
if fingerprintErr != nil {
511+
log.Error("Error whilst generating public key fingerprint of pr %d in repo %s. Error: %v", pull.ID, pull.BaseRepo.FullName(), fingerprintErr)
512+
} else {
513+
ctx.Data["SigningKey"] = "Unknown"
514+
}
515+
}
516+
}
498517
if err != nil {
499518
if asymkey_service.IsErrWontSign(err) {
500519
ctx.Data["WontSignReason"] = err.(*asymkey_service.ErrWontSign).Reason

0 commit comments

Comments
 (0)