diff --git a/100.md b/100.md index fa723826..7c1b3271 100644 --- a/100.md +++ b/100.md @@ -6,6 +6,12 @@ This NIP defines how to do WebRTC communication over nostr ## Defining Rooms Rooms are essentially the space that you will be connected to. This must be defined by a `r` tag following the pubkey of the person you are connected to or some other identifier (maybe a lobby id for a joinable voice channel, etc.) +## Encryption +The `content` field and `r` tag of types `offer`, `answer`, and `candidate` should be encrypted, similarly to `NIP-04`. +Clients MUST listen for the `p` tag containing their pubkey so they know that event is intended for them + +⚠️ `content` FIELDS SHOULD BE JSON STRINGIFIED, AND THEN ENCRYPTED. ⚠️ + ### Broadcasting that you are present Announces that you are here, and ready to connect to others. The connection ID is inferred from the provided pubkey. @@ -15,7 +21,7 @@ The connection ID is inferred from the provided pubkey. "pubkey": "", "tags": [ ["type", "connect"], - ["r", ""] + ["r", ""] ] } ``` @@ -27,7 +33,7 @@ The connection ID is inferred from the provided pubkey. "pubkey": "<sender pubkey>", "tags": [ ["type", "disconnect"], - ["r", "<room id>"] + ["r", "<plaintext room id>"] ] } ``` @@ -41,7 +47,7 @@ Used when responding to a `type:connect`. Offering to connect to that peer. "tags": [ ["type", "offer"], ["p", "<reciever pubkey>"], - ["r", "<room id>"] + ["r", "<encrypted room id>"] ], "content": { "offer": "<offer>", @@ -58,7 +64,7 @@ Used when responding to a `type:connect`. Offering to connect to that peer. "tags": [ ["type", "answer"], ["p", "<reciever pubkey>"], - ["r", "<room id>"] + ["r", "<encrypted room id>"] ], "content": { "sdp": "<sdp>", @@ -75,7 +81,7 @@ Used when responding to a `type:connect`. Offering to connect to that peer. "tags": [ ["type", "candidate"], ["p", "<reciever pubkey>"], - ["r", "<room id>"] + ["r", "<encrypted room id>"] ], "content": { "candidate": "<sdp>", @@ -84,4 +90,4 @@ Used when responding to a `type:connect`. Offering to connect to that peer. } ``` -Essentially, just directly feed what comes out of the WebRTC functions straight into the `content` field. It makes things cleaner and easier. +Essentially, just directly feed what comes out of the WebRTC functions straight into the `content` field after encrypting it.