NIP-55 definisce come le app Android richiedono operazioni di firma e cifratura a un’applicazione signer separata. Dà ai client Android un’alternativa nativa alle estensioni del browser e ai bunker remoti.

Come funziona

NIP-55 usa due meccanismi Android:

  • Intent per flussi in foreground con approvazione esplicita dell’utente
  • Content resolver per flussi in background dopo che l’utente ha concesso un permesso persistente

Il normale flusso di connessione inizia con get_public_key. Il signer restituisce sia la pubkey dell’utente sia il nome del pacchetto del signer, e il client deve memorizzarli entrambi in cache. Ripetere get_public_key in loop di background è un errore di implementazione comune contro cui la specifica mette in guardia in modo esplicito.

Operazioni principali

  • get_public_key - Recupera la pubkey dell’utente e il nome del pacchetto del signer
  • sign_event - Firma un evento Nostr
  • nip04_encrypt/decrypt - Cifra o decifra messaggi NIP-04
  • nip44_encrypt/decrypt - Cifra o decifra messaggi NIP-44
  • decrypt_zap_event - Decifra payload di eventi legati agli zap

Note su sicurezza e UX

NIP-55 mantiene le chiavi sul dispositivo, ma dipende comunque dai confini tra app Android e dalla gestione dei permessi del signer. Il supporto ai content resolver offre una UX molto più fluida rispetto a prompt ripetuti tramite intent, ma solo dopo che l’utente ha concesso un’autorizzazione duratura a quel client.

Per le web app su Android, NIP-55 è meno ergonomico di NIP-46. I flussi basati sul browser non possono ricevere risposte dirette in background come fanno le app Android native, quindi molte implementazioni ricadono su callback URL, trasferimento tramite clipboard o incolla manuale.


Fonti principali:

Citato in:

Vedi anche: