Host-side capsule packager and marketplace index tool for NONOS
  • Rust 76.4%
  • Makefile 23.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
eKisNonos 428ded0a71 capsule: the enrollment builder asserts manifests, never verifies them
The marketplace index pulls tool manifests into the binary build
graph, and the reuse verification then refused every fresh rebuild
against the enrollment those very bytes exist to replace. Under
NONOS_ENROLL_BUILD the committed manifest must still exist for its
consumers, but no measurement runs; the ceremony that follows is
where the new bytes get their binding. Production verification lanes
are unchanged.
2026-09-03 13:57:29 +02:00
.github/workflows ci: rustfmt the tree and gate on formatting 2026-06-06 13:39:01 +02:00
docs docs: the capsule anatomy and the two trust modes 2026-09-03 13:49:54 +02:00
src mk: wrap hex20 helper to satisfy the rustfmt gate 2026-06-07 20:46:34 +02:00
.gitignore build: ignore target/ artifacts 2026-05-21 01:25:17 +02:00
capsule.mk capsule: the enrollment builder asserts manifests, never verifies them 2026-09-03 13:57:29 +02:00
Cargo.lock mk: prove and verify per-capsule attestation in the build 2026-06-07 20:40:09 +02:00
Cargo.toml capsule: wire transparent attestation artifacts 2026-06-26 12:15:01 +02:00
README.md docs: a real README 2026-09-03 13:29:28 +02:00

nonos-mk

The shared build machinery for NONOS capsules. The kernel repository's top-level Makefile includes one Capsule.mk per capsule, and each of those includes capsule.mk from here, which materializes the standard target set for that capsule: build, sign, verify, and key checks.

What a capsule declares

A Capsule.mk is a dozen variables: slug, service handle, namespace, endpoints, the required capability mask, and the directory. Everything else, the cargo invocation, the certificate and manifest rules, the attestation trailer dependency, the per-capsule verify target, comes from the shared macro so all capsules are built and proven the same way. A capsule cannot opt out of verification by writing its own rules.

Two trust modes

The default mode is the signing flow: certificates and manifests are produced under the owner's seeds and verified immediately after.

Under NONOS_TRUST_REUSE=1 nothing signs. The committed artifacts are asserted to exist, verified under the baked policy, and every freshly built ELF must measure to its enrolled payload hash via capsule-sign verify-manifest --elf. This is the production pipeline mode: no rule demands a seed, and a capsule whose rebuild drifts from the enrolled measurement fails by name. The cure for that failure is a reproducible build, never a minted key.

License

AGPL-3.0, like the rest of NONOS.