Trait KimchiCurve

Source
pub trait KimchiCurve:
    CommitmentCurve
    + EndoCurve
    + NamedCurve {
    // 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_generator() -> (Self::ScalarField, Self::ScalarField);
}
Expand description

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

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_generator() -> (Self::ScalarField, Self::ScalarField)

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl KimchiCurve for Affine<Config>

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_generator() -> (Self::ScalarField, Self::ScalarField)

Source§

impl KimchiCurve for Affine<LegacyPallasParameters>

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_generator() -> (Self::ScalarField, Self::ScalarField)

Source§

impl KimchiCurve for Affine<LegacyVestaParameters>

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_generator() -> (Self::ScalarField, Self::ScalarField)

Source§

impl KimchiCurve for Affine<PallasParameters>

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_generator() -> (Self::ScalarField, Self::ScalarField)

Source§

impl KimchiCurve for Affine<VestaParameters>

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_generator() -> (Self::ScalarField, Self::ScalarField)

Implementors§