← Todos los NIPs

NIP-07

Capacidad window.nostr para navegadores web

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.

De un vistazo

Estado
En uso, pero todavía puede cambiar.
Último cambio
14 feb 2025

Pruébalo

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.

Cómo funciona este NIP

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.

Quién hace qué

Quién hace qué
TúApp webExtensión firmante
Paso 1 de 8

Listo. Presiona reproducir o avanza un paso para enviar el primer mensaje.

Versión en texto
#DeParaMensaje
1App webApp webLa app comprueba el objeto antes de ofrecer "iniciar sesión con la extensión".
2App webExtensión firmanteLa app pregunta quién eres.
3Extensión firmanteTúLa extensión te pregunta si este sitio puede usar tu clave.
4Extensión firmanteApp webLa extensión devuelve la pubkey en hex.
5App webExtensión firmanteLa app entrega una plantilla sin firmar.
6Extensión firmanteApp webpubkey, id y sig quedan completados; la app ya puede publicarlo.
7App webExtensión firmanteOpcional: la app pide el texto cifrado de un DM.

En el curso

Se basa en

Ver también

Especificación

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

Leer la especificación189 palabras, citadas del repositorio 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

Recommendation to Extension Authors

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.

Implementation

See https://github.com/aljazceru/awesome-nostr#nip-07-browser-extensions.