saphan ceremony
Owner team-birth: mint the ROOT (paper) and the intermediate (device-born) keys
saphan ceremony
Owner team-birth: mint the ROOT (paper) and the intermediate (device-born) keys
Subcommands
| Subcommand | What it does |
|---|---|
saphan ceremony intermediate | Mint the P-256 intermediate keypair and its self-signed CA cert |
saphan ceremony root | Guided ROOT ceremony: mint, paper-record (words), proof-of-capture, wipe |
saphan ceremony intermediate
Mint the P-256 intermediate keypair and its self-signed CA cert
Mints a fresh P-256 intermediate keypair (trust.MintDeviceKeypair — the raw 32-byte scalar format trust.LoadDeviceKeypair reads, exactly the format 'machine admit's --csr issuance path already expects) at --intermediate-key (default ~/.saphan/trust/intermediate.key) and a self-signed CA certificate over it at --intermediate-cert (default ~/.saphan/trust/intermediate.crt, valid --days from now, default 365). Production custody is TPM/Enclave (Version A) — this verb is the software-fallback / test-fixture path the same default paths already anchor for the root. Refuses to overwrite an existing key or cert at either path unless --force is given.
Options
| Option | Type | Default | Description |
|---|---|---|---|
--days | int | 365 | validity period of the self-signed CA cert, in days |
--force | bool | false | overwrite an existing intermediate key/cert at the target paths |
--intermediate-cert | string | unset | intermediate CA cert write path (default: ~/.saphan/trust/intermediate.crt) |
--intermediate-key | string | unset | intermediate private key write path (default: ~/.saphan/trust/intermediate.key) |
saphan ceremony root
Guided ROOT ceremony: mint, paper-record (words), proof-of-capture, wipe
Mints a fresh ed25519 ROOT keypair (trust.MintKeypair, O_EXCL — refuses to clobber an existing root.key at --out-dir), renders it as a numbered word list against the embedded BIP39-class dictionary (the paper record — write these words on paper, one per numbered blank), and then runs an interactive proof-of-capture: the words are read back (from the paper, by a witness — not from the screen) and compared position by position against the reference. A read-back that does not match refuses by name (ceremony-capture-mismatch) and leaves every file in place — "do NOT wipe" — for correction and a re-run. Only after the read-back matches exactly does this verb wipe root.key, its .pub sibling, and the word-list file from disk; the paper is then the only surviving copy. --readback-file feeds the read-back non-interactively (scripted/CI rehearsal against a THROWAWAY key — refuses by name, ceremony-readback-self-referential, when it names this same ceremony's own word-list file: proof-of-capture must come from a transcription, never from the artifact the ceremony just wrote itself); without it, the read-back is read from stdin. --yes accepts the non-secret air-gap/witness confirmation banner without prompting — it never skips the read-back check itself, which always runs.
Options
| Option | Type | Default | Description |
|---|---|---|---|
--no-qr | bool | false | accepted for forward-compat; inert — this build has no QR renderer to skip (word list only, with or without this flag) |
--out-dir | string | . | directory for root.key / root-words.txt during the ceremony (wiped on a successful proof-of-capture) |
--readback-file | string | unset | read the proof-of-capture read-back from this file instead of stdin |
--yes | bool | false | accept the air-gap/witness confirmation banner non-interactively (never skips proof-of-capture) |