With Cripta you can relay secure messages instantly using free (and mostly available) MQTT brokers. The broker is configurable, to use a different broker edit, rebuild the app and distribute that.
There are no tests in this project. It started as an afternoon hack. I hope to add at some point.
- Asymmetric encryption using recipient public key
- Inbox management (list, read, delete & empty)
- Mail groups
- Message signing with private key
Download an executable for your OS here.
Create a config.env
file in same directory as the cripta executable. Add your Twitter username.
## Enter your twitter username without the @ symbol
TWITTER_USERNAME=olliephillips
Note: There is currently no validation of the username against Twitter. You could pick any username.
Run it on Mac/Linux.
./cripta
Cripta Messenger
---------------------
Version: v0.0.1
Go version: 1.19
---------------------
Enter 'help' for command list.
Show command list with help
.
> help
Showing available commands..
Command List
------------
help Show available commands
list List all messages in mailbox
friends List available friends (with public keys)
groups List available groups
read <msgId> Print the message with id <msgId> to the console
delete <msgId> Delete the messsage with id <msgId> from mailbox
empty Delete all messages in the mailbox
quit Quit the program
To send a message to a single recipient:-
> @<username> <subject>::<message>
To send to a group of recipients (group must exist):-
> -><groupname> <subject>::<message>
The message(s) will be queue and published.
To receive a message from someone else you must have shared your public key in my_public_key.txt
with the sender.
You can send messages to any user who's public key you have saved in your friends folder. By default the folder
is friend_keys
. A user's key is saved in a .txt
file named with their username e.g. username.txt
.
You can send test messages to yourself. On first start your public key is created and copied to the friend_keys
folder.
Use this format to send to a user.
> @<username> <subject>::<message>
You can also send to groups. To create a group, create a named .txt
file in the groups
folder (default),
e.g. mygroup.txt
. Add usernames (for whom you hold a public key) one per line, including the @
symbol.
@user1
@user2
Use this format to send to a group:
> -><groupname> <subject>::<message>
MIT