crypto research stuffs from numeric arithmetics to ZK-applied protocols all written with dirty hands.
-
docs
-
bls12_381 note and python versioned bls12-381 implementation [
$\color{green}\checkmark$ ] -
on_proving_pairings note and python versioned bn254 implementation [
$\color{green}\checkmark$ ]
-
-
ecc
-
integer_arithmetic
-
basic arithmetics on big integers
-
add/substruction/multiplication/division [
$\color{green}\checkmark$ ] -
euclid extended gcd/lehmer extended gcd [
$\color{green}\checkmark$ ]
-
-
-
finite_field_arithmetic
-
basic arithmetics on base field
$F_q$ and its instantiation- add/substruction/multiplication/division/inversion/modulo/exponentiation/sqrt/square [
$\color{green}\checkmark$ ] - field implementation for pallas/vasta curves [
$\color{green}\checkmark$ ]
- add/substruction/multiplication/division/inversion/modulo/exponentiation/sqrt/square [
-
basic arithmetics on extension field
$F_{q^k}$ of$F_q$ -
quadratic extension
$F_{q^2}/F_{q}$ [$\color{green}\checkmark$ ] -
cubic extension
$F_{q^3}/F_{q}$ [$\color{green}\checkmark$ ] -
cyclotomic [
$\color{green}\checkmark$ ] -
twist/untwist
$\Phi: F_{q^k} \mapsto F_{q^{k / d}}$ [$\color{green}\checkmark$ ] -
frobenius map [
$\color{green}\checkmark$ ] -
field implementation for BLS12/MNT/BN pairing-family curves [
$\color{green}\checkmark$ ]
-
-
-
elliptic_curve_arithmetic
-
neccessary arithmetics on elliptic curves over base field
$F_q$ - add/doubling/scalar_mul/... [
$\color{green} \checkmark$ ]
- add/doubling/scalar_mul/... [
-
neccessary arithmetics on pairing-friendly elliptic curves over extension field
$F_{q^k}$ and its instantiation-
add/doubling/scalar_mul/... [
$\color{green} \checkmark$ ] -
BLS12/MNT/BN pairing-friendly curves [
$\color{green} \checkmark$ ]
-
-
-
hyperelliptic_curve_arithmetic [TODO]
-
special_curve_arithmetic [TODO]
-
pairings
-
Weil Pairing [
$\color{green}\checkmark$ ] -
Tate Pairing [
$\color{green}\checkmark$ ] -
Ate Pairing [Ongoing]
-
Optimal Ate Pairings [Ongoing]
-
-
...
-
-
hash
- shake128(variable output length) [
$\color{green}\checkmark$ ] - poseidon [TODO]
- shake128(variable output length) [
-
pcs
- sparse_polynomial [
$\color{green}\checkmark$ ] - IPA [
$\color{green} \checkmark$ ] - KZG [Ongoing]
- sparse_polynomial [
-
recursive snark ...
[1] Handbook of Elliptic and Hyperelliptic Curve Cryptography
[2] Guide to Elliptic Curve Cryptography
[4] Algorithms for Modern Hardware
[5] IPA PCS
[6] Guide to Pairing-based Cryptography
[7] A note on twists for pairing friendly curves
[8] Pairing-Friendly Elliptic Curves of Prime Order
[9] Optimal Pairings
[10] On the Computation of the Optimal Ate Pairing at the 192-bit Security Level
[12] Faster Squaring in the Cyclotomic Subgroup of Sixth Degree Extensions
[13] A Guide to Plane Algebraic Curves
[14] Circle Stark
[15] Binius