An open source encrypted peer-to-peer system. Own data, own privacy.

Last update: Jun 22, 2022

ESSE

ESSE (Encrypted Symmetrical Session Engine) An open source encrypted peer-to-peer session system would allow data to be sent securely from one terminal to another without going through third-party services.

image

ESSE, stands for Encrypted Symmetrical Session Engine, positioned as an engine. The engine is coded in Rust language based on TDN framework, and the cross-platform user interface is built using Flutter.

Features

  • Distributed Identity
  • Distributed Network
  • Synchronization & Distributed Storage
  • Multi-identity System
  • Built-in IM Application
  • Multi-platform Support: Android, iOS, iPadOS, MacOS, Windows, Linux, etc.

About ESSE(English) / 关于ESSE(简体中文)

Usage

1. Use Binary executable

Download

2. Compile

2.1. Pre-installed

  • Rustup install
  • Rust (Nightly Version)
  • Flutter (Master channel)

2.2. Compile Rust code to dynamic link library (FFI)

2.2.1. Auto-compile script

It is recommended to use rust.sh to auto-compile the Rust code

2.2.2. Manually compile
Linux / MacOS / Windows
  • cargo build --release
Linux
  • cp target/release/libesse.a core/linux/share/libesse.a
MacOS
  • cp target/release/libesse.a core/macos/share/libesse.a
Windows
  • cp target/release/esse.dll core/windows/share/esse.dll
  • cp target/release/esse.dll.lib core/windows/share/esse.dll.lib
Android
  1. Add your android device target
  • rustup target add aarch64-linux-android
  • rustup target add armv7-linux-androideabi
  • rustup target add x86_64-linux-android
  1. Configure your NDK

  2. Build the jniLibs

  • cargo build --release --target=aarch64-linux-android
  • cp target/aarch64-linux-android/release/libesse.so core/android/src/main/jniLibs/arm64-v8a/
iOS
  1. Install lipo
  2. cargo lipo --release
  3. cp target/universal/release/libesse.a core/ios/share/libesse.a

2.3. Run flutter to build binary

  • Run flutter run or flutter run --release in terminal, or
  • for Android, run flutter build apk, or
  • for Linux, run flutter build linux, or
  • for MacOS, run flutter build macos, or
  • for Windows, run flutter build windows

License

This project is licensed under either of

at your option.

GitHub

https://github.com/CympleTech/esse
Comments
  • 1. Problem with understanding logic.

    Can you explain why the Rust is in the same file as Flutter? I am trying to understand all the logic to be able to install this locally. I have problems running the application in XCode. I only get splash screen for a few seconds and kick me out.

    Reviewed by mariuszmalek at 2022-02-04 19:01
  • 2. [Feature] encrypted local SQLite database.

    What ?

    Encrypted local SQLite database.

    Why ?

    Encrypted everywhere.

    How ?

    • use sqlcipher to handle SQLite. use rusqlite and features bundled-sqlcipher-vendored-openssl. (better for cross-compile)
    • update tdn_storage API. use open(path: PathBuf, password: &str)
    • update ESSE
      • account.db: use device's local secret (every device drive it randomly when first launch) to encrypt/decrypt.
      • account's database: use user encrypt key (which is encrypted by user's PIN and secret) to encrypt/decrypt.
    Reviewed by sunhuachuang at 2022-01-07 07:34
  • 3. [Doing] use "PeerID" replace "ESSE ID & PeerID".

    Now, if you search a friend, you need to know ESSE ID and PeerID. How about only use PeerID ?

    Advantages

    1. Easy to understand
    2. User info is smaller
    3. Easy to handle network connect/disconnect

    Disadvantages

    1. Can't at same time online multiple accounts. (one account is one PeerID)
    2. Login before network start
    3. Logout will make network stop
    4. Change account, restart network
    5. Difficult to identify whether connecting to cloud service

    Step

    1. chamomile support stop network, restart network, and TDN also add
    2. Refactor account system

    How

    use new ID (string)

    pub fn id(peer: &tdn_types::primitive::PeerId) -> String {
        bs32::encode(&peer.0)
    }
    
    Reviewed by sunhuachuang at 2022-01-24 00:11
  • 4. use cargo ndk to build android for different targets

    Have errors build android: needs to install ndk separately and configure path. switch to cargo ndk should be easier for us to builds

    ./rust.sh init_android (init android targets) ./rust.sh android

    Reviewed by DAOCUONG at 2021-04-26 13:28
  • 5. error: $./rust.sh in zsh

    $ ./rust.sh linux          
    ./rust.sh: 2: Syntax error: "(" unexpected
    

    Fix

    Add default sh #!/bin/bash to rust.sh

    #!/bin/bash
    #### Default Current Machine
    function current() {
        cargo build --release
    
        ## check now os.
    }
    ...
    
    Reviewed by chinanf-boy at 2021-04-18 07:22
  • 6. Add NFT as account avatar.

    I think NFT can be as avatar.

    When import an account with secp256k1, it will have ETH address. So we can use a NFT that belongs to this address as avatar.

    Reviewed by sunhuachuang at 2022-05-28 03:43
  • 7. Next version 0.6

    What is the plan of 0.6 ? (Breaking changes)

    List

    • [ ] Data structure defined Data-Protocol.
    • [ ] Local encrypted database.
    • [ ] Refactor distributed synchronization between devices.
    • [ ] Optional cloud-based data centre.
    • [ ] DAO and organization application (Maybe in 0.7)
    Reviewed by sunhuachuang at 2021-12-26 09:45
  • 8. Making installer, and publish to app store.

    For safer and more convenient

    Android

    Now that is apk, can install, but we need to upload to Play Store

    IOS

    First, I need to register an IOS developer account. And then upload to App Store.

    macOS

    Also need account, and upload to App Store. Need test on M1 device (arm64)

    Windows

    Make Windows installer. Try msix

    Linux

    Upload to snap

    Reviewed by sunhuachuang at 2021-12-26 07:14

