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 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 point generation.
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.
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) -> 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 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 with strict BLS input validation: canonical encoding, curve membership, and subgroup membership.
Source§impl G1Projective
impl G1Projective
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 G1 using the hash-to-curve protocol.
Trait Implementations§
Source§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<'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<'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<'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 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 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<'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 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<'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 Clone for G1Projective
impl Clone for G1Projective
Source§fn clone(&self) -> G1Projective
fn clone(&self) -> G1Projective
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 G1Projective
impl ConditionallySelectable for G1Projective
fn conditional_select(a: &Self, b: &Self, choice: Choice) -> Self
Source§impl ConstantTimeEq for G1Projective
impl ConstantTimeEq for G1Projective
impl Copy 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
impl Eq 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 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<'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<'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<'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 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 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<'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 SubAssign for G1Projective
impl SubAssign for G1Projective
Source§fn sub_assign(&mut self, rhs: G1Projective)
fn sub_assign(&mut self, rhs: 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 more