libmceliece: People

libmceliece is based on the official Classic McEliece software, which was written by Tung Chou. See the following papers for the major algorithms used for speed inside that software:

- Daniel J. Bernstein, Tung Chou, Peter Schwabe. "McBits: fast constant-time code-based cryptography." CHES 2013. https://tungchou.github.io/papers/mcbits.pdf

- Tung Chou. "McBits revisited." CHES 2017. https://tungchou.github.io/papers/mcbits_revisited.pdf

The official Classic McEliece software includes `ref`, `vec`, `sse`, and `avx` implementations; libmceliece includes only `vec` and `avx`.

The following components of libmceliece are from Daniel J. Bernstein:

- Small changes for namespacing, portability, etc.

- Software to compute control bits (also used in the official software). See the following paper: Daniel J. Bernstein. "Verified fast formulas for control bits for permutation networks." 2020. https://cr.yp.to/papers.html#controlbits

- Infrastructure to build a library with automatic run-time selection of implementations based on the run-time CPU and a database of benchmarks. This infrastructure was introduced in `lib25519`, with some extensions and adaptations in libmceliece.

- Various software for tests and benchmarks. This is based on public-domain code in the SUPERCOP benchmarking framework.

- The underlying subroutines `crypto_sort` (based on https://sorting.cr.yp.to), `crypto_xof/bitwrite16`, and `crypto_xof/shake256/unrollround`.

A separate SHAKE256 implementation, `crypto_xof/shake256/tweet`, is based on https://twitter.com/tweetfips202 by Daniel J. Bernstein, Peter Schwabe, and Gilles Van Assche.

Version: This is version 2024.05.08 of the "People" web page.