| .. | ||
| curve25519_32.h | ||
| curve25519_64.h | ||
| curve25519_stubs.c | ||
| curve25519_tables.h | ||
| GNUmakefile | ||
| inversion_template.h | ||
| np256_32.h | ||
| np256_64.h | ||
| np256_stubs.c | ||
| np384_32.h | ||
| np384_64.h | ||
| np384_stubs.c | ||
| np521_32.h | ||
| np521_64.h | ||
| np521_stubs.c | ||
| p256_32.h | ||
| p256_64.h | ||
| p256_stubs.c | ||
| p256_tables_32.h | ||
| p256_tables_64.h | ||
| p384_32.h | ||
| p384_64.h | ||
| p384_stubs.c | ||
| p384_tables_32.h | ||
| p384_tables_64.h | ||
| p521_32.h | ||
| p521_64.h | ||
| p521_stubs.c | ||
| point_operations.h | ||
| README.md | ||
Generated code from fiat
This directory includes several files ("p*.h") that are generated by fiat. The GNUmakefile provides targets to generate these files.
The file "inversion_template.h" is copied from the fiat-crypto repository at e31a36d5f1b20134e67ccc5339d88f0ff3cb0f86 (inversion-c/inversion_template.c), and has some modifications: the "inversion" function is declared "static", and the convenience function "inversion" is provided.
The "*_stubs.c" files are handcrafted.
The "p*_tables_32/64.c" are generated from ../gen_tables (see each file's
header) and contain pre-computed data to speed up scalar multiplication for
ECDSA. The 64- and 32-bit tables must be respectively generated from a 64-bit or
32-bit build of gen_tables.
Code from BoringSSL
The code in "curve25519_tables.h", and large parts of "curve25519_stubs.c" and "point_operations.h" (excluding scalar multiplication) originate from BoringSSL. Minor adjustments have been done manually.