nips/07.md
Vivek Ganesan 9bf8bb0054
Update 07.md
Implemented review inputs
2023-05-16 04:05:24 +05:30

1.9 KiB

NIP-07

window.nostr capability for web browsers

draft optional author:fiatjaf

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: Event): 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.getRelays(): { [url: string]: {read: boolean, write: boolean} } // returns a basic map of relay urls to relay policies
async window.nostr.nip04.encrypt(pubkey, plaintext): string // returns ciphertext and iv as specified in nip-04
async window.nostr.nip04.decrypt(pubkey, ciphertext): string // takes ciphertext and iv as specified in nip-04

Recommendation to Implementers

When window.nostr is injected by a browser extension, it may not be fully available until a certain point in the page's lifecycle. Hence, it is a good idea to invoke the first window.nostr based functionality after a user-action on the web page (like a button click), and not during the page load.

Calling the window.nostr based methods during the page load runs the risk of intermittent issues due to race conditions between the client page's script and the extension's script

Implementation