pub struct G2Affine { /* private fields */ }Expand description
This is an element of $\mathbb{G}_2$ represented in the affine coordinate space. It is ideal to keep elements in this representation to reduce memory usage and improve performance through the use of mixed curve model arithmetic.
Values of G2Affine are guaranteed to be in the $q$-order subgroup unless an
“unchecked” API was misused.
Implementations§
Source§impl G2Affine
impl G2Affine
Sourcepub fn generator() -> G2Affine
pub fn generator() -> G2Affine
Returns a fixed generator of the group. See notes::design
for how this generator is chosen.
Sourcepub fn to_raw_bytes(&self) -> [u8; 193]
pub fn to_raw_bytes(&self) -> [u8; 193]
Raw bytes representation
The intended usage of this function is for trusted sets of data where performance is critical.
For secure serialization, check to_bytes
Sourcepub unsafe fn from_slice_unchecked(bytes: &[u8]) -> Self
pub unsafe fn from_slice_unchecked(bytes: &[u8]) -> Self
Create a G2Affine from a set of bytes created by G2Affine::to_raw_bytes.
No check is performed and no constant time is granted. The expected usage of this function is for trusted bytes where performance is critical.
For secure serialization, check from_bytes
After generating the point, you can check is_on_curve and is_torsion_free to grant its
security
Sourcepub fn is_identity(&self) -> Choice
pub fn is_identity(&self) -> Choice
Returns true if this element is the identity (the point at infinity).
Sourcepub fn is_torsion_free(&self) -> Choice
pub fn is_torsion_free(&self) -> Choice
Returns true if this point is free of an $h$-torsion component, and so it exists within the $q$-order subgroup $\mathbb{G}_2$. This should always return true unless an “unchecked” API was used.
Sourcepub fn is_on_curve(&self) -> Choice
pub fn is_on_curve(&self) -> Choice
Returns true if this point is on the curve. This should always return true unless an “unchecked” API was used.
Trait Implementations§
Source§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> 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<'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 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 ConditionallySelectable for G2Affine
impl ConditionallySelectable for G2Affine
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 G2Affine
impl ConstantTimeEq for G2Affine
Source§impl Decode for G2Affine
impl Decode for G2Affine
Source§impl<'de> Deserialize<'de> for G2Affine
impl<'de> Deserialize<'de> for G2Affine
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Encode for G2Affine
impl Encode for G2Affine
Source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
Source§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
Source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
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 G2Prepared
impl From<G2Affine> for G2Prepared
Source§fn from(q: G2Affine) -> G2Prepared
fn from(q: G2Affine) -> G2Prepared
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<'b> Mul<&'b Scalar> for G2Affine
impl<'b> Mul<&'b Scalar> for G2Affine
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§impl<'a> Mul<Scalar> for &'a G2Affine
impl<'a> Mul<Scalar> for &'a G2Affine
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§impl Mul<Scalar> for G2Affine
impl Mul<Scalar> for G2Affine
Source§type Output = G2Projective
type Output = G2Projective
* operator.Source§impl Serializable<96> for G2Affine
impl Serializable<96> for G2Affine
Source§fn to_bytes(&self) -> [u8; 96]
fn to_bytes(&self) -> [u8; 96]
Serializes this element into compressed form. See notes::serialization
for details about how group elements are serialized.
Source§fn from_bytes(buf: &[u8; 96]) -> Result<Self, Self::Error>
fn from_bytes(buf: &[u8; 96]) -> Result<Self, Self::Error>
Attempts to deserialize a compressed element. See notes::serialization
for details about how group elements are serialized.
Source§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> 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<'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 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