Skip to main content

Group

Trait Group 

pub trait Group:
    Sized
    + Clone
    + Copy
    + Debug
    + Eq
    + Send
    + Sync
    + 'static
    + Sum
    + for<'a> Sum<&'a Self>
    + Neg<Output = Self>
    + GroupOps
    + GroupOpsOwned
    + ScalarMul<Self::Scalar>
    + ScalarMulOwned<Self::Scalar> {
    type Scalar: PrimeField;

    // Required methods
    fn random(rng: impl RngCore) -> Self;
    fn identity() -> Self;
    fn generator() -> Self;
    fn is_identity(&self) -> Choice;
    fn double(&self) -> Self;
}
Expand description

This trait represents an element of a cryptographic group.

Required Associated Types§

type Scalar: PrimeField

Scalars modulo the order of this group’s scalar field.

Required Methods§

fn random(rng: impl RngCore) -> Self

Returns an element chosen uniformly at random from the non-identity elements of this group.

This function is non-deterministic, and samples from the user-provided RNG.

fn identity() -> Self

Returns the additive identity, also known as the “neutral element”.

fn generator() -> Self

Returns a fixed generator of the prime-order subgroup.

fn is_identity(&self) -> Choice

Determines if this point is the identity.

fn double(&self) -> Self

Doubles this element.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

§

impl<C> Group for ProjectivePoint<C>
where ProjectivePoint<C>: Double, C: PrimeCurveParams,

§

type Scalar = <C as CurveArithmetic>::Scalar

§

fn random(rng: impl RngCore) -> ProjectivePoint<C>

§

fn identity() -> ProjectivePoint<C>

§

fn generator() -> ProjectivePoint<C>

§

fn is_identity(&self) -> Choice

§

fn double(&self) -> ProjectivePoint<C>

Implementors§

§

impl Group for airbender_crypto::k256::ProjectivePoint