arcium-primitives 0.4.2

Arcium primitives
Documentation
use itertools::Itertools;

pub trait FieldExtensionName {
    fn get_name() -> String;
}

impl FieldExtensionName for crate::algebra::field::binary::Gf2 {
    fn get_name() -> String {
        "GF2".to_string()
    }
}

impl<P: crate::algebra::field::binary::gf2_ext::Gf2ExtParams, const K: usize> FieldExtensionName
    for crate::algebra::field::binary::Gf2Ext<P, K>
{
    fn get_name() -> String {
        let poly = P::POLY_MOD_ONES
            .iter()
            .map(|k| format!("X^{k}"))
            .join(" + ");
        format!("GF(2^{}, 1 + {poly})", K * 64).to_string()
    }
}

impl FieldExtensionName
    for crate::algebra::elliptic_curve::ScalarField<
        crate::algebra::elliptic_curve::Curve25519Ristretto,
    >
{
    fn get_name() -> String {
        "Curve25519Ristretto_ScalarField".to_string()
    }
}
impl FieldExtensionName
    for crate::algebra::elliptic_curve::BaseField<
        crate::algebra::elliptic_curve::Curve25519Ristretto,
    >
{
    fn get_name() -> String {
        "Curve25519Ristretto_BaseField".to_string()
    }
}

impl FieldExtensionName for crate::algebra::field::mersenne::Mersenne107 {
    fn get_name() -> String {
        "Mersenne107".to_string()
    }
}