Stop vault creation when a vault's metadata cannot be read (closes #140)
check / check (push) Waiting to run

GetNextDerivationIndex passed over a vault whose vault-metadata.json could
not be read or parsed, so the next vault made from the same mnemonic could
get that vault's derivation index and so the same long-term key. It now
returns an error naming the file, and vault create, vault import and init
stop before writing anything. A vault directory with no metadata file is
still skipped.

The regression test breaks one vault's metadata, once with content that
does not parse and once with a test filesystem that fails to open it, and
requires CreateVault with the same mnemonic to fail, naming the file, and
leave no new vault.

Model: opus-5-5
This commit is contained in:
2026-10-14 22:36:57 +00:00
parent faf46d12ff
commit dad77ab8d3
3 changed files with 104 additions and 7 deletions
+5 -1
View File
@@ -531,7 +531,11 @@ secret decrypt encryption/mykey --input document.txt.age --output document.txt
### Vault Management
- **Derivation Index**: Each vault uses a unique derivation index from the
mnemonic, and thus a unique key pair
mnemonic, and thus a unique key pair; creating a vault or importing a mnemonic
fails, with an error naming the file, when any vault's `vault-metadata.json`
exists but cannot be read or parsed; a vault directory with no
`vault-metadata.json` is skipped, so the index it uses can be given to a new
vault
- **Public Key Hash**: Double SHA-256 hash of the vault's public key; the same
hash of the index-0 public key identifies vaults from the same mnemonic
- **Automatic Key Derivation**: When creating vaults with a mnemonic, keys are