diff --git a/N1.md b/N1.md index 904c7930..f49137f1 100644 --- a/N1.md +++ b/N1.md @@ -208,6 +208,48 @@ Supported methods are described in repeated result tags using the following sche } ``` -## TODO +## Encrypted Requests and Responses -Work out a protocol, for encrypted requests and responses, it will be similar to NIP-17 using NIP-59 Giftwraps, but an implementation is still WIP. +To provide end-to-end privacy and authenticated RPC over Nostr, NRPC requests and responses can be sent as rumors sealed by the sender, then giftwrapped for transport. + +### Event Kinds + +- Rumor Request: kind 68 (unsigned) + +- Rumor Response: kind 69 (unsigned) + +- Seal: kind 25 + +- Wrap: kind 21169 (signed by an ephemeral key, NIP-59 style) + +### Flow + +- Caller creates a rumor request (kind 68). + +- Caller encrypts that rumor into the content of a seal event, and signs the seal with their real pubkey. The callee can later verify who it actually came from. + +- Encrypt the seal into a giftwrap (21169) using an ephemeral key. + +- Request giftwrap tags: ["p", ""] + +- Callee decrypts giftwrap → verifies seal signature → extracts rumor → processes. + +- Callee builds a rumor response (69), seals it with their real pubkey, and publishes it inside a giftwrap (21169). + +- Response giftwrap tags: ["e", ""] + +### Example Response Event + +```json +{ + "kind": 21169, + "content": "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", + "pubkey": "51e431948eb9827328d087ad93b7235a0a8e552853a53101593fdbaa569c5f2d", + "tags": [ + ["e", "d02b941a1ffdcf6c60d5100015805607020c651b784f3a795432c5bfa5b5d94d"] + ], + "created_at": 1758712092, + "id": "6c41facfef2b90fd6531de04b64f53e1ccd688f2b2e25a2931878bd916fded13", + "sig": "b6c0daf9607083dd921771812f7a0cb497dd35dc8c50c6cd338475ce63fa87a01397b0902df0682cbf914d5100545311ca70dd7befb6ea4b546d90331fba960a" +} +```