code
Our scheme is currently under submission and constant revision. But you can find some of our code here:
C:
Our C implementation can be found here.
The library provides a reference implementation, an optimized implementation, an Intel AVX2 optimized implementation, an Intel AVX-512/GFNI optimized implementation, and an Arm NEON optimized implementation.
AES-NI is used by default, if available, in the optimized versions.
They can be built in this way:
- Reference: build with CMake with the option:
-DMAYO_BUILD_TYPE=ref. - Optimize: build with CMake with the option:
-DMAYO_BUILD_TYPE=opt. - Intel AVX2 Optimize: build with CMake with the option for avx2 op:
-DMAYO_BUILD_TYPE=avx2. - Intel AVX-512/GFNI Optimize: build with CMake with the option:
-DMAYO_BUILD_TYPE=gfni. This requires a host CPU supporting AVX-512 and GFNI; where VAES is also present, AES-CTR uses the 512-bit VAES path. - Arm NEON Optimize: build with CMake with the option:
-DMAYO_BUILD_TYPE=neon.
Arm Cortex-M4:
Our Arm Cortex-M4 implementation can be found here. It has also been merged into pqm4.
Sage:
Our pure sage implementation can be found here.
Golang:
Our golang implementation can be found here.