Consider checking out full tutorials to understand how to add and update blocks, grant READ and UPDATE access right for users, revoke access rights.
Following tutorials that use already built apps:
- Python tutorial, where Hermes app is C-based, but client code runs on Python.
- Go tutorial, where Hermes app is C-based, but client code runs on Go.
- C tutorial, where both Hermes and client app are written in C.
- Local CLI tutorial how to build and use example CLI apps.
Creating your own Hermes-based app
Using Hermes-core #
Hermes is a cryptography-based method of providing protected data storage and sharing that allows enforcing cryptographically checked CRUD permissions to data blocks and doesn’t let server that’s running Hermes do anything worse than DoS. In other words, Hermes enables collaboration and distributed data sharing through enforcing access control with the help of cryptographic methods. This section is a brief explanation of how you can achieve this.
To use Hermes-core, 4 components need to be implemented: 3 storage entities and a transport interface. The storage entities require databases (generic or specialised) and some “driver” that will act as a point of communication with Hermes-core.
- Data database — data storage entity, which implements the
- Credential database — data storage entity, which implements
the hm_cs_db_tinterface (see
- Keystore database — data storage entity, which implements
the hm_ks_db_tinterface (see
The transport interface is basically the API. Transport(s) is the
transport_t interface (see
include/hermes/rpc/transport.h). In fact, each instance of communication between the components of the system can be implemented with the help of different transports (i.e. sockets). Transport interfaces primarily need to be able to carry out the
Assembling Hermes-core #
After implementing the 4 components mentioned above, the assembly of parts of Hermes-core follows. These are the entities you’ll need to implement:
- Client. It consists of
mid_hermes(with all corresponding dependencies) and transport.
- Credential store. It includes Credential database, transport, and Credential store server (see
- Data store. It includes Data database, transport, and Data store server (see
- Keystore. It includes Keystore database, transport, and Keystore server (see