use crate::core::{field_element::FieldElementCore, W};
use crate::FieldElement;
mod internal_bytes_repr {
pub const EQUATION_A: [u64; 4] = [
18446744073709551585,
18446744073709551615,
18446744073709551615,
576460752303422960,
];
pub const EQUATION_B: [u64; 4] = [
3863487492851900874,
7432612994240712710,
12360725113329547591,
88155977965380735,
];
pub const GENERATOR_X: [u64; 4] = [
14484022957141291997,
5884444832209845738,
299981207024966779,
232005955912912577,
];
pub const GENERATOR_Y: [u64; 4] = [
6241159653446987914,
664812301889158119,
18147424675297964973,
405578048423154473,
];
}
pub const EQUATION_A: FieldElement = W::new(FieldElementCore::from_internal_repr(
internal_bytes_repr::EQUATION_A,
));
pub const EQUATION_B: FieldElement = W::new(FieldElementCore::from_internal_repr(
internal_bytes_repr::EQUATION_B,
));
pub const GENERATOR: (FieldElement, FieldElement) = (
W::new(FieldElementCore::from_internal_repr(
internal_bytes_repr::GENERATOR_X,
)),
W::new(FieldElementCore::from_internal_repr(
internal_bytes_repr::GENERATOR_Y,
)),
);
#[cfg(test)]
mod tests {
use hex_literal::hex;
use crate::FieldElement;
#[test]
fn defined_cosntants_align_with_specs() {
let a = FieldElement::ONE;
let b = FieldElement::from_be_bytes(
hex!("06f21413 efbe40de 150e596d 72f7a8c5 609ad26c 15c915c1 f4cdfcb9 9cee9e89").into(),
)
.unwrap();
let g_x = FieldElement::from_be_bytes(
hex!("01ef15c18599971b7beced415a40f0c7deacfd9b0d1819e03d723d8bc943cfca").into(),
)
.unwrap();
let g_y = FieldElement::from_be_bytes(
hex!("005668060aa49730b7be4801df46ec62de53ecd11abe43a32873000c36e8dc1f").into(),
)
.unwrap();
assert_eq!(super::EQUATION_A, a, "{:?}", a.internal_repr());
assert_eq!(super::EQUATION_B, b, "{:?}", b.internal_repr());
assert_eq!(super::GENERATOR.0, g_x, "{:?}", g_x.internal_repr());
assert_eq!(super::GENERATOR.1, g_y, "{:?}", g_y.internal_repr());
}
}