#![cfg_attr(not(feature = "std"), no_std)] use std_shims::io; use zeroize::Zeroize; pub use ciphersuite::group; use group::{*, ff::*, prime::PrimeGroup}; pub trait Ciphersuite: 'static + Send + Sync { type F: PrimeField + PrimeFieldBits + Zeroize; type G: Group + GroupOps + PrimeGroup + Zeroize; #[cfg(feature = "alloc")] #[allow(non_snake_case)] fn read_F(reader: &mut R) -> io::Result; #[cfg(feature = "alloc")] #[allow(non_snake_case)] fn read_G(reader: &mut R) -> io::Result; } impl Ciphersuite for C { type F = ::F; type G = ::G; #[cfg(feature = "alloc")] fn read_F(reader: &mut R) -> io::Result { ::read_F(reader) } #[cfg(feature = "alloc")] fn read_G(reader: &mut R) -> io::Result { ::read_G(reader) } } #[cfg(feature = "ed25519")] pub use dalek_ff_group::Ed25519;