[−][src]Struct curve25519_dalek::edwards::EdwardsPoint
An EdwardsPoint
represents a point on the Edwards form of Curve25519.
Fields
X: FieldElement51
Y: FieldElement51
Z: FieldElement51
T: FieldElement51
Methods
impl EdwardsPoint
[src]
pub(crate) fn to_projective_niels(&self) -> ProjectiveNielsPoint
[src]
Convert to a ProjectiveNielsPoint
pub(crate) fn to_projective(&self) -> ProjectivePoint
[src]
Convert the representation of this point from extended coordinates to projective coordinates.
Free.
pub(crate) fn to_affine_niels(&self) -> AffineNielsPoint
[src]
Dehomogenize to a AffineNielsPoint. Mainly for testing.
pub fn to_montgomery(&self) -> MontgomeryPoint
[src]
Convert this EdwardsPoint
on the Edwards model to the
corresponding MontgomeryPoint
on the Montgomery model.
This function has one exceptional case; the identity point of the Edwards curve is sent to the 2-torsion point \((0,0)\) on the Montgomery curve.
Note that this is a one-way conversion, since the Montgomery model does not retain sign information.
pub fn compress(&self) -> CompressedEdwardsY
[src]
Compress this point to CompressedEdwardsY
format.
impl EdwardsPoint
[src]
pub(crate) fn double(&self) -> EdwardsPoint
[src]
Add this point to itself.
impl EdwardsPoint
[src]
pub fn vartime_double_scalar_mul_basepoint(
a: &Scalar,
A: &EdwardsPoint,
b: &Scalar
) -> EdwardsPoint
[src]
a: &Scalar,
A: &EdwardsPoint,
b: &Scalar
) -> EdwardsPoint
Compute \(aA + bB\) in variable time, where \(B\) is the Ed25519 basepoint.
impl EdwardsPoint
[src]
pub fn mul_by_cofactor(&self) -> EdwardsPoint
[src]
Multiply by the cofactor: return \([8]P\).
pub(crate) fn mul_by_pow_2(&self, k: u32) -> EdwardsPoint
[src]
Compute \([2^k] P \) by successive doublings. Requires \( k > 0 \).
pub fn is_small_order(&self) -> bool
[src]
Determine if this point is of small order.
Return
true
ifself
is in the torsion subgroup \( \mathcal E[8] \);false
ifself
is not in the torsion subgroup \( \mathcal E[8] \).
Example
use curve25519_dalek::constants; // Generator of the prime-order subgroup let P = constants::ED25519_BASEPOINT_POINT; // Generator of the torsion subgroup let Q = constants::EIGHT_TORSION[1]; // P has large order assert_eq!(P.is_small_order(), false); // Q has small order assert_eq!(Q.is_small_order(), true);
pub fn is_torsion_free(&self) -> bool
[src]
Determine if this point is “torsion-free”, i.e., is contained in the prime-order subgroup.
Return
true
ifself
has zero torsion component and is in the prime-order subgroup;false
ifself
has a nonzero torsion component and is not in the prime-order subgroup.
Example
use curve25519_dalek::constants; // Generator of the prime-order subgroup let P = constants::ED25519_BASEPOINT_POINT; // Generator of the torsion subgroup let Q = constants::EIGHT_TORSION[1]; // P is torsion-free assert_eq!(P.is_torsion_free(), true); // P + Q is not torsion-free assert_eq!((P+Q).is_torsion_free(), false);
Trait Implementations
impl<'a, 'b> Add<&'b AffineNielsPoint> for &'a EdwardsPoint
[src]
type Output = CompletedPoint
The resulting type after applying the +
operator.
fn add(self, other: &'b AffineNielsPoint) -> CompletedPoint
[src]
impl<'a, 'b> Add<&'b EdwardsPoint> for &'a EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the +
operator.
fn add(self, other: &'b EdwardsPoint) -> EdwardsPoint
[src]
impl<'b> Add<&'b EdwardsPoint> for EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the +
operator.
fn add(self, rhs: &'b EdwardsPoint) -> EdwardsPoint
[src]
impl<'a, 'b> Add<&'b ProjectiveNielsPoint> for &'a EdwardsPoint
[src]
type Output = CompletedPoint
The resulting type after applying the +
operator.
fn add(self, other: &'b ProjectiveNielsPoint) -> CompletedPoint
[src]
impl<'a> Add<EdwardsPoint> for &'a EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the +
operator.
fn add(self, rhs: EdwardsPoint) -> EdwardsPoint
[src]
impl Add<EdwardsPoint> for EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the +
operator.
fn add(self, rhs: EdwardsPoint) -> EdwardsPoint
[src]
impl<'b> AddAssign<&'b EdwardsPoint> for EdwardsPoint
[src]
fn add_assign(&mut self, _rhs: &'b EdwardsPoint)
[src]
impl AddAssign<EdwardsPoint> for EdwardsPoint
[src]
fn add_assign(&mut self, rhs: EdwardsPoint)
[src]
impl Clone for EdwardsPoint
[src]
fn clone(&self) -> EdwardsPoint
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl ConditionallySelectable for EdwardsPoint
[src]
fn conditional_select(
a: &EdwardsPoint,
b: &EdwardsPoint,
choice: Choice
) -> EdwardsPoint
[src]
a: &EdwardsPoint,
b: &EdwardsPoint,
choice: Choice
) -> EdwardsPoint
fn conditional_assign(&mut self, other: &Self, choice: Choice)
[src]
fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
[src]
impl ConstantTimeEq for EdwardsPoint
[src]
fn ct_eq(&self, other: &EdwardsPoint) -> Choice
[src]
impl Copy for EdwardsPoint
[src]
impl Debug for EdwardsPoint
[src]
impl Default for EdwardsPoint
[src]
fn default() -> EdwardsPoint
[src]
impl Eq for EdwardsPoint
[src]
fn assert_receiver_is_total_eq(&self)
1.0.0[src]
impl<'a> From<&'a EdwardsPoint> for LookupTable<ProjectiveNielsPoint>
[src]
fn from(P: &'a EdwardsPoint) -> Self
[src]
impl<'a> From<&'a EdwardsPoint> for LookupTable<AffineNielsPoint>
[src]
fn from(P: &'a EdwardsPoint) -> Self
[src]
impl<'a> From<&'a EdwardsPoint> for NafLookupTable5<ProjectiveNielsPoint>
[src]
fn from(A: &'a EdwardsPoint) -> Self
[src]
impl<'a> From<&'a EdwardsPoint> for NafLookupTable5<AffineNielsPoint>
[src]
fn from(A: &'a EdwardsPoint) -> Self
[src]
impl<'a> From<&'a EdwardsPoint> for NafLookupTable8<ProjectiveNielsPoint>
[src]
fn from(A: &'a EdwardsPoint) -> Self
[src]
impl<'a> From<&'a EdwardsPoint> for NafLookupTable8<AffineNielsPoint>
[src]
fn from(A: &'a EdwardsPoint) -> Self
[src]
impl Identity for EdwardsPoint
[src]
fn identity() -> EdwardsPoint
[src]
impl<'b> Mul<&'b EdwardsPoint> for Scalar
[src]
type Output = EdwardsPoint
The resulting type after applying the *
operator.
fn mul(self, rhs: &'b EdwardsPoint) -> EdwardsPoint
[src]
impl<'a, 'b> Mul<&'b EdwardsPoint> for &'a Scalar
[src]
type Output = EdwardsPoint
The resulting type after applying the *
operator.
fn mul(self, point: &'b EdwardsPoint) -> EdwardsPoint
[src]
Scalar multiplication: compute scalar * self
.
For scalar multiplication of a basepoint,
EdwardsBasepointTable
is approximately 4x faster.
impl<'b> Mul<&'b Scalar> for EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the *
operator.
fn mul(self, rhs: &'b Scalar) -> EdwardsPoint
[src]
impl<'a, 'b> Mul<&'b Scalar> for &'a EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the *
operator.
fn mul(self, scalar: &'b Scalar) -> EdwardsPoint
[src]
Scalar multiplication: compute scalar * self
.
For scalar multiplication of a basepoint,
EdwardsBasepointTable
is approximately 4x faster.
impl<'a> Mul<EdwardsPoint> for &'a Scalar
[src]
type Output = EdwardsPoint
The resulting type after applying the *
operator.
fn mul(self, rhs: EdwardsPoint) -> EdwardsPoint
[src]
impl Mul<EdwardsPoint> for Scalar
[src]
type Output = EdwardsPoint
The resulting type after applying the *
operator.
fn mul(self, rhs: EdwardsPoint) -> EdwardsPoint
[src]
impl<'a> Mul<Scalar> for &'a EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the *
operator.
fn mul(self, rhs: Scalar) -> EdwardsPoint
[src]
impl Mul<Scalar> for EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the *
operator.
fn mul(self, rhs: Scalar) -> EdwardsPoint
[src]
impl<'b> MulAssign<&'b Scalar> for EdwardsPoint
[src]
fn mul_assign(&mut self, scalar: &'b Scalar)
[src]
impl MulAssign<Scalar> for EdwardsPoint
[src]
fn mul_assign(&mut self, rhs: Scalar)
[src]
impl MultiscalarMul for EdwardsPoint
[src]
type Point = EdwardsPoint
The type of point being multiplied, e.g., RistrettoPoint
.
fn multiscalar_mul<I, J>(scalars: I, points: J) -> EdwardsPoint where
I: IntoIterator,
I::Item: Borrow<Scalar>,
J: IntoIterator,
J::Item: Borrow<EdwardsPoint>,
[src]
I: IntoIterator,
I::Item: Borrow<Scalar>,
J: IntoIterator,
J::Item: Borrow<EdwardsPoint>,
impl<'a> Neg for &'a EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the -
operator.
fn neg(self) -> EdwardsPoint
[src]
impl Neg for EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the -
operator.
fn neg(self) -> EdwardsPoint
[src]
impl PartialEq<EdwardsPoint> for EdwardsPoint
[src]
fn eq(&self, other: &EdwardsPoint) -> bool
[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'a, 'b> Sub<&'b AffineNielsPoint> for &'a EdwardsPoint
[src]
type Output = CompletedPoint
The resulting type after applying the -
operator.
fn sub(self, other: &'b AffineNielsPoint) -> CompletedPoint
[src]
impl<'a, 'b> Sub<&'b EdwardsPoint> for &'a EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the -
operator.
fn sub(self, other: &'b EdwardsPoint) -> EdwardsPoint
[src]
impl<'b> Sub<&'b EdwardsPoint> for EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the -
operator.
fn sub(self, rhs: &'b EdwardsPoint) -> EdwardsPoint
[src]
impl<'a, 'b> Sub<&'b ProjectiveNielsPoint> for &'a EdwardsPoint
[src]
type Output = CompletedPoint
The resulting type after applying the -
operator.
fn sub(self, other: &'b ProjectiveNielsPoint) -> CompletedPoint
[src]
impl<'a> Sub<EdwardsPoint> for &'a EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the -
operator.
fn sub(self, rhs: EdwardsPoint) -> EdwardsPoint
[src]
impl Sub<EdwardsPoint> for EdwardsPoint
[src]
type Output = EdwardsPoint
The resulting type after applying the -
operator.
fn sub(self, rhs: EdwardsPoint) -> EdwardsPoint
[src]
impl<'b> SubAssign<&'b EdwardsPoint> for EdwardsPoint
[src]
fn sub_assign(&mut self, _rhs: &'b EdwardsPoint)
[src]
impl SubAssign<EdwardsPoint> for EdwardsPoint
[src]
fn sub_assign(&mut self, rhs: EdwardsPoint)
[src]
impl<T> Sum<T> for EdwardsPoint where
T: Borrow<EdwardsPoint>,
[src]
T: Borrow<EdwardsPoint>,
impl ValidityCheck for EdwardsPoint
[src]
impl VartimeMultiscalarMul for EdwardsPoint
[src]
type Point = EdwardsPoint
The type of point being multiplied, e.g., RistrettoPoint
.
fn optional_multiscalar_mul<I, J>(scalars: I, points: J) -> Option<EdwardsPoint> where
I: IntoIterator,
I::Item: Borrow<Scalar>,
J: IntoIterator<Item = Option<EdwardsPoint>>,
[src]
I: IntoIterator,
I::Item: Borrow<Scalar>,
J: IntoIterator<Item = Option<EdwardsPoint>>,
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,
[src]
I: IntoIterator,
I::Item: Borrow<Scalar>,
J: IntoIterator,
J::Item: Borrow<Self::Point>,
Self::Point: Clone,
Auto Trait Implementations
impl RefUnwindSafe for EdwardsPoint
impl Send for EdwardsPoint
impl Sync for EdwardsPoint
impl Unpin for EdwardsPoint
impl UnwindSafe for EdwardsPoint
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> Cast<U> for T where
U: FromCast<T>,
U: FromCast<T>,
fn cast(self) -> U
impl<T> ConditionallyNegatable for T where
T: ConditionallySelectable,
&'a T: Neg,
<&'a T as Neg>::Output == T,
[src]
T: ConditionallySelectable,
&'a T: Neg,
<&'a T as Neg>::Output == T,
fn conditional_negate(&mut self, choice: Choice)
[src]
impl<T> From<T> for T
[src]
impl<T> FromBits<T> for T
fn from_bits(t: T) -> T
impl<T> FromCast<T> for T
fn from_cast(t: T) -> T
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> IntoBits<U> for T where
U: FromBits<T>,
U: FromBits<T>,
fn into_bits(self) -> U
impl<T> IsIdentity for T where
T: ConstantTimeEq + Identity,
[src]
T: ConstantTimeEq + Identity,
fn is_identity(&Self) -> bool
[src]
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,