Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
briar
briar
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 679
    • Issues 679
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 12
    • Merge Requests 12
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • briar
  • briarbriar
  • Wiki
  • Blog Client

Last edited by akwizgran Oct 16, 2018
Page history

Blog Client

The blog client is a BSP client that synchronises blog posts among groups of devices. It is used in conjunction with the 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.

A blog may consist of posts imported from an RSS feed.

Identifier

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 is a BDF list 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.

rss indicates whether the blog contains an imported RSS feed or a user's personal blog. nickname is used as the blog's title. Posts are signed with the private key corresponding to publicKey.

Message types

0: POST - A blog post. The message body is a BDF list with three elements: messageType (int), text (string), and signature (raw).

The signature covers a BDF list with three elements: groupId (unique ID), timestamp (int), and text (string). The group ID and timestamp are taken from the message header. The public key from the group descriptor is used for verifying the signature. The signature label is org.briarproject.briar.blog/POST.

1: COMMENT - A pointer to a reblogged post or comment, with an optional comment. The message body is a BDF list with five elements: messageType (int), comment (string or null), parentOriginalId (unique ID), parentId (unique ID), and signature (raw).

parentOriginalId is the ID of a post or comment in this blog or another blog. parentId is the ID of this comment's parent, which is a post, comment, wrapped post or wrapped comment in this blog, which had the ID parentOriginalId in the blog where the parent was originally posted.

The signature covers a BDF list with five elements: groupId (unique ID), timestamp (int), comment (string or null), parentOriginalId (unique ID), and parentId (unique ID). The group ID and timestamp are taken from the message header. The public key from the group descriptor is used for verifying the signature. The signature label is org.briarproject.briar.blog/COMMENT.

2: WRAPPED_POST - A reblogged post from another blog. The message body is a BDF list with five elements: messageType (int), copiedGroupDescriptor (list), copiedTimestamp (int), copiedText (string), and copiedSignature (raw).

copiedGroupDescriptor is the descriptor of the blog where this post was originally posted. copiedTimestamp, copiedText and copiedSignature are copied from the original post. The public key from the copied group descriptor is used for verifying the signature. The signature label is org.briarproject.briar.blog/POST.

The original group ID must be calculated, as it is covered by the signature. The original message ID must also be calculated, as it is referenced by comments.

3: WRAPPED_COMMENT - A reblogged comment from another blog. The message body is a BDF list with eight elements: messageType (int), copiedGroupDescriptor (list), copiedTimestamp (int), copiedComment (string or null), copiedParentOriginalId (unique ID), copiedParentId (unique ID), copiedSignature (raw), and parentId (unique ID).

copiedGroupDescriptor is the descriptor of the blog where this comment was originally posted. copiedTimestamp, copiedComment, copiedParentOriginalId, copiedParentId and copiedSignature are copied from the original comment. The public key from the copied group descriptor is used for verifying the signature. The signature label is org.briarproject.briar.blog/COMMENT.

The original group ID must be calculated, as it is covered by the signature. The original message ID must also be calculated, as it is referenced by comments.

parentId is the ID of this comment's parent, which is a post, comment, wrapped post or wrapped comment in this blog, which had the ID copiedParentOriginalId in the blog where the parent was originally posted, and the ID copiedParentId in the blog where this comment was originally posted.

Validity policy

  • A post is valid if it is well-formed and has a valid signature.
  • A comment is valid if it is well-formed, has a valid signature, and references a valid message of any type in the same blog, with a matching original ID.
  • A wrapped post is valid if a valid post can be reconstructed from it.
  • A wrapped comment is valid if a valid comment can be reconstructed from it, and it references a valid message of any type in the same blog, with a matching original ID.

Storage policy

  • All messages are stored.

Sharing policy

  • All posts and comments are shared.
  • Wrapped posts and wrapped comments are not shared unless they are referenced by a post or comment.
Clone repository
  • A Quick Overview of the Protocol Stack
  • Android Power Management
  • BDF
  • BQP
  • BSP
  • BTP
  • Blog Client
  • Blog Sharing Client
  • Client API Notes
  • Design options for multi block messages
  • Development schedule for private message deletion
  • FAQ
  • Forum Client
  • Forum Sharing Client
  • Fundamental Problems
View All Pages