Saphan StudioDocs
Reference/Command reference

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

saphan ceremony

Subcommands

SubcommandWhat it does
saphan ceremony intermediateMint the P-256 intermediate keypair and its self-signed CA cert
saphan ceremony rootGuided 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

saphan ceremony intermediate [flags]

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

OptionTypeDefaultDescription
--daysint365validity period of the self-signed CA cert, in days
--forceboolfalseoverwrite an existing intermediate key/cert at the target paths
--intermediate-certstringunsetintermediate CA cert write path (default: ~/.saphan/trust/intermediate.crt)
--intermediate-keystringunsetintermediate private key write path (default: ~/.saphan/trust/intermediate.key)

saphan ceremony root

Guided ROOT ceremony: mint, paper-record (words), proof-of-capture, wipe

saphan ceremony root [flags]

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

OptionTypeDefaultDescription
--no-qrboolfalseaccepted for forward-compat; inert — this build has no QR renderer to skip (word list only, with or without this flag)
--out-dirstring.directory for root.key / root-words.txt during the ceremony (wiped on a successful proof-of-capture)
--readback-filestringunsetread the proof-of-capture read-back from this file instead of stdin
--yesboolfalseaccept the air-gap/witness confirmation banner non-interactively (never skips proof-of-capture)

On this page