Sample implementation of a chat application integrated with Signal protocol for E2E encryption during communication
JS signal protocol library - Libsignal (https://github.com/signalapp/libsignal-protocol-javascript)
Passport authentication and schema used from express boilerplate (https://github.com/sahat/hackathon-starter)
Requires node.js (with dependencies), MongoDB (for passport user authentication storage). Needs a websocket client running in the same server to work. (socket.io used here) Web client needs WebCrypto API support, libsignal js client library, jQuery, bootstrap.
- Clone repo
- run
npm install
on root directory to install the dependencies - run
npm run start
to start the appserver and socket listener.
- Share files (with E2E encryption)
- Persist transcript on server side too (currently only preserved in client)
- Implement proper key rotation (now signal is used for signalling message key once to other clients)
- Multiple chat room support