Skip to content

feat(TC-887): at-rest key escrow crate - #513

Draft
samgbafa wants to merge 2 commits into
mainfrom
skgbafa/tc-887-r1-escrow-crate
Draft

samgbafa wants to merge 2 commits into
mainfrom
skgbafa/tc-887-r1-escrow-crate

Conversation

@samgbafa

@samgbafa samgbafa commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

TC-887. First PR of the refreshed at-rest stack. Replaces the crate part of #325.

What

  • Adds the tinycloud-at-rest-escrow workspace crate, unchanged from feat(TC-887): at-rest key escrow crate and ceremony CLI #325 (ca6bfb3): 2-of-3 Shamir shares of the at-rest root key sealed to pinned age recipients, the bundle and its fingerprint, the verification record, the recovery identity, and the strict app-compose reader.
  • Workspace member, Dockerfile COPY, release-plz entry (release = false, publish = false), and Cargo.lock additions only (no existing package version moves).

Not here

Stack

  1. this PR (from feat(TC-887): at-rest key escrow crate and ceremony CLI #325)
  2. keyring, key store and migration (from feat(TC-887): at-rest keyring, key store and migration #326)
  3. node wiring (from feat(TC-887): node wiring for at-rest keys and escrow recovery #327)
    4-6. sealed KV block storage (from feat(TC-887): sealed KV block helpers and plaintext sizes by space tag #329, feat(TC-887): seal KV blocks in the FileSystem store; prepare writes before the invoke lock #333, feat(TC-887): seal KV blocks in the S3 store (S3c, stacked on #333) #336)
  4. sealed SQL artifacts

Verification

  • cargo test --locked -p tinycloud-at-rest-escrow: 33 passed
  • cargo clippy --locked -p tinycloud-at-rest-escrow --all-targets with -Dwarnings: clean
  • cargo fmt --all -- --check: clean

Adds tinycloud-at-rest-escrow (2-of-3 Shamir shares of the at-rest root key,
sealed to pinned age recipients; bundle, fingerprint, verification record,
recovery identity and strict app-compose reading). Taken unchanged from #325;
the ceremony CLI from #325 stays on that branch for the hardware-key slice.

The production compose comment is made ASCII-only so the strict compose
reader accepts the file (its test reads it).
The compose file is pinned by its template hash, so the escrow crate no
longer reads it in a test; checking the production compose against the
strict reader belongs with the change that configures at-rest in it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant