Skip to main content

ed448_goldilocks/
field.rs

1mod element;
2mod scalar;
3
4pub(crate) use element::*;
5pub(crate) use scalar::CurveWithScalar;
6pub use scalar::{MODULUS_LIMBS, ORDER, Scalar, ScalarBytes, WIDE_ORDER, WideScalarBytes};
7
8use crate::curve::twedwards::extended::ExtendedPoint as TwExtendedPoint;
9use crate::edwards::EdwardsPoint;
10
11use elliptic_curve::bigint::{
12    U448, const_monty_params,
13    modular::{ConstMontyForm, ConstMontyParams},
14};
15
16const_monty_params!(
17    MODULUS,
18    U448,
19    "fffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
20);
21pub(crate) type ConstMontyType = ConstMontyForm<MODULUS, { MODULUS::LIMBS }>;
22
23pub const GOLDILOCKS_BASE_POINT: EdwardsPoint = EdwardsPoint {
24    X: FieldElement(ConstMontyType::new(&U448::from_be_hex(
25        "4f1970c66bed0ded221d15a622bf36da9e146570470f1767ea6de324a3d3a46412ae1af72ab66511433b80e18b00938e2626a82bc70cc05e",
26    ))),
27    Y: FieldElement(ConstMontyType::new(&U448::from_be_hex(
28        "693f46716eb6bc248876203756c9c7624bea73736ca3984087789c1e05a0c2d73ad3ff1ce67c39c4fdbd132c4ed7c8ad9808795bf230fa14",
29    ))),
30    Z: FieldElement::ONE,
31    T: FieldElement(ConstMontyType::new(&U448::from_be_hex(
32        "c75eb58aee221c6ccec39d2d508d91c9c5056a183f8451d260d71667e2356d58f179de90b5b27da1f78fa07d85662d1deb06624e82af95f3",
33    ))),
34};
35
36pub const TWISTED_EDWARDS_BASE_POINT: TwExtendedPoint = TwExtendedPoint {
37    X: FieldElement(ConstMontyType::new(&U448::from_be_hex(
38        "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffe80000000000000000000000000000000000000000000000000000000",
39    ))),
40    Y: FieldElement(ConstMontyType::new(&U448::from_be_hex(
41        "8508de14f04286d48d06c13078ca240805264370504c74c393d5242c5045271414181844d73f48e5199b0c1e3ab470a1c86079b4dfdd4a64",
42    ))),
43    Z: FieldElement::ONE,
44    T: FieldElement(ConstMontyType::new(&U448::from_be_hex(
45        "6d3669e173c6a450e23d5682a9ffe1ddc2b86da60f794be956382384a319b57519c9854dde98e342140362071833f4e093e3c816dc198105",
46    ))),
47};