pub trait IntegerExt: Sized {
    // Required methods
    fn gen_invertible<R: RngCore>(modulo: &Self, rng: &mut R) -> Self;
    fn combine(
        &self,
        l: &Self,
        le: &Self,
        r: &Self,
        re: &Self
    ) -> Result<Self, BadExponent>;
    fn to_scalar<C: Curve>(&self) -> Scalar<C>;
    fn curve_order<C: Curve>() -> Self;
    fn from_rng_pm<R: RngCore>(range: &Self, rng: &mut R) -> Self;
    fn is_in_pm(&self, range: &Self) -> bool;
    fn signed_modulo(&self, n: &Self) -> Self;
}

Required Methods§

source

fn gen_invertible<R: RngCore>(modulo: &Self, rng: &mut R) -> Self

Generate element in Zm*. Does so by trial.

source

fn combine( &self, l: &Self, le: &Self, r: &Self, re: &Self ) -> Result<Self, BadExponent>

Compute l^le * r^re modulo self

source

fn to_scalar<C: Curve>(&self) -> Scalar<C>

Embed BigInt into chosen scalar type

source

fn curve_order<C: Curve>() -> Self

Returns prime order of curve C

source

fn from_rng_pm<R: RngCore>(range: &Self, rng: &mut R) -> Self

Generates a random integer in interval [-range; range]

source

fn is_in_pm(&self, range: &Self) -> bool

Checks whether self is in interval [-range; range]

source

fn signed_modulo(&self, n: &Self) -> Self

Returns self smod n

For odd n, result is in {-n/2, .., n/2}. For even n, result is in {-n/2, .., n/2 - 1}

Object Safety§

This trait is not object safe.

Implementors§