1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
// -*- mode: rust; -*- // // This file is part of curve25519-dalek. // Copyright (c) 2016-2019 Isis Lovecruft, Henry de Valence // See LICENSE for licensing information. // // Authors: // - Isis Agora Lovecruft <isis@patternsinthevoid.net> // - Henry de Valence <hdevalence@hdevalence.ca> //! Serial implementations of field, scalar, point arithmetic. //! //! When the vector backend is disabled, the crate uses the //! mixed-model strategy for implementing point operations and scalar //! multiplication; see the [`curve_models`](self::curve_models) and //! [`scalar_mul`](self::scalar_mul) documentation for more //! information. //! //! When the vector backend is enabled, the field and scalar //! implementations are still used for non-vectorized operations. //! //! Note: at this time the `u32` and `u64` backends cannot be built //! together. #[cfg(not(any(feature = "u32_backend", feature = "u64_backend")))] compile_error!( "no curve25519-dalek backend cargo feature enabled! \ please enable one of: u32_backend, u64_backend" ); #[cfg(feature = "u32_backend")] pub mod u32; #[cfg(feature = "u64_backend")] pub mod u64; pub mod curve_models; #[cfg(not(all( feature = "simd_backend", any(target_feature = "avx2", target_feature = "avx512ifma") )))] pub mod scalar_mul;