This repository contains two reference implementations in C and one optimized ARM Cortex-M3/M4 implementation of the Mixifer permutation. Its design rationale is specified in this academic research paper.
Compiling and running the C code
Compiling and running the ARM Cortex-M code
The build system is currently producing binaries for the STM32L100C and STM32F407 development boards. There are a number of software dependencies here:
- The arm-none-eabi toolchain toolchain for cross-compiling. On most Linux systems, the correct toolchain gets installed when you install the
- The libopencm3 firmware library, for making it nicer to work with the development boards. The Makefile should be updated to point to the right directory where libopencm3 resides.
- The stlink tools for flashing the code on the board. This gets called by
stlinkmight be in your package repository.
- The host-side Python code requires the pyserial module. Your package repository might offer
python-pyserialdirectly. Alternatively, this can be easily installed from PyPA by calling
pip install pyserial(or
pip3, depending on your system). If you do not have
pipinstalled yet, you can typically find it as
python3-pipusing your package manager.
make. The current code writes output over serial with 115200 baud. It expects
TX is connect to
host.py to keep listening to your serial device (currently
/dev/ttyUSB0, change if yours is different). Then use
deploy.sh to flash the code. It should automatically start executing.
This GitHub repository contains some more details in case something goes wrong.