@@ -359,6 +359,43 @@ func funcMap(octicon OcticonResolver) template.FuncMap { |
| 359 | } | 359 | } |
| 360 | return m, nil | 360 | return m, nil |
| 361 | }, | 361 | }, |
| | 362 | + // verifiedReasonMessage maps a sigverify.Reason string to a |
| | 363 | + // short user-facing explanation. Used by the _verified_badge |
| | 364 | + // partial's popover. Accepts the Reason as a string so the |
| | 365 | + // template doesn't need a type assertion. |
| | 366 | + "verifiedReasonMessage": verifiedReasonMessage, |
| | 367 | + } |
| | 368 | +} |
| | 369 | + |
| | 370 | +// verifiedReasonMessage returns the popover body text for each |
| | 371 | +// non-valid verification reason. "unsigned" never reaches the |
| | 372 | +// popover (the badge isn't rendered at all in that case) so it's |
| | 373 | +// omitted. The strings are user-facing copy; keep them short and |
| | 374 | +// concrete. |
| | 375 | +func verifiedReasonMessage(reason any) string { |
| | 376 | + r, ok := reason.(string) |
| | 377 | + if !ok { |
| | 378 | + // The template might pass a typed sigverify.Reason; Stringer |
| | 379 | + // would surface the underlying string. Try fmt-style fallback. |
| | 380 | + r = fmt.Sprintf("%s", reason) |
| | 381 | + } |
| | 382 | + switch r { |
| | 383 | + case "unknown_key": |
| | 384 | + return "This commit was signed but the public key isn't registered with shithub." |
| | 385 | + case "bad_email": |
| | 386 | + return "The commit signature doesn't match any of the registered user's emails." |
| | 387 | + case "unverified_email": |
| | 388 | + return "The commit signature matches an email the user hasn't verified." |
| | 389 | + case "malformed_signature": |
| | 390 | + return "The commit's signature couldn't be parsed." |
| | 391 | + case "invalid": |
| | 392 | + return "The commit's signature failed cryptographic verification." |
| | 393 | + case "expired_key": |
| | 394 | + return "The signing key was expired when this commit was made." |
| | 395 | + case "not_signing_key": |
| | 396 | + return "The key that signed this commit isn't authorized for signing." |
| | 397 | + default: |
| | 398 | + return "This commit's signature couldn't be verified." |
| 362 | } | 399 | } |
| 363 | } | 400 | } |
| 364 | | 401 | |