pub struct WnafContext {
pub window_size: usize,
}
Expand description
A helper type that contains all the context required for computing a window NAF multiplication of a group element by a scalar.
Fields§
§window_size: usize
Implementations§
Source§impl WnafContext
impl WnafContext
Sourcepub fn new(window_size: usize) -> WnafContext
pub fn new(window_size: usize) -> WnafContext
Constructs a new context for a window of size window_size
.
§Panics
This function will panic if not 2 <= window_size < 64
pub fn table<G>(&self, base: G) -> Vec<G>where
G: PrimeGroup,
Sourcepub fn mul<G>(&self, g: G, scalar: &<G as PrimeGroup>::ScalarField) -> Gwhere
G: PrimeGroup,
pub fn mul<G>(&self, g: G, scalar: &<G as PrimeGroup>::ScalarField) -> Gwhere
G: PrimeGroup,
Computes scalar multiplication of a group element g
by scalar
.
This method uses the wNAF algorithm to perform the scalar
multiplication; first, it uses Self::table
to calculate an
appropriate table of multiples of g
, and then uses the wNAF
algorithm to compute the scalar multiple.
Sourcepub fn mul_with_table<G>(
&self,
base_table: &[G],
scalar: &<G as PrimeGroup>::ScalarField,
) -> Option<G>where
G: PrimeGroup,
pub fn mul_with_table<G>(
&self,
base_table: &[G],
scalar: &<G as PrimeGroup>::ScalarField,
) -> Option<G>where
G: PrimeGroup,
Computes scalar multiplication of a group element by scalar
.
base_table
holds precomputed multiples of the group element; it can be
generated using Self::table
. scalar
is an element of
G::ScalarField
.
Returns None
if the table is too small.
Auto Trait Implementations§
impl Freeze for WnafContext
impl RefUnwindSafe for WnafContext
impl Send for WnafContext
impl Sync for WnafContext
impl Unpin for WnafContext
impl UnwindSafe for WnafContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more