lambdaworks_math/elliptic_curve/edwards/curves/bandersnatch/
field.rs1use crate::{
4 field::{
5 element::FieldElement,
6 fields::montgomery_backed_prime_fields::{IsModulus, MontgomeryBackendPrimeField},
7 },
8 unsigned_integer::element::U256,
9};
10
11pub const BANDERSNATCH_PRIME_FIELD_ORDER: U256 =
12 U256::from_hex_unchecked("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001");
13
14#[derive(Clone, Debug)]
15pub struct FqConfig;
16
17impl IsModulus<U256> for FqConfig {
18 const MODULUS: U256 = BANDERSNATCH_PRIME_FIELD_ORDER;
19}
20
21pub type FqField = MontgomeryBackendPrimeField<FqConfig, 4>;
22
23impl FieldElement<FqField> {
24 pub fn new_base(a_hex: &str) -> Self {
25 Self::new(U256::from(a_hex))
26 }
27}
28pub type FqElement = FieldElement<FqField>;