Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


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

Just type make.

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 arm-none-eabi-gcc (or gcc-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 stlink might be in your package repository.
  • The host-side Python code requires the pyserial module. Your package repository might offer python-serial or python-pyserial directly. Alternatively, this can be easily installed from PyPA by calling pip install pyserial (or pip3, depending on your system). If you do not have pip installed yet, you can typically find it as python3-pip using 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 to keep listening to your serial device (currently /dev/ttyUSB0, change if yours is different). Then use to flash the code. It should automatically start executing.


This GitHub repository contains some more details in case something goes wrong.


Reference implementations and optimized Cortex-M3/M4 implementation of the Mixifer permutation







No releases published


No packages published