[Feature]: Nostr Bunker #139

Closed
opened 2026-08-11 16:59:37 +00:00 by ssmithx · 1 comment
Collaborator

Problem

I don't know if I did this one, could findin search. Nostr bunker I can use remotely. Maybe need a browser plugin? Remote signer with companion app?

Proposed Solution

Maybe need a browser plugin? Remote signer with companion app?

Alternatives Considered

No response

Area

Web5 / Identity

### Problem I don't know if I did this one, could findin search. Nostr bunker I can use remotely. Maybe need a browser plugin? Remote signer with companion app? ### Proposed Solution Maybe need a browser plugin? Remote signer with companion app? ### Alternatives Considered _No response_ ### Area Web5 / Identity
chaum added the companion-agent label 2026-08-31 11:29:26 +00:00
Owner

Companion side shipped (branch companion/0.5.28, APK 0.5.28/vc48 — in on-device testing, ships with the release).

The phone is the NIP-46 bunker (remote signer):

  • Generate/import a nostr key (nsec/npub bech32), pair by scanning a nostrconnect:// QR (in-app scanner, or any QR app via the OS deep link), and every sign_event lands as a legible approve/deny card — kind label, content, tags, time. Nothing signs without a human tap.
  • Wire-faithful to rust-nostr's reference bunker (signer sends connect carrying the secret; NIP-44 v2 transport with NIP-04 receive fallback for older clients; kind-24133 responses). nip04/nip44 encrypt/decrypt are answered "not authorized" in v1; remembered-session auto-reconnect deferred (research-doc flow C).
  • Crypto verified against the official NIP-44 vectors (conversation/message keys, padded lengths, byte-exact encrypt vectors) and the BIP-340 reference sign vectors — the vectors caught one real bug (secp256k1 0.29's Keypair::public_key() is the 33-byte compressed key; x-only pubkeys must go through .x_only_public_key().0).
  • End-to-end harness that plays the node's client role until node-side exists: Android/tools/nip46-test-client.py (independent pure-Python BIP-340 verify of the phone's signature).

Code: Android/rust/archy-fips-core/src/nostr.rs (+ NativeCore JNI), nostr/BunkerManager.kt + NostrSignerPreferences.kt, ui/components/SignerSection.kt. Doc: docs/companion-nip46-remote-signer.md (includes the one conscious deviation: incoming events aren't sig-verified before decrypt, matching the reference signer — the NIP-44 MAC is the gate).

Node-side bunker hosting / login flow stays roadmap per the issue split.

Companion side shipped (branch `companion/0.5.28`, APK 0.5.28/vc48 — in on-device testing, ships with the release). The phone **is** the NIP-46 bunker (remote signer): - Generate/import a nostr key (nsec/npub bech32), pair by scanning a `nostrconnect://` QR (in-app scanner, or any QR app via the OS deep link), and every `sign_event` lands as a legible **approve/deny card** — kind label, content, tags, time. Nothing signs without a human tap. - Wire-faithful to rust-nostr's reference bunker (signer sends `connect` carrying the secret; NIP-44 v2 transport with NIP-04 receive fallback for older clients; kind-24133 responses). `nip04/nip44 encrypt/decrypt` are answered "not authorized" in v1; remembered-session auto-reconnect deferred (research-doc flow C). - Crypto verified against the official NIP-44 vectors (conversation/message keys, padded lengths, byte-exact encrypt vectors) and the BIP-340 reference sign vectors — the vectors caught one real bug (secp256k1 0.29's `Keypair::public_key()` is the 33-byte compressed key; x-only pubkeys must go through `.x_only_public_key().0`). - End-to-end harness that plays the node's client role until node-side exists: `Android/tools/nip46-test-client.py` (independent pure-Python BIP-340 verify of the phone's signature). Code: `Android/rust/archy-fips-core/src/nostr.rs` (+ `NativeCore` JNI), `nostr/BunkerManager.kt` + `NostrSignerPreferences.kt`, `ui/components/SignerSection.kt`. Doc: `docs/companion-nip46-remote-signer.md` (includes the one conscious deviation: incoming events aren't sig-verified before decrypt, matching the reference signer — the NIP-44 MAC is the gate). Node-side bunker hosting / login flow stays roadmap per the issue split.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: lfg2025/archy#139