keyfunc: deterministic keys, age encryption and child mnemonics from one mnemonic (spec) #1

Closed
clawbot wants to merge 6 commits from clawbot:bip85ssh into master

6 Commits

Author SHA1 Message Date
clawbot
7f7c9c67a0 keyfunc: age keys, age encrypt and decrypt, and derived mnemonics are in scope
Per sneak. The age commands derive the identity at the generic path and
encrypt or decrypt with it, always including the identity's own
recipient. The mnemonic command derives child mnemonics through BIP-85's
own mnemonic application.

Model: fable-5-1
2026-09-07 14:16:29 +00:00
clawbot
b2214ca5c5 keyfunc: the tool's name, chosen by sneak
The name says what the tool is: a key is a function of the mnemonic and
an index, computed when asked for and stored nowhere. Directory, module,
binary and environment variables take it.

Model: fable-5-1
2026-09-07 13:29:02 +00:00
clawbot
933fa164c1 bip85keys: generic derivation path, ssh to, new test vectors
Per sneak: the path carries no vendor id, since this is meant as a
standard others can follow. Application numbers follow BIP-85's own
spelling for RSA: SSH is 838372, age is 657169. The ssh subcommand that
runs the system ssh is now "to". Test vectors recomputed for the new
path. secret's age keys move to this path in a change there.

Model: fable-5-1
2026-09-06 22:06:27 +00:00
clawbot
8e24b0ae88 bip85keys: mnemonic only, and a command that produces it
Per sneak: no xprv input. The mnemonic comes from a shell command given
as a flag or an environment variable (for example `secret get foo`),
from an environment variable holding it, or from a no-echo prompt. The
file flag is dropped since the command covers it.

Model: fable-5-1
2026-09-06 14:35:30 +00:00
clawbot
8439d6bfad bip85keys: rename from bip85ssh and group commands by key type
The tool will cover more key types than SSH, so the directory, module
and binary become bip85keys and the commands are grouped by type:
"bip85keys ssh pub|priv|install|ssh" now, "bip85keys age pub|priv"
planned. The README states the age derivation (agehd's path in
sneak/secret) and that adding a type is one package plus one
subcommand. The SSH application id and everything else stay as before.

Model: fable-5-1
2026-09-06 14:29:22 +00:00
clawbot
d3daa14d54 bip85ssh: add spec for deterministic SSH keys from BIP-85
README for a new tool that derives ed25519 SSH key pairs from a BIP-39
mnemonic or xprv, using pkg/bip85 from sneak/secret with the same steps
as agehd. Path m/83696968'/592366788'/1822331379'/n'. Four commands:
pub, priv, install, ssh. The README is the spec; the code follows in
later commits.

Model: fable-5-1
2026-09-06 14:19:32 +00:00