pub struct G2Projective { /* private fields */ }Expand description
G₂ projective point representation.
Implementations§
Source§impl G2Projective
impl G2Projective
Sourcepub fn identity() -> G2Projective
pub fn identity() -> G2Projective
Point at infinity.
Sourcepub fn generator() -> G2Projective
pub fn generator() -> G2Projective
Fixed generator.
Sourcepub fn multiply_secret_be_bytes(&self, secret: &[u8; 32]) -> Result<Self>
pub fn multiply_secret_be_bytes(&self, secret: &[u8; 32]) -> Result<Self>
Multiply by a canonical, nonzero scalar encoded as a 32-byte big-endian secret key.
This path validates and consumes the borrowed big-endian bytes directly:
it does not construct the generic Copy scalar type or materialize a
second byte-order representation. Multiplication uses exactly 256
MSB-first rounds, always computes both the doubled and added candidate,
and selects with a constant-time mask. Secret-derived point scratch is
explicitly cleared after every round. Platform-specific compiler
inspection is still required for a concrete side-channel claim.
Sourcepub fn random(rng: impl CryptoRng) -> Result<Self, RandomError>
pub fn random(rng: impl CryptoRng) -> Result<Self, RandomError>
Random non-identity element.
Sourcepub fn msm_vartime(points: &[G2Affine], scalars: &[Scalar]) -> Result<Self>
pub fn msm_vartime(points: &[G2Affine], scalars: &[Scalar]) -> Result<Self>
Multi-scalar multiplication using a variable-time Pippenger’s algorithm.
Every scalar passed to this low-level helper must be public. It contains
input-dependent branches and does not provide secret-scratch ownership.
Use Self::multiply_secret_be_bytes for secret scalar multiplication,
or the high-level BLS APIs in dcrypt-sign.
§Panics
Panics if points.len() != scalars.len().
Sourcepub fn double(&self) -> G2Projective
pub fn double(&self) -> G2Projective
Point doubling.
Sourcepub fn add(&self, rhs: &G2Projective) -> G2Projective
pub fn add(&self, rhs: &G2Projective) -> G2Projective
Point addition.
Sourcepub fn add_mixed(&self, rhs: &G2Affine) -> G2Projective
pub fn add_mixed(&self, rhs: &G2Affine) -> G2Projective
Mixed addition with affine point.
Sourcepub fn clear_cofactor(&self) -> G2Projective
pub fn clear_cofactor(&self) -> G2Projective
Clear cofactor.
Sourcepub fn batch_normalize(p: &[Self], q: &mut [G2Affine])
pub fn batch_normalize(p: &[Self], q: &mut [G2Affine])
Batch conversion to affine.
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
Check if on curve y² = x³ + B.
Sourcepub fn from_bytes(bytes: &[u8; 96]) -> CtOption<Self>
pub fn from_bytes(bytes: &[u8; 96]) -> CtOption<Self>
Deserialize a standard compressed group element and enforce subgroup
membership. The canonical identity encoding is accepted; protocols such
as BLS that prohibit identity inputs should use
Self::from_bytes_validated.
Sourcepub fn from_bytes_validated(bytes: &[u8]) -> Result<Self>
pub fn from_bytes_validated(bytes: &[u8]) -> Result<Self>
Deserialize a nonidentity standard compressed point from a byte slice, enforcing canonical field encodings, flag rules, curve membership, and subgroup membership.
Source§impl G2Projective
impl G2Projective
Sourcepub fn hash_to_curve(msg: &[u8], dst: &[u8]) -> Result<Self>
pub fn hash_to_curve(msg: &[u8], dst: &[u8]) -> Result<Self>
Hash a message to a point on G2 using the hash-to-curve protocol.
Trait Implementations§
Source§impl Add for G2Projective
impl Add for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§fn add(self, rhs: G2Projective) -> G2Projective
fn add(self, rhs: G2Projective) -> G2Projective
+ operation. Read moreSource§impl<'a, 'b> Add<&'b G2Affine> for &'a G2Projective
impl<'a, 'b> Add<&'b G2Affine> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§impl<'b> Add<&'b G2Affine> for G2Projective
impl<'b> Add<&'b G2Affine> for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§impl<'a, 'b> Add<&'b G2Projective> for &'a G2Affine
impl<'a, 'b> Add<&'b G2Projective> for &'a G2Affine
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§fn add(self, rhs: &'b G2Projective) -> G2Projective
fn add(self, rhs: &'b G2Projective) -> G2Projective
+ operation. Read moreSource§impl<'b> Add<&'b G2Projective> for G2Affine
impl<'b> Add<&'b G2Projective> for G2Affine
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§fn add(self, rhs: &'b G2Projective) -> G2Projective
fn add(self, rhs: &'b G2Projective) -> G2Projective
+ operation. Read moreSource§impl<'a, 'b> Add<&'b G2Projective> for &'a G2Projective
impl<'a, 'b> Add<&'b G2Projective> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§fn add(self, rhs: &'b G2Projective) -> G2Projective
fn add(self, rhs: &'b G2Projective) -> G2Projective
+ operation. Read moreSource§impl<'b> Add<&'b G2Projective> for G2Projective
impl<'b> Add<&'b G2Projective> for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§fn add(self, rhs: &'b G2Projective) -> G2Projective
fn add(self, rhs: &'b G2Projective) -> G2Projective
+ operation. Read moreSource§impl<'a> Add<G2Affine> for &'a G2Projective
impl<'a> Add<G2Affine> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§impl Add<G2Affine> for G2Projective
impl Add<G2Affine> for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§impl<'a> Add<G2Projective> for &'a G2Affine
impl<'a> Add<G2Projective> for &'a G2Affine
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§fn add(self, rhs: G2Projective) -> G2Projective
fn add(self, rhs: G2Projective) -> G2Projective
+ operation. Read moreSource§impl Add<G2Projective> for G2Affine
impl Add<G2Projective> for G2Affine
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§fn add(self, rhs: G2Projective) -> G2Projective
fn add(self, rhs: G2Projective) -> G2Projective
+ operation. Read moreSource§impl<'a> Add<G2Projective> for &'a G2Projective
impl<'a> Add<G2Projective> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
+ operator.Source§fn add(self, rhs: G2Projective) -> G2Projective
fn add(self, rhs: G2Projective) -> G2Projective
+ operation. Read moreSource§impl AddAssign for G2Projective
impl AddAssign for G2Projective
Source§fn add_assign(&mut self, rhs: G2Projective)
fn add_assign(&mut self, rhs: G2Projective)
+= operation. Read moreSource§impl<'b> AddAssign<&'b G2Affine> for G2Projective
impl<'b> AddAssign<&'b G2Affine> for G2Projective
Source§fn add_assign(&mut self, rhs: &'b G2Affine)
fn add_assign(&mut self, rhs: &'b G2Affine)
+= operation. Read moreSource§impl<'b> AddAssign<&'b G2Projective> for G2Projective
impl<'b> AddAssign<&'b G2Projective> for G2Projective
Source§fn add_assign(&mut self, rhs: &'b G2Projective)
fn add_assign(&mut self, rhs: &'b G2Projective)
+= operation. Read moreSource§impl AddAssign<G2Affine> for G2Projective
impl AddAssign<G2Affine> for G2Projective
Source§fn add_assign(&mut self, rhs: G2Affine)
fn add_assign(&mut self, rhs: G2Affine)
+= operation. Read moreSource§impl Clone for G2Projective
impl Clone for G2Projective
Source§fn clone(&self) -> G2Projective
fn clone(&self) -> G2Projective
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ConditionallySelectable for G2Projective
impl ConditionallySelectable for G2Projective
fn conditional_select(a: &Self, b: &Self, choice: Choice) -> Self
Source§impl ConstantTimeEq for G2Projective
impl ConstantTimeEq for G2Projective
impl Copy for G2Projective
Source§impl Debug for G2Projective
impl Debug for G2Projective
Source§impl Default for G2Projective
impl Default for G2Projective
Source§fn default() -> G2Projective
fn default() -> G2Projective
Source§impl Display for G2Projective
impl Display for G2Projective
impl Eq for G2Projective
Source§impl<'a> From<&'a G2Affine> for G2Projective
impl<'a> From<&'a G2Affine> for G2Projective
Source§fn from(p: &'a G2Affine) -> G2Projective
fn from(p: &'a G2Affine) -> G2Projective
Source§impl<'a> From<&'a G2Projective> for G2Affine
impl<'a> From<&'a G2Projective> for G2Affine
Source§fn from(p: &'a G2Projective) -> G2Affine
fn from(p: &'a G2Projective) -> G2Affine
Source§impl From<G2Affine> for G2Projective
impl From<G2Affine> for G2Projective
Source§fn from(p: G2Affine) -> G2Projective
fn from(p: G2Affine) -> G2Projective
Source§impl From<G2Projective> for G2Affine
impl From<G2Projective> for G2Affine
Source§fn from(p: G2Projective) -> G2Affine
fn from(p: G2Projective) -> G2Affine
Source§impl<'a, 'b> Mul<&'b G2Projective> for &'a Scalar
impl<'a, 'b> Mul<&'b G2Projective> for &'a Scalar
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§impl<'b> Mul<&'b G2Projective> for Scalar
impl<'b> Mul<&'b G2Projective> for Scalar
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§fn mul(self, rhs: &'b G2Projective) -> G2Projective
fn mul(self, rhs: &'b G2Projective) -> G2Projective
* operation. Read moreSource§impl<'a, 'b> Mul<&'b Scalar> for &'a G2Projective
impl<'a, 'b> Mul<&'b Scalar> for &'a G2Projective
Source§impl<'b> Mul<&'b Scalar> for G2Projective
impl<'b> Mul<&'b Scalar> for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§impl<'a> Mul<G2Projective> for &'a Scalar
impl<'a> Mul<G2Projective> for &'a Scalar
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§fn mul(self, rhs: G2Projective) -> G2Projective
fn mul(self, rhs: G2Projective) -> G2Projective
* operation. Read moreSource§impl Mul<G2Projective> for Scalar
impl Mul<G2Projective> for Scalar
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§fn mul(self, rhs: G2Projective) -> G2Projective
fn mul(self, rhs: G2Projective) -> G2Projective
* operation. Read moreSource§impl<'a> Mul<Scalar> for &'a G2Projective
impl<'a> Mul<Scalar> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§impl Mul<Scalar> for G2Projective
impl Mul<Scalar> for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§impl<'b> MulAssign<&'b Scalar> for G2Projective
impl<'b> MulAssign<&'b Scalar> for G2Projective
Source§fn mul_assign(&mut self, rhs: &'b Scalar)
fn mul_assign(&mut self, rhs: &'b Scalar)
*= operation. Read moreSource§impl MulAssign<Scalar> for G2Projective
impl MulAssign<Scalar> for G2Projective
Source§fn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
*= operation. Read moreSource§impl<'a> Neg for &'a G2Projective
impl<'a> Neg for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn neg(self) -> G2Projective
fn neg(self) -> G2Projective
- operation. Read moreSource§impl Neg for G2Projective
impl Neg for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn neg(self) -> G2Projective
fn neg(self) -> G2Projective
- operation. Read moreSource§impl PartialEq for G2Projective
impl PartialEq for G2Projective
Source§impl Sub for G2Projective
impl Sub for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn sub(self, rhs: G2Projective) -> G2Projective
fn sub(self, rhs: G2Projective) -> G2Projective
- operation. Read moreSource§impl<'a, 'b> Sub<&'b G2Affine> for &'a G2Projective
impl<'a, 'b> Sub<&'b G2Affine> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§impl<'b> Sub<&'b G2Affine> for G2Projective
impl<'b> Sub<&'b G2Affine> for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§impl<'a, 'b> Sub<&'b G2Projective> for &'a G2Affine
impl<'a, 'b> Sub<&'b G2Projective> for &'a G2Affine
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn sub(self, rhs: &'b G2Projective) -> G2Projective
fn sub(self, rhs: &'b G2Projective) -> G2Projective
- operation. Read moreSource§impl<'b> Sub<&'b G2Projective> for G2Affine
impl<'b> Sub<&'b G2Projective> for G2Affine
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn sub(self, rhs: &'b G2Projective) -> G2Projective
fn sub(self, rhs: &'b G2Projective) -> G2Projective
- operation. Read moreSource§impl<'a, 'b> Sub<&'b G2Projective> for &'a G2Projective
impl<'a, 'b> Sub<&'b G2Projective> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn sub(self, rhs: &'b G2Projective) -> G2Projective
fn sub(self, rhs: &'b G2Projective) -> G2Projective
- operation. Read moreSource§impl<'b> Sub<&'b G2Projective> for G2Projective
impl<'b> Sub<&'b G2Projective> for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn sub(self, rhs: &'b G2Projective) -> G2Projective
fn sub(self, rhs: &'b G2Projective) -> G2Projective
- operation. Read moreSource§impl<'a> Sub<G2Affine> for &'a G2Projective
impl<'a> Sub<G2Affine> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§impl Sub<G2Affine> for G2Projective
impl Sub<G2Affine> for G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§impl<'a> Sub<G2Projective> for &'a G2Affine
impl<'a> Sub<G2Projective> for &'a G2Affine
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn sub(self, rhs: G2Projective) -> G2Projective
fn sub(self, rhs: G2Projective) -> G2Projective
- operation. Read moreSource§impl Sub<G2Projective> for G2Affine
impl Sub<G2Projective> for G2Affine
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn sub(self, rhs: G2Projective) -> G2Projective
fn sub(self, rhs: G2Projective) -> G2Projective
- operation. Read moreSource§impl<'a> Sub<G2Projective> for &'a G2Projective
impl<'a> Sub<G2Projective> for &'a G2Projective
Source§type Output = G2Projective
type Output = G2Projective
- operator.Source§fn sub(self, rhs: G2Projective) -> G2Projective
fn sub(self, rhs: G2Projective) -> G2Projective
- operation. Read moreSource§impl SubAssign for G2Projective
impl SubAssign for G2Projective
Source§fn sub_assign(&mut self, rhs: G2Projective)
fn sub_assign(&mut self, rhs: G2Projective)
-= operation. Read moreSource§impl<'b> SubAssign<&'b G2Affine> for G2Projective
impl<'b> SubAssign<&'b G2Affine> for G2Projective
Source§fn sub_assign(&mut self, rhs: &'b G2Affine)
fn sub_assign(&mut self, rhs: &'b G2Affine)
-= operation. Read moreSource§impl<'b> SubAssign<&'b G2Projective> for G2Projective
impl<'b> SubAssign<&'b G2Projective> for G2Projective
Source§fn sub_assign(&mut self, rhs: &'b G2Projective)
fn sub_assign(&mut self, rhs: &'b G2Projective)
-= operation. Read moreSource§impl SubAssign<G2Affine> for G2Projective
impl SubAssign<G2Affine> for G2Projective
Source§fn sub_assign(&mut self, rhs: G2Affine)
fn sub_assign(&mut self, rhs: G2Affine)
-= operation. Read more