pub trait GroupEncoding: Sized {
    type Repr: Copy + Default + Send + Sync + 'static + AsRef<[u8]> + AsMut<[u8]>;

    // Required methods
    fn from_bytes(bytes: &Self::Repr) -> CtOption<Self>;
    fn from_bytes_unchecked(bytes: &Self::Repr) -> CtOption<Self>;
    fn to_bytes(&self) -> Self::Repr;
}

Required Associated Types§

type Repr: Copy + Default + Send + Sync + 'static + AsRef<[u8]> + AsMut<[u8]>

The encoding of group elements.

The Default implementation is not required to return a valid point encoding. The bound is present to enable encodings to be constructed generically:

let mut encoding = <G as GroupEncoding>::Repr::default();
encoding.as_mut().copy_from_slice(buf);

It is recommended that the default should be the all-zeroes encoding.

Required Methods§

fn from_bytes(bytes: &Self::Repr) -> CtOption<Self>

Attempts to deserialize a group element from its encoding.

fn from_bytes_unchecked(bytes: &Self::Repr) -> CtOption<Self>

Attempts to deserialize a group element, not checking if the element is valid.

This is dangerous to call unless you trust the bytes you are reading; otherwise, API invariants may be broken. Please consider using GroupEncoding::from_bytes instead.

fn to_bytes(&self) -> Self::Repr

Converts this element into its byte encoding. This may or may not support encoding the identity.

Implementors§

source§

impl GroupEncoding for G1Affine

§

type Repr = G1Compressed

source§

impl GroupEncoding for G1Projective

§

type Repr = G1Compressed

source§

impl GroupEncoding for G2Affine

§

type Repr = G2Compressed

source§

impl GroupEncoding for G2Projective

§

type Repr = G2Compressed

source§

impl GroupEncoding for Gt

§

type Repr = GtRepr

§

impl<P> GroupEncoding for NonIdentity<P>where P: ConditionallySelectable + ConstantTimeEq + Default + GroupEncoding,

§

type Repr = <P as GroupEncoding>::Repr