diff --git a/src/decaf.rs b/src/decaf.rs index d092d9d..f549a78 100644 --- a/src/decaf.rs +++ b/src/decaf.rs @@ -28,6 +28,9 @@ use subtle::CTAssignable; use core::ops::{Add, Sub, Neg}; use curve::ExtendedPoint; +use curve::BasepointMult; +use curve::ScalarMult; +use scalar::Scalar; // ------------------------------------------------------------------------ // Compressed points @@ -181,6 +184,22 @@ impl<'a> Neg for &'a DecafPoint { } } +impl ScalarMult for DecafPoint { + fn scalar_mult(&self, scalar: &Scalar) -> DecafPoint { + DecafPoint(self.0.scalar_mult(scalar)) + } +} + +impl BasepointMult for DecafPoint { + fn basepoint() -> DecafPoint { + DecafPoint(constants::BASEPOINT) + } + + fn basepoint_mult(scalar: &Scalar) -> DecafPoint { + DecafPoint(ExtendedPoint::basepoint_mult(scalar)) + } +} + // ------------------------------------------------------------------------ // Debug traits // ------------------------------------------------------------------------