mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Pad GPG Key ID with preceding zeroes (#20878)
This commit is contained in:
		@@ -63,6 +63,15 @@ func (key *GPGKey) AfterLoad(session *xorm.Session) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PaddedKeyID show KeyID padded to 16 characters
 | 
			
		||||
func (key *GPGKey) PaddedKeyID() string {
 | 
			
		||||
	if len(key.KeyID) > 15 {
 | 
			
		||||
		return key.KeyID
 | 
			
		||||
	}
 | 
			
		||||
	zeros := "0000000000000000"
 | 
			
		||||
	return zeros[0:16-len(key.KeyID)] + key.KeyID
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ListGPGKeys returns a list of public keys belongs to given user.
 | 
			
		||||
func ListGPGKeys(ctx context.Context, uid int64, listOptions db.ListOptions) ([]*GPGKey, error) {
 | 
			
		||||
	sess := db.GetEngine(ctx).Table(&GPGKey{}).Where("owner_id=? AND primary_key_id=''", uid)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ package user
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	asymkey_model "code.gitea.io/gitea/models/asymkey"
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
@@ -177,6 +178,12 @@ func VerifyUserGPGKey(ctx *context.APIContext) {
 | 
			
		||||
	token := asymkey_model.VerificationToken(ctx.Doer, 1)
 | 
			
		||||
	lastToken := asymkey_model.VerificationToken(ctx.Doer, 0)
 | 
			
		||||
 | 
			
		||||
	form.KeyID = strings.TrimLeft(form.KeyID, "0")
 | 
			
		||||
	if form.KeyID == "" {
 | 
			
		||||
		ctx.NotFound()
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err := asymkey_model.VerifyGPGKey(ctx.Doer.ID, form.KeyID, token, form.Signature)
 | 
			
		||||
	if err != nil && asymkey_model.IsErrGPGInvalidTokenSignature(err) {
 | 
			
		||||
		_, err = asymkey_model.VerifyGPGKey(ctx.Doer.ID, form.KeyID, lastToken, form.Signature)
 | 
			
		||||
 
 | 
			
		||||
@@ -222,7 +222,7 @@
 | 
			
		||||
								{{.Verification.SigningSSHKey.Fingerprint}}
 | 
			
		||||
							{{else}}
 | 
			
		||||
								<span class="ui text mr-3">{{.locale.Tr "repo.commits.gpg_key_id"}}:</span>
 | 
			
		||||
								{{.Verification.SigningKey.KeyID}}
 | 
			
		||||
								{{.Verification.SigningKey.PaddedKeyID}}
 | 
			
		||||
							{{end}}
 | 
			
		||||
						{{else}}
 | 
			
		||||
							{{svg "octicon-shield-lock" 16 "mr-3"}}
 | 
			
		||||
@@ -231,7 +231,7 @@
 | 
			
		||||
								{{.Verification.SigningSSHKey.Fingerprint}}
 | 
			
		||||
							{{else}}
 | 
			
		||||
								<span class="ui text mr-3 tooltip" data-content="{{.locale.Tr "gpg.default_key"}}">{{.locale.Tr "repo.commits.gpg_key_id"}}:</span>
 | 
			
		||||
								{{.Verification.SigningKey.KeyID}}
 | 
			
		||||
								{{.Verification.SigningKey.PaddedKeyID}}
 | 
			
		||||
							{{end}}
 | 
			
		||||
						{{end}}
 | 
			
		||||
					{{else if .Verification.Warning}}
 | 
			
		||||
@@ -241,14 +241,14 @@
 | 
			
		||||
							{{.Verification.SigningSSHKey.Fingerprint}}
 | 
			
		||||
						{{else}}
 | 
			
		||||
							<span class="ui text mr-3">{{.locale.Tr "repo.commits.gpg_key_id"}}:</span>
 | 
			
		||||
							{{.Verification.SigningKey.KeyID}}
 | 
			
		||||
							{{.Verification.SigningKey.PaddedKeyID}}
 | 
			
		||||
						{{end}}
 | 
			
		||||
					{{else}}
 | 
			
		||||
						{{if .Verification.SigningKey}}
 | 
			
		||||
							{{if ne .Verification.SigningKey.KeyID ""}}
 | 
			
		||||
								{{svg "octicon-shield" 16 "mr-3"}}
 | 
			
		||||
								<span class="ui text mr-3">{{.locale.Tr "repo.commits.gpg_key_id"}}:</span>
 | 
			
		||||
								{{.Verification.SigningKey.KeyID}}
 | 
			
		||||
								{{.Verification.SigningKey.PaddedKeyID}}
 | 
			
		||||
							{{end}}
 | 
			
		||||
						{{end}}
 | 
			
		||||
						{{if .Verification.SigningSSHKey}}
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
					<input readonly="" value="{{.TokenToSign}}">
 | 
			
		||||
					<div class="help">
 | 
			
		||||
						<p>{{.locale.Tr "settings.gpg_token_help"}}</p>
 | 
			
		||||
						<p><code>{{$.locale.Tr "settings.gpg_token_code" .TokenToSign .KeyID}}</code></p>
 | 
			
		||||
						<p><code>{{$.locale.Tr "settings.gpg_token_code" .TokenToSign .PaddedKeyID}}</code></p>
 | 
			
		||||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
				<div class="field">
 | 
			
		||||
@@ -64,8 +64,8 @@
 | 
			
		||||
						<span class="tooltip" data-content="{{$.locale.Tr "settings.gpg_key_matched_identities_long"}}">{{svg "octicon-mail"}} {{$.locale.Tr "settings.gpg_key_matched_identities"}} {{range .Emails}}<strong>{{.Email}} </strong>{{end}}</span>
 | 
			
		||||
					{{end}}
 | 
			
		||||
					<div class="print meta">
 | 
			
		||||
						<b>{{$.locale.Tr "settings.key_id"}}:</b> {{.KeyID}}
 | 
			
		||||
						<b>{{$.locale.Tr "settings.subkeys"}}:</b> {{range .SubsKey}} {{.KeyID}} {{end}}
 | 
			
		||||
						<b>{{$.locale.Tr "settings.key_id"}}:</b> {{.PaddedKeyID}}
 | 
			
		||||
						<b>{{$.locale.Tr "settings.subkeys"}}:</b> {{range .SubsKey}} {{.PaddedKeyID}} {{end}}
 | 
			
		||||
					</div>
 | 
			
		||||
					<div class="activity meta">
 | 
			
		||||
						<i>{{$.locale.Tr "settings.add_on"}} <span>{{.AddedUnix.FormatShort}}</span></i>
 | 
			
		||||
@@ -87,7 +87,7 @@
 | 
			
		||||
							<input readonly="" value="{{$.TokenToSign}}">
 | 
			
		||||
							<div class="help">
 | 
			
		||||
								<p>{{$.locale.Tr "settings.gpg_token_help"}}</p>
 | 
			
		||||
								<p><code>{{$.locale.Tr "settings.gpg_token_code" $.TokenToSign .KeyID}}</code></p>
 | 
			
		||||
								<p><code>{{$.locale.Tr "settings.gpg_token_code" $.TokenToSign .PaddedKeyID}}</code></p>
 | 
			
		||||
							</div>
 | 
			
		||||
							<br>
 | 
			
		||||
						</div>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user