NIP-55: Android Signer Application
NIP-55 definiert, wie Android-Apps Signing- und Verschlüsselungsoperationen von einer separaten Signer-Anwendung anfordern. Damit erhalten Android-Clients eine native Alternative zu Browser-Extensions und entfernten Bunkern.
Funktionsweise
NIP-55 verwendet zwei Android-Mechanismen:
- Intents für Vordergrund-Flows mit expliziter Zustimmung des Nutzers
- Content resolvers für Hintergrund-Flows, nachdem der Nutzer eine dauerhafte Berechtigung erteilt hat
Der übliche Verbindungsablauf beginnt mit get_public_key. Der Signer gibt sowohl den pubkey des Nutzers als auch den Package-Namen des Signers zurück, und der Client soll beides cachen. get_public_key in Hintergrundschleifen zu wiederholen ist ein häufiger Implementierungsfehler, vor dem die Spezifikation ausdrücklich warnt.
Wichtige Operationen
- get_public_key - Den pubkey des Nutzers und den Package-Namen des Signers abrufen
- sign_event - Ein Nostr-Event signieren
- nip04_encrypt/decrypt - NIP-04-Nachrichten ver- oder entschlüsseln
- nip44_encrypt/decrypt - NIP-44-Nachrichten ver- oder entschlüsseln
- decrypt_zap_event - Zap-bezogene Event-Payloads entschlüsseln
Sicherheits- und UX-Hinweise
NIP-55 hält Keys auf dem Gerät, hängt aber weiterhin von Android-App-Grenzen und der Berechtigungsverwaltung des Signers ab. Unterstützung für Content Resolvers liefert eine deutlich glattere UX als wiederholte Intent-Prompts, aber erst nachdem der Nutzer diesem Client eine dauerhafte Freigabe erteilt hat.
Für Web-Apps auf Android ist NIP-55 weniger ergonomisch als NIP-46. Browser-basierte Flows können keine direkten Hintergrundantworten erhalten wie native Android-Apps, deshalb fallen viele Implementierungen auf Callback-URLs, Zwischenablage oder manuelles Einfügen zurück.
Primärquellen:
Erwähnt in:
- Newsletter #1: Releases
- Newsletter #2: News
- Newsletter #2: NIP Updates
- Newsletter #3: December Recap
- Newsletter #4: NIP Updates
- Newsletter #11: NIP Deep Dive
- Newsletter #13: Samizdat v1.0.0-alpha
Siehe auch: