pub struct G1Projective { /* private fields */ }
Expand description
G₁ projective point representation.
Implementations§
Source§impl G1Projective
impl G1Projective
Sourcepub fn identity() -> G1Projective
pub fn identity() -> G1Projective
Point at infinity.
Sourcepub fn generator() -> G1Projective
pub fn generator() -> G1Projective
Fixed generator.
Sourcepub fn msm_vartime(points: &[G1Affine], scalars: &[Scalar]) -> Result<Self>
pub fn msm_vartime(points: &[G1Affine], scalars: &[Scalar]) -> Result<Self>
Multi-scalar multiplication using a variable-time Pippenger’s algorithm.
This method is faster for non-sensitive operations where timing side-channels are not a concern, as it contains input-dependent branches.
§Panics
Panics if points.len() != scalars.len()
.
Sourcepub fn msm(points: &[G1Affine], scalars: &[Scalar]) -> Result<Self>
pub fn msm(points: &[G1Affine], scalars: &[Scalar]) -> Result<Self>
Multi-scalar multiplication using a constant-time Pippenger’s algorithm.
This method is suitable for cryptographic operations where resistance to timing side-channels is required.
§Panics
Panics if points.len() != scalars.len()
.
Sourcepub fn double(&self) -> G1Projective
pub fn double(&self) -> G1Projective
Point doubling.
Sourcepub fn add(&self, rhs: &G1Projective) -> G1Projective
pub fn add(&self, rhs: &G1Projective) -> G1Projective
Point addition.
Sourcepub fn add_mixed(&self, rhs: &G1Affine) -> G1Projective
pub fn add_mixed(&self, rhs: &G1Affine) -> G1Projective
Mixed addition with affine point.
Sourcepub fn clear_cofactor(&self) -> G1Projective
pub fn clear_cofactor(&self) -> G1Projective
Clear cofactor using [x - 1] method.
Sourcepub fn batch_normalize(p: &[Self], q: &mut [G1Affine])
pub fn batch_normalize(p: &[Self], q: &mut [G1Affine])
Batch affine conversion.
Sourcepub fn is_identity(&self) -> Choice
pub fn is_identity(&self) -> Choice
Check if point at infinity.
Sourcepub fn is_on_curve(&self) -> Choice
pub fn is_on_curve(&self) -> Choice
Curve membership check.
Sourcepub fn from_bytes(bytes: &[u8; 48]) -> CtOption<Self>
pub fn from_bytes(bytes: &[u8; 48]) -> CtOption<Self>
Deserialize from compressed bytes.
Sourcepub fn from_bytes_unchecked(bytes: &[u8; 48]) -> CtOption<Self>
pub fn from_bytes_unchecked(bytes: &[u8; 48]) -> CtOption<Self>
Deserialize without validation.
Sourcepub fn from_bytes_validated(bytes: &[u8]) -> Result<Self>
pub fn from_bytes_validated(bytes: &[u8]) -> Result<Self>
Deserialize from compressed bytes with dcrypt error handling and validation.
Trait Implementations§
Source§impl<'a, 'b> Add<&'b G1Affine> for &'a G1Projective
impl<'a, 'b> Add<&'b G1Affine> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§impl<'b> Add<&'b G1Affine> for G1Projective
impl<'b> Add<&'b G1Affine> for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§impl<'a, 'b> Add<&'b G1Projective> for &'a G1Affine
impl<'a, 'b> Add<&'b G1Projective> for &'a G1Affine
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§fn add(self, rhs: &'b G1Projective) -> G1Projective
fn add(self, rhs: &'b G1Projective) -> G1Projective
+
operation. Read moreSource§impl<'a, 'b> Add<&'b G1Projective> for &'a G1Projective
impl<'a, 'b> Add<&'b G1Projective> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§fn add(self, rhs: &'b G1Projective) -> G1Projective
fn add(self, rhs: &'b G1Projective) -> G1Projective
+
operation. Read moreSource§impl<'b> Add<&'b G1Projective> for G1Affine
impl<'b> Add<&'b G1Projective> for G1Affine
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§fn add(self, rhs: &'b G1Projective) -> G1Projective
fn add(self, rhs: &'b G1Projective) -> G1Projective
+
operation. Read moreSource§impl<'b> Add<&'b G1Projective> for G1Projective
impl<'b> Add<&'b G1Projective> for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§fn add(self, rhs: &'b G1Projective) -> G1Projective
fn add(self, rhs: &'b G1Projective) -> G1Projective
+
operation. Read moreSource§impl<'a> Add<G1Affine> for &'a G1Projective
impl<'a> Add<G1Affine> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§impl Add<G1Affine> for G1Projective
impl Add<G1Affine> for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§impl<'a> Add<G1Projective> for &'a G1Affine
impl<'a> Add<G1Projective> for &'a G1Affine
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§fn add(self, rhs: G1Projective) -> G1Projective
fn add(self, rhs: G1Projective) -> G1Projective
+
operation. Read moreSource§impl<'a> Add<G1Projective> for &'a G1Projective
impl<'a> Add<G1Projective> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§fn add(self, rhs: G1Projective) -> G1Projective
fn add(self, rhs: G1Projective) -> G1Projective
+
operation. Read moreSource§impl Add<G1Projective> for G1Affine
impl Add<G1Projective> for G1Affine
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§fn add(self, rhs: G1Projective) -> G1Projective
fn add(self, rhs: G1Projective) -> G1Projective
+
operation. Read moreSource§impl Add for G1Projective
impl Add for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
+
operator.Source§fn add(self, rhs: G1Projective) -> G1Projective
fn add(self, rhs: G1Projective) -> G1Projective
+
operation. Read moreSource§impl<'b> AddAssign<&'b G1Affine> for G1Projective
impl<'b> AddAssign<&'b G1Affine> for G1Projective
Source§fn add_assign(&mut self, rhs: &'b G1Affine)
fn add_assign(&mut self, rhs: &'b G1Affine)
+=
operation. Read moreSource§impl<'b> AddAssign<&'b G1Projective> for G1Projective
impl<'b> AddAssign<&'b G1Projective> for G1Projective
Source§fn add_assign(&mut self, rhs: &'b G1Projective)
fn add_assign(&mut self, rhs: &'b G1Projective)
+=
operation. Read moreSource§impl AddAssign<G1Affine> for G1Projective
impl AddAssign<G1Affine> for G1Projective
Source§fn add_assign(&mut self, rhs: G1Affine)
fn add_assign(&mut self, rhs: G1Affine)
+=
operation. Read moreSource§impl AddAssign for G1Projective
impl AddAssign for G1Projective
Source§fn add_assign(&mut self, rhs: G1Projective)
fn add_assign(&mut self, rhs: G1Projective)
+=
operation. Read moreSource§impl Clone for G1Projective
impl Clone for G1Projective
Source§fn clone(&self) -> G1Projective
fn clone(&self) -> G1Projective
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl ConditionallySelectable for G1Projective
impl ConditionallySelectable for G1Projective
Source§fn conditional_select(a: &Self, b: &Self, choice: Choice) -> Self
fn conditional_select(a: &Self, b: &Self, choice: Choice) -> Self
Source§fn conditional_assign(&mut self, other: &Self, choice: Choice)
fn conditional_assign(&mut self, other: &Self, choice: Choice)
Source§fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
self
and other
if choice == 1
; otherwise,
reassign both unto themselves. Read moreSource§impl ConstantTimeEq for G1Projective
impl ConstantTimeEq for G1Projective
Source§impl Debug for G1Projective
impl Debug for G1Projective
Source§impl Default for G1Projective
impl Default for G1Projective
Source§fn default() -> G1Projective
fn default() -> G1Projective
Source§impl Display for G1Projective
impl Display for G1Projective
Source§impl<'a> From<&'a G1Affine> for G1Projective
impl<'a> From<&'a G1Affine> for G1Projective
Source§fn from(p: &'a G1Affine) -> G1Projective
fn from(p: &'a G1Affine) -> G1Projective
Source§impl<'a> From<&'a G1Projective> for G1Affine
impl<'a> From<&'a G1Projective> for G1Affine
Source§fn from(p: &'a G1Projective) -> G1Affine
fn from(p: &'a G1Projective) -> G1Affine
Source§impl From<G1Affine> for G1Projective
impl From<G1Affine> for G1Projective
Source§fn from(p: G1Affine) -> G1Projective
fn from(p: G1Affine) -> G1Projective
Source§impl From<G1Projective> for G1Affine
impl From<G1Projective> for G1Affine
Source§fn from(p: G1Projective) -> G1Affine
fn from(p: G1Projective) -> G1Affine
Source§impl<'a, 'b> Mul<&'b G1Projective> for &'a Scalar
impl<'a, 'b> Mul<&'b G1Projective> for &'a Scalar
Source§type Output = G1Projective
type Output = G1Projective
*
operator.Source§impl<'b> Mul<&'b G1Projective> for Scalar
impl<'b> Mul<&'b G1Projective> for Scalar
Source§type Output = G1Projective
type Output = G1Projective
*
operator.Source§fn mul(self, rhs: &'b G1Projective) -> G1Projective
fn mul(self, rhs: &'b G1Projective) -> G1Projective
*
operation. Read moreSource§impl<'a, 'b> Mul<&'b Scalar> for &'a G1Projective
impl<'a, 'b> Mul<&'b Scalar> for &'a G1Projective
Source§impl<'b> Mul<&'b Scalar> for G1Projective
impl<'b> Mul<&'b Scalar> for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
*
operator.Source§impl<'a> Mul<G1Projective> for &'a Scalar
impl<'a> Mul<G1Projective> for &'a Scalar
Source§type Output = G1Projective
type Output = G1Projective
*
operator.Source§fn mul(self, rhs: G1Projective) -> G1Projective
fn mul(self, rhs: G1Projective) -> G1Projective
*
operation. Read moreSource§impl Mul<G1Projective> for Scalar
impl Mul<G1Projective> for Scalar
Source§type Output = G1Projective
type Output = G1Projective
*
operator.Source§fn mul(self, rhs: G1Projective) -> G1Projective
fn mul(self, rhs: G1Projective) -> G1Projective
*
operation. Read moreSource§impl<'a> Mul<Scalar> for &'a G1Projective
impl<'a> Mul<Scalar> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
*
operator.Source§impl Mul<Scalar> for G1Projective
impl Mul<Scalar> for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
*
operator.Source§impl<'b> MulAssign<&'b Scalar> for G1Projective
impl<'b> MulAssign<&'b Scalar> for G1Projective
Source§fn mul_assign(&mut self, rhs: &'b Scalar)
fn mul_assign(&mut self, rhs: &'b Scalar)
*=
operation. Read moreSource§impl MulAssign<Scalar> for G1Projective
impl MulAssign<Scalar> for G1Projective
Source§fn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
*=
operation. Read moreSource§impl<'a> Neg for &'a G1Projective
impl<'a> Neg for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn neg(self) -> G1Projective
fn neg(self) -> G1Projective
-
operation. Read moreSource§impl Neg for G1Projective
impl Neg for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn neg(self) -> G1Projective
fn neg(self) -> G1Projective
-
operation. Read moreSource§impl PartialEq for G1Projective
impl PartialEq for G1Projective
Source§impl<'a, 'b> Sub<&'b G1Affine> for &'a G1Projective
impl<'a, 'b> Sub<&'b G1Affine> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§impl<'b> Sub<&'b G1Affine> for G1Projective
impl<'b> Sub<&'b G1Affine> for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§impl<'a, 'b> Sub<&'b G1Projective> for &'a G1Affine
impl<'a, 'b> Sub<&'b G1Projective> for &'a G1Affine
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn sub(self, rhs: &'b G1Projective) -> G1Projective
fn sub(self, rhs: &'b G1Projective) -> G1Projective
-
operation. Read moreSource§impl<'a, 'b> Sub<&'b G1Projective> for &'a G1Projective
impl<'a, 'b> Sub<&'b G1Projective> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn sub(self, rhs: &'b G1Projective) -> G1Projective
fn sub(self, rhs: &'b G1Projective) -> G1Projective
-
operation. Read moreSource§impl<'b> Sub<&'b G1Projective> for G1Affine
impl<'b> Sub<&'b G1Projective> for G1Affine
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn sub(self, rhs: &'b G1Projective) -> G1Projective
fn sub(self, rhs: &'b G1Projective) -> G1Projective
-
operation. Read moreSource§impl<'b> Sub<&'b G1Projective> for G1Projective
impl<'b> Sub<&'b G1Projective> for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn sub(self, rhs: &'b G1Projective) -> G1Projective
fn sub(self, rhs: &'b G1Projective) -> G1Projective
-
operation. Read moreSource§impl<'a> Sub<G1Affine> for &'a G1Projective
impl<'a> Sub<G1Affine> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§impl Sub<G1Affine> for G1Projective
impl Sub<G1Affine> for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§impl<'a> Sub<G1Projective> for &'a G1Affine
impl<'a> Sub<G1Projective> for &'a G1Affine
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn sub(self, rhs: G1Projective) -> G1Projective
fn sub(self, rhs: G1Projective) -> G1Projective
-
operation. Read moreSource§impl<'a> Sub<G1Projective> for &'a G1Projective
impl<'a> Sub<G1Projective> for &'a G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn sub(self, rhs: G1Projective) -> G1Projective
fn sub(self, rhs: G1Projective) -> G1Projective
-
operation. Read moreSource§impl Sub<G1Projective> for G1Affine
impl Sub<G1Projective> for G1Affine
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn sub(self, rhs: G1Projective) -> G1Projective
fn sub(self, rhs: G1Projective) -> G1Projective
-
operation. Read moreSource§impl Sub for G1Projective
impl Sub for G1Projective
Source§type Output = G1Projective
type Output = G1Projective
-
operator.Source§fn sub(self, rhs: G1Projective) -> G1Projective
fn sub(self, rhs: G1Projective) -> G1Projective
-
operation. Read moreSource§impl<'b> SubAssign<&'b G1Affine> for G1Projective
impl<'b> SubAssign<&'b G1Affine> for G1Projective
Source§fn sub_assign(&mut self, rhs: &'b G1Affine)
fn sub_assign(&mut self, rhs: &'b G1Affine)
-=
operation. Read moreSource§impl<'b> SubAssign<&'b G1Projective> for G1Projective
impl<'b> SubAssign<&'b G1Projective> for G1Projective
Source§fn sub_assign(&mut self, rhs: &'b G1Projective)
fn sub_assign(&mut self, rhs: &'b G1Projective)
-=
operation. Read moreSource§impl SubAssign<G1Affine> for G1Projective
impl SubAssign<G1Affine> for G1Projective
Source§fn sub_assign(&mut self, rhs: G1Affine)
fn sub_assign(&mut self, rhs: G1Affine)
-=
operation. Read moreSource§impl SubAssign for G1Projective
impl SubAssign for G1Projective
Source§fn sub_assign(&mut self, rhs: G1Projective)
fn sub_assign(&mut self, rhs: G1Projective)
-=
operation. Read more