mod field;
mod point;
mod scalar;
pub use field::FieldElement;
pub use point::{AffinePoint, EncodedPoint, ProjectivePoint};
pub use scalar::Scalar;
pub const CURVE_ORDER: [u64; 4] = [
0xBFD25E8CD0364141,
0xBAAEDCE6AF48A03B,
0xFFFFFFFFFFFFFFFE,
0xFFFFFFFFFFFFFFFF,
];
pub const FIELD_PRIME: [u64; 4] = [
0xFFFFFFFEFFFFFC2F,
0xFFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFFF,
];
pub const GENERATOR_X: [u64; 4] = [
0xd7362e5a487e2097,
0x231e295329bc66db,
0x979f48c033fd129c,
0x9981e643e9089f48,
];
pub const GENERATOR_Y: [u64; 4] = [
0xb15ea6d2d3dbabe2,
0x8dfc5d5d1f1dc64d,
0x70b6b59aac19c136,
0xcf3f851fd4a582d6,
];
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn public_constants_match_internal_representations() {
assert_eq!(CURVE_ORDER, scalar::N);
assert_eq!(FIELD_PRIME, field::P);
assert_eq!(GENERATOR_X, point::G_X);
assert_eq!(GENERATOR_Y, point::G_Y);
}
}