libmceliece: People

libmceliece

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

- `crypto_sort/int32`. See https://sorting.cr.yp.to.

- 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 `crypto_xof/shake256` software currently includes two SHAKE256 implementations. The `tweet` implementation is based on https://twitter.com/tweetfips202 by Daniel J. Bernstein, Peter Schwabe, and Gilles Van Assche. The `unrollround` implementation is from Daniel J. Bernstein.

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