This is the Gitlab repository for Secure Messaging Application for Group 16: Gordon Chiang, Lagan Chohan, Tyler Fowler, and Alex Li.
Secure Messaging Application is a Python program that allows users to securely and synchronously message one another.
A video demo of Secure Messaging Application in action can be found here.
Please refer to the Gitlab Wiki for more in-depth documentation.
Please refer to the archived legacy Gitlab repo to view the project's activity history. Secure Messaging Application moved repos because of a bug that prevented us from pushing changes to the legacy repo. The legacy repo was cloned to this repo--this repo is now the most up-to-date.
Secure Messaging Application requires Python 3.9 or higher.
After cloning the repo, run pip install -r requirements.txt
from the root directory to install all dependencies.
- Setup the server from the root directory to generate a certificate:
python3 ./server/server.py
.- The pathing ensures the client can locate and load the certificate to establish a TLS connection with the server.
- The server will prompt for the private key PEM's pass phrase, which is currently hardcoded as
passphrase
. - The server will output
Listening for events
to the terminal when it is setup and ready to accept clients and listen for events.
- With the server running, create a client instance:
python3 ./client/client.py
. - The client's GUI will load which will prompt the user for account management events:
- Login: login to an existing account with the server using a username and password.
- Register: register a new account with the server using a username and password.
- Exit: close the client.
- Once the user is authenticated into a user account, they may choose various options:
- Chat: select a user with whom to chat synchronously.
- Message History: view the saved message history with a user (password-protected).
- Delete Account: delete the currently logged in account from the server (password-protected).
- Exit: close the client.
- You may create multiple client instances for testing purposes.