Skip to main content

primitives/algebra/field/
field_extension_name.rs

1use itertools::Itertools;
2
3pub trait FieldExtensionName {
4    fn get_name() -> String;
5}
6
7impl FieldExtensionName for crate::algebra::field::binary::Gf2 {
8    fn get_name() -> String {
9        "GF2".to_string()
10    }
11}
12
13impl<P: crate::algebra::field::binary::gf2_ext::Gf2ExtParams, const K: usize> FieldExtensionName
14    for crate::algebra::field::binary::Gf2Ext<P, K>
15{
16    fn get_name() -> String {
17        let poly = P::POLY_MOD_ONES
18            .iter()
19            .map(|k| format!("X^{k}"))
20            .join(" + ");
21        format!("GF(2^{}, 1 + {poly})", K * 64).to_string()
22    }
23}
24
25impl FieldExtensionName
26    for crate::algebra::elliptic_curve::ScalarField<
27        crate::algebra::elliptic_curve::Curve25519Ristretto,
28    >
29{
30    fn get_name() -> String {
31        "Curve25519Ristretto_ScalarField".to_string()
32    }
33}
34impl FieldExtensionName
35    for crate::algebra::elliptic_curve::BaseField<
36        crate::algebra::elliptic_curve::Curve25519Ristretto,
37    >
38{
39    fn get_name() -> String {
40        "Curve25519Ristretto_BaseField".to_string()
41    }
42}
43
44impl FieldExtensionName for crate::algebra::field::mersenne::Mersenne107 {
45    fn get_name() -> String {
46        "Mersenne107".to_string()
47    }
48}