Skip to content
This repository has been archived by the owner on Jan 2, 2020. It is now read-only.

Pixelated Component Architecture

Sriram Viswanathan edited this page Apr 26, 2017 · 9 revisions

Main Components

There are two sides to Pixelated -

  • 'Provider'
  • 'User-Agent'

These two sides work together to give the user a seamless mail experience that always holds any mails (at rest or in transit) in encrypted form. The fundamental rule that is followed is that, without the user logging in with their password, no one else (including the server) can read the emails.

Provider

The 'Provider' is based on the Leap platform. The Provider consists of the following components -

  • 'Postfix' mail receiver - receive email from external provider and store it on disk
  • 'Leap_mx' - watch local directory & encrypt using public key of the user -> store in couchdb in encrypted form - public key is fetched with the 'keymanager' using 'Nickserver' to map user to their keys
  • 'Soledad' - this is the main server component thats responsible for synchronization of encrypted documents between server and client(s)
    • There are two parts - client & server.
    • Both client & server have the common responsiblity of storing & retrieving locally stored docs.
    • U1db is the protocol that is used to synchronize documents between the server & the client(s)
    • The client is tied to a SQLCipher database which is a flavor of SQLite providing encryption capabilities.
    • The server is tied to a CouchDB database.

The Client consists of the following components -

'Pixelated User Agent' - this is the webapp component 'Bitmask Client' - this is mainly responsible as a mediator between the user-agent & the 'server'