@@ -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