This is a simple graphical user interface (GUI) for the PySPX SPHINCS+ (the post-quantum digital signature scheme) implementation using Python pyspx and tkinter.
- Generate SPHINCS+ keypair using selectable variants (e.g.
shake_128f,sha2_192s, etc.) - view seed, keys and their lengths
- Upload and view the plaintext message
- Sign the message using the generated keypair
- Save the digital signature to file
- Upload the message and saved signature to verify the sign is VALID or INVALID
- Reset the application to select a different variant and restart the process
- before running this GUI, make sure you have OpenSSl development libraries, Python 3.9 and later and tkinter package:
sudo apt update
sudo apt install libssl-dev build-essential
sudo apt install python3-tk- To make virtual enviroment:
python3 -m venv sphincs_env
source sphincs_env/bin/activate- Installing
pyspx(Python binding for SPHINCS+) that is avalable in PySPX:
pip install pyspxOr you can install python dependencies
pip install -r requirements.txtpython3 gui_sphincs.py- Select a "SPHINCS+ Variant" from the dropdown menu.
- Click "Generate Keypair" to create a new keypair by using a random seed.
- Click "Upload Message" and select a plaintext
.txtfile to be signed Sample of Message. - Click "Sign Message" to digitally sign the message.
- Click "Save Signature" to save the signature to a
.sigfile. - Click "Verify Signature" to validate the uploaded message and signature.
- Click "Reset" to start over and choose another variant.
- Each varient of SPHINCS+ has different seed/key/signature lengths.
- The application restricts each process to a single run per variant to avoid confusion.
- The random seed is generated using Python's
os.urandom(). - This GUI uses the
pyspxPython binding for SPHINCS+. - If you encounter any OpenSSl or compilation issues, verify that
libssl-devis installed on your system.

