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.
Just type make.
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
arm-none-eabi-gcc(orgcc-arm-none-eabi) package. - 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
deploy.sh.stlinkmight be in your package repository. - The host-side Python code requires the pyserial module. Your package repository might offer
python-serialorpython-pyserialdirectly. Alternatively, this can be easily installed from PyPA by callingpip install pyserial(orpip3, depending on your system). If you do not havepipinstalled yet, you can typically find it aspython3-pipusing your package manager.
Now run make. The current code writes output over serial with 115200 baud. It expects TX is connect to PA3 and RX to PA2. Use 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.