diff --git a/docs/SEED-VERIFICATION.md b/docs/SEED-VERIFICATION.md index b7b5face..8d52c134 100644 --- a/docs/SEED-VERIFICATION.md +++ b/docs/SEED-VERIFICATION.md @@ -19,6 +19,9 @@ PBKDF2-HMAC-SHA512 (2048 rounds, salt = "mnemonic") +-- HKDF-SHA256 (info="archipelago/nostr-node/secp256k1/v1") | --> Node Nostr key --> npub1... | + +-- HKDF-SHA256 (info="archipelago/fips/secp256k1/v1") + | --> FIPS mesh transport key --> npub1... + | +-- HKDF-SHA256 (info="archipelago/identity/{i}/ed25519/v1") | --> Identity[i] Ed25519 --> did:key:z... | @@ -265,6 +268,20 @@ def main(): print(f" nsec: {bech32_encode('nsec', node_nostr_priv)}") print(f" npub: {bech32_encode('npub', node_nostr_pub)}") + # ── 2b. FIPS mesh transport key ───────────────────────────────────── + + print() + print("-" * W) + print(" 2b. FIPS MESH TRANSPORT KEY") + print(f" HKDF-SHA256(seed, info='archipelago/fips/secp256k1/v1')") + print("-" * W) + + fips_priv = hkdf_sha256(seed, b"archipelago/fips/secp256k1/v1") + fips_pub = secp256k1_xonly(fips_priv) + + print(f" X-only: {fips_pub.hex()}") + print(f" npub: {bech32_encode('npub', fips_pub)}") + # ── 3. Identity[0..2] Ed25519 + DID ───────────────────────────────── print() @@ -324,10 +341,12 @@ def main(): print() print("=" * W) print(" Compare these values with your Archipelago node:") - print(" UI: Settings > Identity") - print(" SSH: xxd -p /var/lib/archipelago/identity/node_key.pub") - print(" RPC: curl -s http:///api/rpc \\") - print(" -d '{\"method\":\"identity.get-node\"}' | jq .") + print(" SSH: xxd -p /var/lib/archipelago/identity/node_key.pub (section 1)") + print(" cat /var/lib/archipelago/identity/nostr_pubkey (section 2)") + print(" RPC: curl -s -b jar.txt http:///rpc/v1 \\") + print(" -H 'Content-Type: application/json' \\") + print(" -d '{\"method\":\"node.did\"}' | jq .") + print(" ...and {\"method\":\"node.nostr-pubkey\"} for the npub") print("=" * W) print()