Straus

Struct Straus 

Source
pub struct Straus {}
Expand description

Multiscalar multiplication using interleaved window / Straus’ method. See the Straus struct in the serial backend for more details.

This exists as a seperate implementation from that one because the AVX2 code uses different curve models (it does not pass between multiple models during scalar mul), and it has to convert the point representation on the fly.

Trait Implementations§

Source§

impl MultiscalarMul for Straus

Source§

type Point = EdwardsPoint

The type of point being multiplied, e.g., RistrettoPoint.
Source§

fn multiscalar_mul<I, J>(scalars: I, points: J) -> EdwardsPoint

Given an iterator of (possibly secret) scalars and an iterator of public points, compute $$ Q = c_1 P_1 + \cdots + c_n P_n. $$ Read more
Source§

impl VartimeMultiscalarMul for Straus

Source§

type Point = EdwardsPoint

The type of point being multiplied, e.g., RistrettoPoint.
Source§

fn optional_multiscalar_mul<I, J>(scalars: I, points: J) -> Option<EdwardsPoint>

Given an iterator of public scalars and an iterator of Options of points, compute either Some(Q), where $$ Q = c_1 P_1 + \cdots + c_n P_n, $$ if all points were Some(P_i), or else return None. Read more
Source§

fn vartime_multiscalar_mul<I, J>(scalars: I, points: J) -> Self::Point
where I: IntoIterator, I::Item: Borrow<Scalar>, J: IntoIterator, J::Item: Borrow<Self::Point>, Self::Point: Clone,

Given an iterator of public scalars and an iterator of public points, compute $$ Q = c_1 P_1 + \cdots + c_n P_n, $$ using variable-time operations. Read more

Auto Trait Implementations§

§

impl Freeze for Straus

§

impl RefUnwindSafe for Straus

§

impl Send for Straus

§

impl Sync for Straus

§

impl Unpin for Straus

§

impl UnwindSafe for Straus

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.