//! Implementation of the Pallas / Vesta curve cycle. #![no_std] #![cfg_attr(docsrs, feature(doc_cfg))] #![allow(unknown_lints)] #![allow(clippy::op_ref, clippy::same_item_push, clippy::upper_case_acronyms)] #![deny(rustdoc::broken_intra_doc_links)] #![deny(missing_debug_implementations)] #![deny(missing_docs)] #![deny(unsafe_code)] #[cfg(feature = "alloc")] extern crate alloc; #[cfg(test)] #[macro_use] extern crate std; #[macro_use] mod macros; mod curves; mod fields; pub mod arithmetic; #[cfg(feature = "deferred")] #[cfg_attr(docsrs, doc(cfg(feature = "deferred")))] pub mod deferred; pub mod pallas; pub mod vesta; #[cfg(feature = "alloc")] mod hashtocurve; #[cfg(feature = "serde")] mod serde_impl; pub use curves::*; pub use fields::*; pub extern crate group; #[cfg(feature = "alloc")] #[test] fn test_endo_consistency() { use crate::arithmetic::CurveExt; use group::{ff::WithSmallOrderMulGroup, Group}; let a = pallas::Point::generator(); assert_eq!(a * pallas::Scalar::ZETA, a.endo()); let a = vesta::Point::generator(); assert_eq!(a * vesta::Scalar::ZETA, a.endo()); }