mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-22 16:35:52 -05:00
ff1210fb56
The extension sets nostr.pubkey during initialization so as the client can instantly see if somebody is logged in or not. This allows the clients to detect if the user had revoked the permission for reading the pubkey, or changed to a different pubkey. All without nudging the user.
35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
NIP-07
|
|
======
|
|
|
|
`window.nostr` capability for web browsers
|
|
------------------------------------------
|
|
|
|
`draft` `optional`
|
|
|
|
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:
|
|
|
|
```
|
|
window.nostr.pubkey: string | null // variable set on page load to a public key or null if none authorized
|
|
async window.nostr.getPublicKey(): string // returns a public key as hex, sets `window.nostr.pubkey`, too.
|
|
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 three 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 (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.
|