Runtime Building Blocks

Runtime Library

Enmeshed Runtime GitHub Repository

The Runtime wraps all features of Enmeshed into a single programming interface. It is combining the various libraries to a powerful software stack, primarily based on TypeScript, which can be used on nearly every device on the world - and even in the browser.

Versions, local and remote data, synchronization, communication, and many more items are tracked by the Runtime in order to provide an easy-to-use interface.

Crypto Library

Crypto Library GitHub Repository

To separate the cryptographic interfaces from the used cryptographic library (e.g. libsodium), the crypto library acts as a wrapper. Additionally, cryptographically-related source code is bundled within this library.

This approach allows us to implement features for cryptographic classes, for example the serialization of keys. Additionally, security audits could focus on this library.

Transport Library

Transport Library GitHub Repository

The implementation of the transport layer is the transport library. It combines the features of different third party libraries and the crypto library to support the following features:

  • Communication with the Backbone
  • Synchronization with the Backbone
  • Encrypting and decrypting communication with other identities
  • Managing identities and devices
  • Managing cryptographic artifacts
  • Cross-device synchronization of the datawallet

Content Library

Content Library GitHub Repository

To separate the actual payload of messages from the message structure and envelope, the content library was set up. It is a repository of interfaces and types which are used as the payload of communication between identities.

Whereas the transport library implements the foundation of communication between identities and the actual secure tunnel between identities, the content library defines the payload on top of this tunnel. You can see it as the definition of a contract between all identities.

  • Attributes
  • Claims
  • Message formats like Mails, RequestMails, technical messages
  • Transactional formats like Requests

Consumption Library

Consumption Library GitHub Repository

Due to the fact that the Backbone cannot implement business logic to process content sent over the wire just like any other central service, the business logic needs to reside on the respective clients.

The consumption library implements this business logic and additionally introduces some local data structures for keeping track of the sent and received payload.