Skip to content

Android app that uses websockets to connect to other repo vesica-server | A chat application using decentralized tech like IPFS and Diffie-Helman key exchange for AES encryption

Notifications You must be signed in to change notification settings

varunagarwal315/vesica-android

Repository files navigation

Android chat

Vesica is an android chat application that uses a decentralized chat server to relay information between clients. Libp2p from IPFS module is used to act as the server.

  • Repo is no longer maintained and written in Java

TODO:

  • Add ciphertext <--> plaintext on android app
  • Add auto routing mechanism to server nodes (sadly clusters came out after we stopped our work)
  • UPDATE: Kotlin is the new default language for Android, so lot of refractoring is now required
  • Implement proguard for use in production

Workflow

  • User registers on the login page. This generates username password on the server db which can be accessed by several nodes
  • SQLBrite used to store chat details and messages (native event emitters suck!)
  • User then logs in and adds another valid user to the chat (like adding a mobile number to WhatsApp). To maintain anonymity we don't use mobile numbers anywhere
  • Once a chat room is established, all clients are connected via websockets to a node that is part of the p2p network. When a message is sent it contains meta-data about the sender and receiver which is used for the routing process
  • Send messages away! Try out the self destruct feature for messages. You can put a timer for each message, as soon as a party receives the message a background thread is used to time its self destruction. Unlike other messages, these do not live in SQLBrite
  • IMP: There is no offline syncing as messages are not cached anywhere. As long as your phone is online it will receive messages and populate once you start the app

Deployment

  • Go to com.example.varun.vesica.Constants and change the IP address to that of the auth server and node

Libraries Used

  • Pretty much all of Jake Wharton's work (ButterKnife, RxJava, SQLBrite, Observables, Retrofit2, RxBinding, GSON, Timber)
  • Stethoscope from FaceBook for debugging
  • Spongy Castle and AES for generation of keys through Diffie Hellman key exchange (not fully integrated)

MIT License - 2016 - Varun Agarwal

Do whatever you want with this

About

Android app that uses websockets to connect to other repo vesica-server | A chat application using decentralized tech like IPFS and Diffie-Helman key exchange for AES encryption

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages