From f7f3f79da89ec8b08d58718b4df860a4c3314db8 Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Mon, 16 Jul 2018 22:22:21 -0700 Subject: [PATCH] Add missing Ristretto vartime-double-base fn --- src/edwards.rs | 14 +++++--------- src/ristretto.rs | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/edwards.rs b/src/edwards.rs index 63c8689..9930d84 100644 --- a/src/edwards.rs +++ b/src/edwards.rs @@ -587,16 +587,12 @@ impl EdwardsPoint { pub fn vartime_double_scalar_mul_basepoint(a: &Scalar, A: &EdwardsPoint, b: &Scalar) -> EdwardsPoint { // If we built with AVX2, use the AVX2 backend. #[cfg(all(feature="avx2_backend", target_feature="avx2"))] - { - use backend::avx2::scalar_mul::vartime_double_base::mul; - mul(a, A, b) - } - // Otherwise, proceed as normal: + use backend::avx2::scalar_mul::vartime_double_base; + // Otherwise, use the serial backend: #[cfg(not(all(feature="avx2_backend", target_feature="avx2")))] - { - use scalar_mul::vartime_double_base::mul; - mul(a, A, b) - } + use scalar_mul::vartime_double_base; + + vartime_double_base::mul(a, A, b) } } diff --git a/src/ristretto.rs b/src/ristretto.rs index 5581a19..cb4e8e0 100644 --- a/src/ristretto.rs +++ b/src/ristretto.rs @@ -830,6 +830,21 @@ impl VartimeMultiscalarMul for RistrettoPoint { } } +impl RistrettoPoint { + /// Compute \\(aA + bB\\) in variable time, where \\(B\\) is the + /// Ristretto basepoint. + #[cfg(feature = "stage2_build")] + pub fn vartime_double_scalar_mul_basepoint( + a: &Scalar, + A: &RistrettoPoint, + b: &Scalar, + ) -> RistrettoPoint { + RistrettoPoint( + EdwardsPoint::vartime_double_scalar_mul_basepoint(a, &A.0, b) + ) + } +} + /// A precomputed table of multiples of a basepoint, used to accelerate /// scalar multiplication. ///