Prerequisites:
Intel/AMD CPU with AVX2 (Haswell or newer).
Linux.
Standard compilation environment (e.g., apt install build-essential on Debian/Ubuntu).
Python 3 (e.g., apt install python3 on Debian/Ubuntu).
xsltproc for libkeccak (e.g., apt install xsltproc on Debian/Ubuntu).
If you want to run make documentation to convert these *.md files into *.html: pandoc (e.g., apt install pandoc on Debian/Ubuntu).
Compile (this downloads and extracts crypto pieces from the SUPERCOP benchmarking framework, and takes a few minutes for crypto self-tests):
make
Create the server’s secret key and public key:
./mctiny-master state
Run the server:
./mctiny-server state 127.0.0.1 12345 &
Run the client using the server’s public key:
./mctiny-client state/public/* 127.0.0.1 12345
The client prints some performance information, finishes the connection, and terminates. The server continues running to handle any number of clients. As a sanity check, the client and the server each print two bytes of the session key.
To run the client on another machine, copy the state/public/* file to the other machine, and replace both occurrences of 127.0.0.1 with the server’s name or IP address.
To rotate the server cookie keys once:
./mctiny-rotate state
Rotation keeps the last 8 keys. If, e.g., mctiny-rotate is run every minute then each cookie expires between 7 and 8 minutes after being generated.