A command-line p2p chat with encryption implemented in Haskell.
Before start chatting, a client firstly connects to a server, which only listens to users' connections and shows who is currently online. The chat supports group symmetric ecnryption, the key exchange algorithm is described here. Additionally, it supports saving chat info in DB for restoring messages after the client was disconnected.
To start the server run:
cabal new-run haschat-server -- <server-port>
Example:
cabal new-run haschat-server -- 64242
To start a client run:
cabal new-run haschat-client -- <user-name> <own-address:own-port> <server-address:server-port>
Example:
cabal new-run haschat-client -- vika 127.0.0.1:5000 127.0.0.1:64242
To run tests:
cabal new-run haschat-tests