pub struct IsogenyMap<'a, Domain: SWCurveConfig, Codomain: SWCurveConfig<BaseField = <Domain as CurveConfig>::BaseField>> {
pub x_map_numerator: &'a [<Domain as CurveConfig>::BaseField],
pub x_map_denominator: &'a [<Codomain as CurveConfig>::BaseField],
pub y_map_numerator: &'a [<Domain as CurveConfig>::BaseField],
pub y_map_denominator: &'a [<Codomain as CurveConfig>::BaseField],
}Expand description
IsogenyMap defines an isogeny between curves of
form Phi(x, y) := (a(x), b(x)*y). The xcoordinate of the codomain point only depends on thex-coordinate of the domain point, and the y-coordinate of the codomain point is a multiple of the y-coordinate of the domain point. The multiplier depends on the x`-coordinate of the domain point.
All isogeny maps of curves of short Weierstrass form can be written in this way. See
[[Ga18]]. Theorem 9.7.5 for details.
We assume that Domain and Codomain have the same BaseField but we use both
BaseField<Domain> and BaseField<Codomain> in our fields’ definitions to avoid
using PhantomData
- [[Ga18]] Galbraith, S. D. (2018). Mathematics of public key cryptography.
Fields§
§x_map_numerator: &'a [<Domain as CurveConfig>::BaseField]§x_map_denominator: &'a [<Codomain as CurveConfig>::BaseField]§y_map_numerator: &'a [<Domain as CurveConfig>::BaseField]§y_map_denominator: &'a [<Codomain as CurveConfig>::BaseField]Auto Trait Implementations§
impl<'a, Domain, Codomain> Freeze for IsogenyMap<'a, Domain, Codomain>
impl<'a, Domain, Codomain> RefUnwindSafe for IsogenyMap<'a, Domain, Codomain>
impl<'a, Domain, Codomain> Send for IsogenyMap<'a, Domain, Codomain>
impl<'a, Domain, Codomain> Sync for IsogenyMap<'a, Domain, Codomain>
impl<'a, Domain, Codomain> Unpin for IsogenyMap<'a, Domain, Codomain>
impl<'a, Domain, Codomain> UnwindSafe for IsogenyMap<'a, Domain, Codomain>
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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