Related

Encrypted peer-to-peer system for data security. Own data, own privacy
Encrypted peer-to-peer system for data security. Own data, own privacy

ESSE (Encrypted Symmetrical Session Engine) An open source encrypted peer-to-pee

Jun 22, 2022
GChat is a chatting application developed using Flutter(Dart) and firebase for 2 users. Trying to Develop an application that does not sell your data with whatsapp rolling out its privacy policy updates.
GChat is a chatting application developed using Flutter(Dart) and firebase for 2 users. Trying to Develop an application that does not sell your data with whatsapp rolling out its privacy policy updates.

Gchat - The Chatting Application A Flutter project for chatting. I used Android Studio and you can you any editor of your choice for ex: VS Code, Inte

Aug 17, 2021
Naj - An open-source code generation and file management system written in Dart

Naj An open-source code generation and file management system written in Dart Ov

Feb 14, 2022
A beautiful, cross-platform, encrypted password manager 🔐
A beautiful, cross-platform, encrypted password manager 🔐

Passwd. A beautiful, encrypted password manager, built using Flutter and Dart. Note: This project is unmaintained for now Features Fully encrypted usi

Jun 15, 2022
One codebase two platforms more privacy for the world 😎

Privyet A Privacy focused social media app. Getting Started This project is a starting point for a Flutter application. A few resources to get you sta

Jun 3, 2021
⚗️A privacy centric matrix client
⚗️A privacy centric matrix client

a privacy centric matrix client - now in open alpha* Syphon is still in alpha and we do not recommend using it where proven and independently verified

Jun 20, 2022
A time tracking app that respects your privacy and the gets the job done without being fancy.

Time Cop A time tracking app that respects your privacy and gets the job done without getting too fancy. Motivation I'd rather not do time-tracking at

Jun 23, 2022
Flutter Music Player - First Open Source Flutter based material design music player with audio plugin to play local music files.
Flutter Music Player - First Open Source Flutter based material design music player with audio plugin to play local music files.

Flutter Music Player First Open Source Flutter based Beautiful Material Design Music Player(Online Radio will be added soon.) Demo App Play Store BETA

Jun 27, 2022
Simple yet powerful, open-source SpaceX launch tracker.
Simple yet powerful, open-source SpaceX launch tracker.

SpaceX GO! Simple yet powerful, open-source SpaceX launch tracker About the project The purpose of this project is to develop the ultimate SpaceX expe

Jun 21, 2022
Timy - open source mobile app for groups to communicate and organize themselves. Built with flutter.
Timy - open source mobile app for groups to communicate and organize themselves. Built with flutter.

Timy app An amazing open-source group messaging app build with flutter. ✨ Main Features Multiple groups (similar to Teams in Slack). Multiple open or

Jun 19, 2022
freeCodeCamp's open-source mobile app
freeCodeCamp's open-source mobile app

freeCodeCamp.org's open-source mobile app freeCodeCamp.org is a friendly community where you can learn to code for free. Our full-stack web developmen

Jun 23, 2022
Nakama is an open-source server designed to power modern games and apps

Nakama is an open-source server designed to power modern games and apps. Features include user accounts, chat, social, matchmaker, realtime multiplayer, and much more.

Jun 22, 2022
Upper is a open source back-end framework based on the Dart language.
Upper is a open source back-end framework based on the Dart language.

What is Upper? Upper is a open source back-end framework based on the Dart language. With it, it is possible to automatically generate a gRPC API for

May 9, 2022
Easy to use open source Hub 🕸️ to control your smart devices from one app.
Easy to use open source Hub 🕸️ to control your smart devices from one app.

CyBear Jinni Hub Welcome! This repository is in charge of controlling smart devices and is part of the CyBear Jinni Smart Home system. The software is

Jun 20, 2022
Easy to use open source Hub 🕸️ to control your smart devices from one app.
Easy to use open source Hub 🕸️ to control your smart devices from one app.

CyBear Jinni Hub Welcome! This repository is in charge of controlling smart devices and is part of the CyBear Jinni Smart Home system. The software is

Jul 22, 2021
Sharik is an open-source, cross-platform solution for sharing files via Wi-Fi or Mobile Hotspot
Sharik is an open-source, cross-platform solution for sharing files via Wi-Fi or Mobile Hotspot

Share files across devices with Sharik! It works with Wi-Fi connection or Tethering (Wi-Fi Hotspot). No internet connection needed. Contributing Feel

Jun 22, 2022
A fully open source visual to-do list Flutter application.
A fully open source visual to-do list Flutter application.

A fully open source visual to-do list Flutter application.

Oct 24, 2021
Drishti is an open-source cross-platform mobile application project at Incubate Nepal that incorporates Machine Learning and Artificial Intelligence
Drishti is an open-source cross-platform mobile application project at Incubate Nepal that incorporates Machine Learning and Artificial Intelligence

Drishti is an open-source cross-platform mobile application project at Incubate Nepal that incorporates Machine Learning and Artificial Intelligence to help visually impaired people recognize different currency bills and perform daily cash transactions more effectively. We plan to expand Drishti to other applications like Short Text and Document Reading in the future.

Jun 22, 2022