pub struct MontgomeryPoint(pub [u8; 32]);
Expand description

Holds the \(u\)-coordinate of a point on the Montgomery form of Curve25519 or its twist.

Tuple Fields§

§0: [u8; 32]

Implementations§

source§

impl MontgomeryPoint

source

pub fn mul_base(scalar: &Scalar) -> Self

Fixed-base scalar multiplication (i.e. multiplication by the base point).

source

pub const fn as_bytes(&self) -> &[u8; 32]

View this MontgomeryPoint as an array of bytes.

source

pub const fn to_bytes(&self) -> [u8; 32]

Convert this MontgomeryPoint to an array of bytes.

source

pub fn to_edwards(&self, sign: u8) -> Option<EdwardsPoint>

Attempt to convert to an EdwardsPoint, using the supplied choice of sign for the EdwardsPoint.

Inputs
  • sign: a u8 donating the desired sign of the resulting EdwardsPoint. 0 denotes positive and 1 negative.
Return
  • Some(EdwardsPoint) if self is the \(u\)-coordinate of a point on (the Montgomery form of) Curve25519;

  • None if self is the \(u\)-coordinate of a point on the twist of (the Montgomery form of) Curve25519;

Trait Implementations§

source§

impl Clone for MontgomeryPoint

source§

fn clone(&self) -> MontgomeryPoint

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ConstantTimeEq for MontgomeryPoint

Equality of MontgomeryPoints is defined mod p.

source§

fn ct_eq(&self, other: &MontgomeryPoint) -> Choice

Determine if two items are equal. Read more
source§

impl Debug for MontgomeryPoint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MontgomeryPoint

source§

fn default() -> MontgomeryPoint

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MontgomeryPoint

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
    __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for MontgomeryPoint

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where
    H: Hasher,
    Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Identity for MontgomeryPoint

source§

fn identity() -> MontgomeryPoint

Return the group identity element, which has order 4.

source§

impl<'a, 'b> Mul<&'b MontgomeryPoint> for &'a Scalar

§

type Output = MontgomeryPoint

The resulting type after applying the * operator.
source§

fn mul(self, point: &'b MontgomeryPoint) -> MontgomeryPoint

Performs the * operation. Read more
source§

impl<'b> Mul<&'b MontgomeryPoint> for Scalar

§

type Output = MontgomeryPoint

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &'b MontgomeryPoint) -> MontgomeryPoint

Performs the * operation. Read more
source§

impl<'a, 'b> Mul<&'b Scalar> for &'a MontgomeryPoint

Multiply this MontgomeryPoint by a Scalar.

source§

fn mul(self, scalar: &'b Scalar) -> MontgomeryPoint

Given self \( = u_0(P) \), and a Scalar \(n\), return \( u_0([n]P) \).

§

type Output = MontgomeryPoint

The resulting type after applying the * operator.
source§

impl<'b> Mul<&'b Scalar> for MontgomeryPoint

§

type Output = MontgomeryPoint

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &'b Scalar) -> MontgomeryPoint

Performs the * operation. Read more
source§

impl<'a> Mul<MontgomeryPoint> for &'a Scalar

§

type Output = MontgomeryPoint

The resulting type after applying the * operator.
source§

fn mul(self, rhs: MontgomeryPoint) -> MontgomeryPoint

Performs the * operation. Read more
source§

impl Mul<MontgomeryPoint> for Scalar

§

type Output = MontgomeryPoint

The resulting type after applying the * operator.
source§

fn mul(self, rhs: MontgomeryPoint) -> MontgomeryPoint

Performs the * operation. Read more
source§

impl<'a> Mul<Scalar> for &'a MontgomeryPoint

§

type Output = MontgomeryPoint

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Scalar) -> MontgomeryPoint

Performs the * operation. Read more
source§

impl Mul<Scalar> for MontgomeryPoint

§

type Output = MontgomeryPoint

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Scalar) -> MontgomeryPoint

Performs the * operation. Read more
source§

impl<'b> MulAssign<&'b Scalar> for MontgomeryPoint

source§

fn mul_assign(&mut self, scalar: &'b Scalar)

Performs the *= operation. Read more
source§

impl MulAssign<Scalar> for MontgomeryPoint

source§

fn mul_assign(&mut self, rhs: Scalar)

Performs the *= operation. Read more
source§

impl PartialEq<MontgomeryPoint> for MontgomeryPoint

source§

fn eq(&self, other: &MontgomeryPoint) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for MontgomeryPoint

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where
    __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Zeroize for MontgomeryPoint

Available on crate feature zeroize only.
source§

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.
source§

impl Copy for MontgomeryPoint

source§

impl Eq for MontgomeryPoint

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T, U> Cast<U> for Twhere
    U: FromCast<T>,

source§

fn cast(self) -> U

Numeric cast from self to T.
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromBits<T> for T

source§

fn from_bits(t: T) -> T

Safe lossless bitwise transmute from T to Self.
source§

impl<T> FromCast<T> for T

source§

fn from_cast(t: T) -> T

Numeric cast from T to Self.
source§

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

const: unstable · 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> IntoBits<U> for Twhere
    U: FromBits<T>,

source§

fn into_bits(self) -> U

Safe lossless bitwise transmute from self to T.
source§

impl<T> IsIdentity for Twhere
    T: ConstantTimeEq + Identity,

source§

fn is_identity(&self) -> bool

Return true if this element is the identity element of the curve.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere
    T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

impl<T> DeserializeOwned for Twhere
    T: for<'de> Deserialize<'de>,