A private journal application that supports client-side encryption
index.html
- An entry point of the application. It is built by parcel.main.rs
- An entry point of the application. It runs a http server.Darim supports client-side encryption to protect the user's secrect from others including server.
%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
Note over client: generates<br>secret and public
Note over client: encrypts secret<br>using public
client ->> local storage: set(encrypted_secret)
client ->> server: POST /public_key { public }
server ->> rdb: INSERT public
rdb -->> server: [OK 200]
server -->> client: [OK 200]
%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
Note over client: creates a new post
client ->> local storage: get(encrypted_secret)
local storage -->> client: encrypted_secret
client ->> server: GET /public_key
server ->> rdb: SELECT public
rdb -->> server: [OK 200] { public }
server -->> client: [OK 200] { public }
Note over client: decrypts<br>encrypted_secret<br>using public
Note over client: encrypts the post<br>using secret
client ->> server: POST /post { encrypted_post }
server ->> rdb: INSERT encrypted_post
rdb -->> server: [OK 200]
server -->> client: [OK 200]
- At this point, the server can only know encrypted post.
- If the client reads a post, the flow is the same until the client requests to create a post to the server.
This project is distributed under the AGPL-3.0 License - see the LICENSE file for details.