diff --git a/clients/Blog-Client.md b/clients/Blog-Client.md index 6a30d375045b10d18f6de5ed1954358aa3654261..79f248fa41037202626c0996f36ce154ddb032fc 100644 --- a/clients/Blog-Client.md +++ b/clients/Blog-Client.md @@ -1,6 +1,6 @@ # Blog Client -The blog client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that synchronises blog posts among groups of devices. It is used in conjunction with the [blog sharing client](blog sharing client). +The blog client is a [BSP client](/protocols/BSP.md) that synchronises blog posts among groups of devices. It is used in conjunction with the [blog sharing client](blog sharing client). The creator of a blog is the only user who can post messages. Posts and comments from other blogs can be reblogged with optional comments. @@ -12,7 +12,7 @@ The client's identifier is `org.briarproject.briar.blog`. The major version is 0 ### Groups -Each blog is represented by a separate BSP group. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) with two elements: `author` (list) and `rss` (boolean). +Each blog is represented by a separate BSP group. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) with two elements: `author` (list) and `rss` (boolean). `author` is a list with three elements: `formatVersion` (int), `nickname` (string) and `publicKey` (raw). This identifies the user who publishes the blog. diff --git a/clients/Blog-Sharing-Client.md b/clients/Blog-Sharing-Client.md index 7b1bc4227fd50b8710d059948c8460eec29afc13..53b8b9ec88bde74f11b87d4fcd0c3b1dd7011caf 100644 --- a/clients/Blog-Sharing-Client.md +++ b/clients/Blog-Sharing-Client.md @@ -1,6 +1,6 @@ # Blog Sharing Client -The blog sharing client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that allows users to share blogs with their contacts, who may accept or decline the invitations. It is used in conjunction with the [blog client](blog client). +The blog sharing client is a [BSP client](/protocols/BSP.md) that allows users to share blogs with their contacts, who may accept or decline the invitations. It is used in conjunction with the [blog client](blog client). ### Identifier @@ -8,7 +8,7 @@ The client's identifier is `org.briarproject.briar.blog.sharing`. The major vers ### Groups -The client uses a separate BSP group for communicating with each contact. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. +The client uses a separate BSP group for communicating with each contact. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. ### Roles diff --git a/clients/Forum-Client.md b/clients/Forum-Client.md index e195e71b65b2f64f0fdb30504766606e5483cfc4..d1e0121e5e4dc6e17a0187ac804801122fb4e2c4 100644 --- a/clients/Forum-Client.md +++ b/clients/Forum-Client.md @@ -1,6 +1,6 @@ # Forum Client -The forum client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that synchronises forum posts among groups of devices. It is used in conjunction with the [forum sharing client](forum sharing client). +The forum client is a [BSP client](/protocols/BSP.md) that synchronises forum posts among groups of devices. It is used in conjunction with the [forum sharing client](forum sharing client). Any user who subscribes to a forum can post messages. Posts are signed by their authors. @@ -10,7 +10,7 @@ The client's identifier is `org.briarproject.briar.forum`. The major version is ### Groups -Each forum is represented by a separate BSP group. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) with two elements: `name` (string) and `salt` (raw). The salt is 32 random bytes, to prevent collisions between forums with the same name. +Each forum is represented by a separate BSP group. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) with two elements: `name` (string) and `salt` (raw). The salt is 32 random bytes, to prevent collisions between forums with the same name. ### Message types diff --git a/clients/Forum-Sharing-Client.md b/clients/Forum-Sharing-Client.md index 91672d9cdb05408dadb7ab08584fad1ab20a15ed..718baf79e69b66fb3bf6a4566395b10d8ba36c55 100644 --- a/clients/Forum-Sharing-Client.md +++ b/clients/Forum-Sharing-Client.md @@ -1,6 +1,6 @@ # Forum Sharing Client -The forum sharing client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that allows users to share forums with their contacts, who may accept or decline the invitations. It is used in conjunction with the [forum client](forum client). +The forum sharing client is a [BSP client](/protocols/BSP.md) that allows users to share forums with their contacts, who may accept or decline the invitations. It is used in conjunction with the [forum client](forum client). ### Identifier @@ -8,7 +8,7 @@ The client's identifier is `org.briarproject.briar.forum.sharing`. The major ver ### Groups -The client uses a separate BSP group for communicating with each contact. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. +The client uses a separate BSP group for communicating with each contact. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. ### Roles diff --git a/clients/Introduction-Client.md b/clients/Introduction-Client.md index 9299b126aeda3fa79199c8b319636492cdfeb759..f54b57d3228caa7c23496107cf0c5057de084f42 100644 --- a/clients/Introduction-Client.md +++ b/clients/Introduction-Client.md @@ -1,6 +1,6 @@ # Introduction Client -The introduction client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that allows a user to introduce two contacts to each other. Each contact may accept or decline the introduction. If both contacts accept, they become each other's contacts. +The introduction client is a [BSP client](/protocols/BSP.md) that allows a user to introduce two contacts to each other. Each contact may accept or decline the introduction. If both contacts accept, they become each other's contacts. ### Identifier @@ -8,7 +8,7 @@ The client's identifier is `org.briarproject.briar.introduction`. The major vers ### Groups -The client uses a separate BSP group for communicating with each contact. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. +The client uses a separate BSP group for communicating with each contact. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. ### Roles diff --git a/clients/Messaging-Client.md b/clients/Messaging-Client.md index f8cf0268ce711a36aab65f5149a13188cbb791f6..b10a91a16f5caf75b3d73d57e838427d25d819e1 100644 --- a/clients/Messaging-Client.md +++ b/clients/Messaging-Client.md @@ -1,6 +1,6 @@ # Messaging Client -The messaging client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that synchronises private messages between pairs of devices. +The messaging client is a [BSP client](/protocols/BSP.md) that synchronises private messages between pairs of devices. ### Identifier @@ -8,7 +8,7 @@ The client's identifier is `org.briarproject.briar.messaging`. The major version ### Groups -The client uses a separate BSP group for communicating with each contact. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. +The client uses a separate BSP group for communicating with each contact. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. ### Message types diff --git a/clients/Private-Group-Client.md b/clients/Private-Group-Client.md index 128d0a2408b48fcec8e0bf3a1543da10ee9902aa..a313db036a7f04c8c021b2ba98a98bcf3b3f0c49 100644 --- a/clients/Private-Group-Client.md +++ b/clients/Private-Group-Client.md @@ -1,6 +1,6 @@ # Private Group Client -The private group client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that synchronises messages among groups of devices. It is used in conjunction with the [private group sharing client](private group sharing client). +The private group client is a [BSP client](/protocols/BSP.md) that synchronises messages among groups of devices. It is used in conjunction with the [private group sharing client](private group sharing client). The creator of each private group is the only user who can invite other members. Any member can post messages to a group. Messages are signed by their authors. @@ -10,7 +10,7 @@ The client's identifier is `org.briarproject.briar.privategroup`. The major vers ### Groups -Each private group is represented by a separate BSP group. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) with three elements: `creator` (list), `name` (string), and `salt` (raw). +Each private group is represented by a separate BSP group. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) with three elements: `creator` (list), `name` (string), and `salt` (raw). `creator` is a list with three elements: `formatVersion` (int), `nickname` (string), and `publicKey` (raw). This identifies the user who created the private group. The salt is 32 random bytes, to prevent collisions between private groups with the same creator and name. diff --git a/clients/Private-Group-Sharing-Client.md b/clients/Private-Group-Sharing-Client.md index fe13a43e154e327e0cea1e7afee9c9dcd4c9f9e3..d27dad877ef74f5b6c1de1f25b49b5646453eba0 100644 --- a/clients/Private-Group-Sharing-Client.md +++ b/clients/Private-Group-Sharing-Client.md @@ -1,6 +1,6 @@ # Private Group Sharing Client -The private group sharing client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that allows users to share private groups with their contacts, who may accept or decline the invitations. It is used in conjunction with the [private group client](private group client). +The private group sharing client is a [BSP client](/protocols/BSP.md) that allows users to share private groups with their contacts, who may accept or decline the invitations. It is used in conjunction with the [private group client](private group client). ### Identifier @@ -8,7 +8,7 @@ The client's identifier is `org.briarproject.briar.privategroup.invitation`. The ### Groups -The client uses a separate BSP group for communicating with each contact. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. +The client uses a separate BSP group for communicating with each contact. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. ### Roles diff --git a/clients/Transport-Key-Agreement-Client.md b/clients/Transport-Key-Agreement-Client.md index d0c5cf9292f43eeb9b3deeeb56ab34916b3d4da9..0d7f569e1bea81d99be53d26a9945c8644244c9f 100644 --- a/clients/Transport-Key-Agreement-Client.md +++ b/clients/Transport-Key-Agreement-Client.md @@ -1,6 +1,6 @@ # Transport Key Agreement Client -The transport key agreement client is a [BSP client](https://code.briarproject.org/briar/briar-spec/-/blob/master/protocols/BSP.md) that establishes keys for newly added transports. +The transport key agreement client is a [BSP client](/protocols/BSP.md) that establishes keys for newly added transports. The client establishes transport keys with each contact for any transports that were added more recently than the contact was added. @@ -15,7 +15,7 @@ The client's identifier is `org.briarproject.bramble.transport.agreement`. The m ### Groups -The client uses a separate BSP group for communicating with each contact. The [group descriptor](https://code.briarproject.org/briar/briar-spec/-/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/-/blob/master/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. +The client uses a separate BSP group for communicating with each contact. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. ### Message types @@ -49,7 +49,7 @@ The `ACTIVATED` state lets us know that we already completed a session, so that ### Key management -For each session, each peer generates an ephemeral X25519 key pair. The public key is sent in the peer's key message and the private key is stored until the peer receives the other peer's key message. Each peer then uses its own private key and the other peer's public key to derive the [root key](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BTP.md#2-key-management-protocol) for a set of rotation mode transport keys. +For each session, each peer generates an ephemeral X25519 key pair. The public key is sent in the peer's key message and the private key is stored until the peer receives the other peer's key message. Each peer then uses its own private key and the other peer's public key to derive the [root key](/protocols/BTP.md#2-key-management-protocol) for a set of rotation mode transport keys. Each peer stores the transport keys, starts rotating them, and deletes its own private key before sending its activate message. A peer does not start using the new transport keys until it either receives the other peer's activate message or receives a BTP stream from the other peer that uses the new keys. diff --git a/clients/Transport-Properties-Client.md b/clients/Transport-Properties-Client.md index 93cd0511ce49a3114dd9025b9db66fb0746a7855..9f58e07883c10b3a3b0ebfd41abc31da5516c522 100644 --- a/clients/Transport-Properties-Client.md +++ b/clients/Transport-Properties-Client.md @@ -1,6 +1,6 @@ # Transport Properties Client -The transport properties client is a [BSP client](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) that synchronises transport properties between pairs of devices. Transport properties describe how to connect to a device over various transports. +The transport properties client is a [BSP client](/protocols/BSP.md) that synchronises transport properties between pairs of devices. Transport properties describe how to connect to a device over various transports. ### Identifier @@ -8,7 +8,7 @@ The client's identifier is `org.briarproject.bramble.properties`. The major vers ### Groups -The client uses a separate BSP group for communicating with each contact. The [group descriptor](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md#23-groups) is a [BDF list](https://code.briarproject.org/briar/briar-spec/blob/master/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. +The client uses a separate BSP group for communicating with each contact. The [group descriptor](/protocols/BSP.md#23-groups) is a [BDF list](/BDF.md) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. The client also uses a group with an empty descriptor for storing local transport properties. This group is not shared with any contacts.