Skip to content

An end to end encrypted messenger using Flask, SocketIO, and Vue.js

License

Notifications You must be signed in to change notification settings

ishanyaa/enigma-protocol

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

Enigma Protocol Python Server Github Pages

Hello Friends, I built an end to end encrypted messenger using Flask, SocketIO, and Vue.js.

Working

The Chat is encrypted using RSA encryption that is a public key encryption or you can say asymmetric encryption. RSA gives two keys, public key and private key, public key is used to encrypt messages while private key is used to decrypt them.

I have used Diffie–Hellman key exchange to exchange the public keys of the users. These keys are used by user A to encrypt messages and send them to another user B and user B can decrypt them using his private key.

Socket.io is used to send and receive messages, these messages are encrypted and sent to the user having the private key to decrypt it.

I created some Flask API to store the information* of the users in a SQLite database and relogin as the user if page reloaded.

Finally Vue.js is used to perform client side encryption/decryption, send/receive message and login or connect to the user.

*Information contains id, publicKey, and last_activity of a user.

Development

Those who wants to develop or build the code then, just clone this repository using:

git clone https://github.com/PradyumnaKrishna/enigma-protocol.git

Server (Python 3)

  • Install Dependencies
pip3 install -r requirements.txt
  • Run the Server
python main.py

Supported Python Versions

  • Python 3.7/3.8

Server (Golang)

This is on hold because go-socket.io doesn't support newer versions of client-socket.io.

Client (Vue.js)

  • Install Dependencies
npm ci
  • Run the development client
npm run serve

NOTE: To run the vue.js app you need to confiure an env variables, open .env.sample to see an sample environment file.

Supported Node.js Version

  • Current LTS version (14) or newer

What next

I will create Issues and try to fix them.

About

An end to end encrypted messenger using Flask, SocketIO, and Vue.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vue 59.5%
  • Python 15.9%
  • Go 14.5%
  • JavaScript 5.9%
  • Dockerfile 2.4%
  • HTML 1.8%