Skip to content

verify: content against manifest runtime key; end-to-end example#10

Merged
samjanny merged 1 commit into
mainfrom
feat/example-end-to-end
Jun 3, 2026
Merged

verify: content against manifest runtime key; end-to-end example#10
samjanny merged 1 commit into
mainfrom
feat/example-end-to-end

Conversation

@samjanny
Copy link
Copy Markdown
Owner

@samjanny samjanny commented Jun 3, 2026

Acts on review feedback that the blog example stopped before showing Entangled's real value - the manifest -> runtime key -> content relationship - and that 'verify' could not actually verify the content.

verify: add --expected-runtime-pubkey. A content document is signed by a runtime key, but only the manifest declares which runtime key is authorized (its canary.runtime_pubkey). Pass that key and the content (or transaction) signature is checked against it; without it, the prior behavior holds, now with a note pointing at the flag.

example: extend examples/blog into an end-to-end site. Add manifest.unsigned.json and the signed manifest.json, and rewrite the README to walk the whole flow - derive the three role keys, convert and sign the content, sign the manifest, then verify the manifest from its onion (signature, canary, origin binding -> accept, canary Fresh) and verify the content against the manifest's runtime key (-> accept). The README explains why the content needs the manifest.

The keygen quickstart is simplified (no shell-magic fallback). All four example .json files regenerate byte for byte from the documented commands, which were run verbatim to confirm. fmt, clippy -D warnings, build, and test green with --locked.

…example

A content document is signed by a runtime key, but only the manifest
declares which runtime key is authorized (its canary.runtime_pubkey), so
verifying a content document standalone could only report a signature
rejection. Add --expected-runtime-pubkey to verify: pass the manifest's
runtime key and the content (or transaction) signature is checked against
it. Without it the prior behavior holds, now with a note pointing at the
flag.

Extend examples/blog into an end-to-end site: add manifest.unsigned.json
and the signed manifest.json, and rewrite the README to walk the whole
flow - derive the three role keys, convert and sign the content, sign the
manifest, then verify the manifest from its onion (signature, canary,
origin binding) and verify the content against the manifest's runtime key.
Both verify steps accept. The README explains why the content needs the
manifest. All four example .json files regenerate byte for byte from the
documented commands, which were run verbatim to confirm.
@samjanny samjanny merged commit 8e246e1 into main Jun 3, 2026
6 checks passed
@samjanny samjanny deleted the feat/example-end-to-end branch June 3, 2026 13:54
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