risc0-curve25519-dalek-source/src
Henry de Valence ac739a3edd Split out constant-time variable-base scalar mul.
The serial (`u32`/`u64`) implementations use a multiple curve models, passing
between extended and projective coordinates when performing addition and
doubling (respectively). But the AVX2 backend doesn't, so in order to write a
single scalar mult implementation, we have to either abstract over the curve
models or have two implementations.

A generic solution is possible but extremely unreadable: the scalar mul
implementation would be parameterized over the point types used by the serial
implementations, with many where clauses describing how the types relate. The
AVX2 types could then be substituted in the appropriate places.

Instead we just duplicate the code into the `avx2` backend.
2018-03-26 16:01:51 -07:00
..
backend Split out constant-time variable-base scalar mul. 2018-03-26 16:01:51 -07:00
curve_models Create a new scalar_mul module hierarchy. 2018-03-26 14:34:28 -07:00
scalar_mul Split out constant-time variable-base scalar mul. 2018-03-26 16:01:51 -07:00
constants.rs Remove unused constants 2018-03-22 12:17:23 -07:00
edwards.rs Split out constant-time variable-base scalar mul. 2018-03-26 16:01:51 -07:00
field.rs Use criterion.rs instead of libtest for benchmarks. 2018-03-25 17:14:37 -07:00
lib.rs Create a new scalar_mul module hierarchy. 2018-03-26 14:34:28 -07:00
macros.rs Implement public-facing ops traits on all combos of &T/T 2018-01-24 11:05:06 -08:00
montgomery.rs Use criterion.rs instead of libtest for benchmarks. 2018-03-25 17:14:37 -07:00
ristretto.rs Use criterion.rs instead of libtest for benchmarks. 2018-03-25 17:14:37 -07:00
scalar.rs Use criterion.rs instead of libtest for benchmarks. 2018-03-25 17:14:37 -07:00
traits.rs Change to the updated subtle API. 2018-03-22 11:13:26 -07:00