Skip to main content

primeorder/mul_backend/
precomputed_tables.rs

1use super::MulBackend;
2use crate::{PrimeCurveParams, PrimeCurveWithBasepointTable, ProjectivePoint};
3use elliptic_curve::Scalar;
4
5/// Backend based on precomputed tables.
6pub struct PrecomputedTables<const WINDOW_SIZE: usize>;
7
8impl<C, const WINDOW_SIZE: usize> MulBackend<C> for PrecomputedTables<WINDOW_SIZE>
9where
10    C: PrimeCurveParams + PrimeCurveWithBasepointTable<WINDOW_SIZE>,
11{
12    #[inline]
13    fn mul_by_generator(k: &Scalar<C>) -> ProjectivePoint<C> {
14        C::BASEPOINT_TABLE.mul(k)
15    }
16
17    #[inline]
18    fn mul_by_generator_vartime(k: &Scalar<C>) -> ProjectivePoint<C> {
19        C::BASEPOINT_TABLE.mul_vartime(k)
20    }
21}