Trait kimchi::curve::KimchiCurve

source ·
pub trait KimchiCurve: CommitmentCurve + EndoCurve {
    const NAME: &'static str;

    // Required methods
    fn sponge_params() -> &'static ArithmeticSpongeParams<Self::ScalarField>;
    fn other_curve_sponge_params(
    ) -> &'static ArithmeticSpongeParams<Self::BaseField>;
    fn endos() -> &'static (Self::BaseField, Self::ScalarField);
    fn other_curve_endo() -> &'static Self::ScalarField;
    fn other_curve_prime_subgroup_generator(
    ) -> (Self::ScalarField, Self::ScalarField);
}
Expand description

Represents additional information that a curve needs in order to be used with Kimchi

Required Associated Constants§

source

const NAME: &'static str

A human readable name.

Required Methods§

source

fn sponge_params() -> &'static ArithmeticSpongeParams<Self::ScalarField>

Provides the sponge params to be used with this curve.

source

fn other_curve_sponge_params( ) -> &'static ArithmeticSpongeParams<Self::BaseField>

Provides the sponge params to be used with the other curve.

source

fn endos() -> &'static (Self::BaseField, Self::ScalarField)

Provides the coefficients for the curve endomorphism, called (q,r) in some places.

source

fn other_curve_endo() -> &'static Self::ScalarField

Provides the coefficient for the curve endomorphism over the other field, called q in some places.

source

fn other_curve_prime_subgroup_generator( ) -> (Self::ScalarField, Self::ScalarField)

Accessor for the other curve’s prime subgroup generator, as coordinates

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl KimchiCurve for GroupAffine<LegacyPallasParameters>

source§

const NAME: &'static str = "legacy_pallas"

source§

fn sponge_params() -> &'static ArithmeticSpongeParams<Self::ScalarField>

source§

fn other_curve_sponge_params( ) -> &'static ArithmeticSpongeParams<Self::BaseField>

source§

fn endos() -> &'static (Self::BaseField, Self::ScalarField)

source§

fn other_curve_endo() -> &'static Self::ScalarField

source§

fn other_curve_prime_subgroup_generator( ) -> (Self::ScalarField, Self::ScalarField)

source§

impl KimchiCurve for GroupAffine<LegacyVestaParameters>

source§

const NAME: &'static str = "legacy_vesta"

source§

fn sponge_params() -> &'static ArithmeticSpongeParams<Self::ScalarField>

source§

fn other_curve_sponge_params( ) -> &'static ArithmeticSpongeParams<Self::BaseField>

source§

fn endos() -> &'static (Self::BaseField, Self::ScalarField)

source§

fn other_curve_endo() -> &'static Self::ScalarField

source§

fn other_curve_prime_subgroup_generator( ) -> (Self::ScalarField, Self::ScalarField)

source§

impl KimchiCurve for GroupAffine<PallasParameters>

source§

const NAME: &'static str = "pallas"

source§

fn sponge_params() -> &'static ArithmeticSpongeParams<Self::ScalarField>

source§

fn other_curve_sponge_params( ) -> &'static ArithmeticSpongeParams<Self::BaseField>

source§

fn endos() -> &'static (Self::BaseField, Self::ScalarField)

source§

fn other_curve_endo() -> &'static Self::ScalarField

source§

fn other_curve_prime_subgroup_generator( ) -> (Self::ScalarField, Self::ScalarField)

source§

impl KimchiCurve for GroupAffine<Parameters>

source§

const NAME: &'static str = "bn254"

source§

fn sponge_params() -> &'static ArithmeticSpongeParams<Self::ScalarField>

source§

fn other_curve_sponge_params( ) -> &'static ArithmeticSpongeParams<Self::BaseField>

source§

fn endos() -> &'static (Self::BaseField, Self::ScalarField)

source§

fn other_curve_endo() -> &'static Self::ScalarField

source§

fn other_curve_prime_subgroup_generator( ) -> (Self::ScalarField, Self::ScalarField)

source§

impl KimchiCurve for GroupAffine<VestaParameters>

source§

const NAME: &'static str = "vesta"

source§

fn sponge_params() -> &'static ArithmeticSpongeParams<Self::ScalarField>

source§

fn other_curve_sponge_params( ) -> &'static ArithmeticSpongeParams<Self::BaseField>

source§

fn endos() -> &'static (Self::BaseField, Self::ScalarField)

source§

fn other_curve_endo() -> &'static Self::ScalarField

source§

fn other_curve_prime_subgroup_generator( ) -> (Self::ScalarField, Self::ScalarField)

Implementors§