The official definition of Classic McEliece is the cryptosystem specification.
There is also a design rationale explaining the decisions that led to the specification.
Sage package
The following package presents algorithms for the Classic McEliece functions.
mceliece-sage-20221023.tar.gz
browse
Unlike the specification, this package is designed to be computer-executable, making it suitable for input-output tests against implementations in a wide variety of languages. The package includes a test that regenerates the SUPERCOP checksums for each of the selected Classic McEliece parameter sets (and for the older "pc" variants with plaintext confirmation).
Subject to being computer-executable, this package is designed for the algorithms to be as readable as possible, including detailed comments matching the algorithms to the specification. Readability is not compromised for performance or side-channel protection; in particular, these algorithms are not constant-time.
This package is written on top of Sage,
which is Python plus many math libraries.
This package uses built-in Sage subroutines
for finite fields, polynomials, and matrices.
This package includes a self-contained Goppa decoder,
not relying on Sage's berlekamp_massey
function,
and self-contained minimal-polynomial computation,
not relying on Sage's minpoly
function.
Version: This is version 2022.10.23 of the "Specification" web page.