Fast implementations of the SIMON and SPECK lightweight block ciphers for the SUPERCOP benchmark toolkit.
These implementations use counter mode to work as stream ciphers and are available in the following directories:
Each algorithm directory contains subdirectories for particular SIMD instruction sets, currently x86 CPUs with SSE4.2, AVX2, or 32-bit ARM CPUs with NEON.
The supercop branch is a copy of the latest SUPERCOP release. The simon-speck branch contains any updates to our SIMON and SPECK implementations since the last SUPERCOP release. The master branch includes this and other documentation merged with the supercop and simon-speck branches.
Getting the Code
There are a few ways to get these implementations without having to clone the entire repository.
Downloading only SIMON and SPECK
GitHub will provide a patch covering the changes between two branches. For example, a patch to update the latest SUPERCOP with our changes is available at the following:
This can be downloaded and and applied with commands like the following:
cd supercop-20161026 curl https://github.com/nsacyber/simon-speck-supercop/compare/supercop...simon-speck.diff -o simon-speck.diff patch -p1 < simon-speck.diff
curl https://github.com/nsacyber/simon-speck-supercop/compare/supercop...simon-speck.diff | patch -p1
Refer to individual files and directories for the license of SUPERCOP components. For the SIMON and SPECK code see LICENSE and DISCLAIMER.