Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/holger

examples/secure-update-gateway/README.md

Secure Update Gateway — examples

Sample configs and an executable end-to-end journey for the Holger Secure Update Gateway MVP. See docs/v1/secure-update-gateway-mvp.md (architecture), the threat model, and the operator guide for the full picture.

file what it is
trust-policy.ron holger.bundle-trust-policy/v1 — fingerprint-pinned two-person policy (replace the placeholder fingerprints).
intake-critical.ron Intake / review-side registry (Standard profile, authenticated writes; egress expected).
ot-critical-readonly.ron Protected OT node — Critical profile + ReadOnly mode + mTLS + a bundles raw store.
core-v1.json Illustrative core.json (the immutable candidate) with every schema field.
e2e-journey.sh Hermetic end-to-end journey (needs openssl + cargo); exits non-zero on any failed assertion.

Run the journey

examples/secure-update-gateway/e2e-journey.sh

It builds a firmware payload + SBOM, prepares a candidate, collects two distinct signed approvals, finalizes with a distinct release signer, verifies offline, carries the bundle through an untrusted staging dir, proves a one-byte mutation fails verification, imports into an empty protected store, proves an idempotent re-import and a rejected rollback, scrubs, backs up + verifies + restores, verifies the audit segments, and proves the protected binaries link no outbound HTTP client.

All keys/certs are generated on the spot — no production private keys are ever committed.