Paso 1 de 5
Las claves se quedan en la extensión
Las apps web nunca tocan tu nsec. Se lo piden a la extensión, que te lo pregunta a ti.
NIP-07
BorradorComportamiento
Una extensión del navegador expone window.nostr para que los sitios web puedan obtener tu clave pública, firmar eventos y cifrar mensajes sin ver nunca tu clave secreta.
Edita el formulario o el JSON: ambos se mantienen sincronizados, la insignia indica si el resultado es válido y, al tocar cualquier campo, se explica qué hace.
Paso 1 de 5
Las apps web nunca tocan tu nsec. Se lo piden a la extensión, que te lo pregunta a ti.
Listo. Presiona reproducir o avanza un paso para enviar el primer mensaje.
| # | De | Para | Mensaje |
|---|---|---|---|
| 1 | App web | App web | La app comprueba el objeto antes de ofrecer "iniciar sesión con la extensión". |
| 2 | App web | Extensión firmante | La app pregunta quién eres. |
| 3 | Extensión firmante | Tú | La extensión te pregunta si este sitio puede usar tu clave. |
| 4 | Extensión firmante | App web | La extensión devuelve la pubkey en hex. |
| 5 | App web | Extensión firmante | La app entrega una plantilla sin firmar. |
| 6 | Extensión firmante | App web | pubkey, id y sig quedan completados; la app ya puede publicarlo. |
| 7 | App web | Extensión firmante | Opcional: la app pide el texto cifrado de un DM. |
signEvent devuelve un evento NIP-01.
window.nostr.nip44 cifra con NIP-44.
Firma remota a través de Nostr para apps fuera del navegador.
El equivalente como app firmante en Android.
El texto de las especificaciones se cita en inglés del repositorio nostr-protocol/nips. Nuestras explicaciones y la interfaz están traducidas. Código fuente en GitHub en el commit 0046368
The window.nostr object may be made available by web browsers or extensions and websites or web-apps may make use of it after checking its availability.
That object must define the following methods:
async window.nostr.getPublicKey(): string // returns a public key as hex
async window.nostr.signEvent(event: { created_at: number, kind: number, tags: string[][], content: string }): Event // takes an event object, adds `id`, `pubkey` and `sig` and returns it
Aside from these two basic above, the following functions can also be implemented optionally:
async window.nostr.nip04.encrypt(pubkey, plaintext): string // returns ciphertext and iv as specified in nip-04 (deprecated)
async window.nostr.nip04.decrypt(pubkey, ciphertext): string // takes ciphertext and iv as specified in nip-04 (deprecated)
async window.nostr.nip44.encrypt(pubkey, plaintext): string // returns ciphertext as specified in nip-44
async window.nostr.nip44.decrypt(pubkey, ciphertext): string // takes ciphertext as specified in nip-44
To make sure that the window.nostr is available to nostr clients on page load, the authors who create Chromium and Firefox extensions should load their scripts by specifying "run_at": "document_end" in the extension's manifest.
See https://github.com/aljazceru/awesome-nostr#nip-07-browser-extensions.