feat(admin): build out the Encryption & keys page #350
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "enc-page"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The page carrying the strongest claim in the product — Swisscairn holds nothing and can decrypt nothing — rendered three unlabelled
Label: valuelines. It was never in any admin slice, so it also never appeared on the deferred list; it fell through the gap between "done" and "known missing".Backend
GET /api/v1/admin/encryptionreports custody, algorithm, storage location, and the public half of the recovery and retained identities.encryptionPayloadis a pure function, so the assertion that matters — that no secret key material can reach the wire — has a total surface to inspect without an HTTP harness.main.goresolves the public halves at boot, where the secret ones already are, so nothing downstream ever holds one.encrypt.RecipientStringis new:age.Recipientis an interface with noStringmethod, so rendering the public half needs the flavour switch, and it belongs beside the one that already exists for the secret half.Frontend
Custody — who can decrypt this: the sovereignty claim, algorithm with the FIPS 203 rationale, custody mode (all three render), storage location, scope, and in-transit.
Recovery — what is possible without them, plus three additions the mockup review asked for:
Retained identityrow, so the single legacy slot is visible on the page rather than folded into a doc;To rotatestates that rotation is not retroactive, rather than implying it with advice.Rotation stays absent by design, consistent with the existing copy: the page says where the procedure lives instead of offering a control that could lock an operator out of their own files.
Verification
go build ./...,go vet,go test ./internal/api/... ./internal/storage/encrypt/...all pass. All 56 new i18n keys carry four languages, and everyt()call in the renderer resolves — a missing key would otherwise render its own name.Follow-ups, deliberately not here
.noteboxwith no danger styling; adding a variant means new CSS across five themes and belongs with design.encRotateHintnames the handbook path rather than linking, because the docs site is still preview-gated (#26 / #109). Worth converting to a link when it goes live.gofmt-dirty onmain:internal/config/groups_test.go,internal/peering/client.go,internal/peering/sender.go,internal/storage/scope/scope_appowned_test.go.Related: #348, #349.