#[macro_export] macro_rules! with_ciphersuite { ($curve:expr, |$alias:ident| $body:block) => { match $curve { NetworkCurve::Secp256k1 => { #[allow(unused_imports)] use frost_secp256k1_tr as $alias; #[allow(unused_imports)] use frost_secp256k1_tr::Secp256K1Sha256TR as Ciphersuite; use $alias::keys::EvenY; #[allow(dead_code)] trait UniversalNormalizer { fn normalize_package(self) -> Self; fn is_normalized(&self) -> bool; } impl UniversalNormalizer for T { #[inline] fn normalize_package(self) -> Self { self.into_even_y(None) } #[inline] fn is_normalized(&self) -> bool { self.has_even_y() } } $body }, NetworkCurve::Ed25519 => { #[allow(unused_imports)] use frost_ed25519 as $alias; #[allow(unused_imports)] use frost_ed25519::Ed25519Sha512 as Ciphersuite; #[allow(dead_code)] trait UniversalNormalizer { fn normalize_package(self) -> Self; fn is_normalized(&self) -> bool; } impl UniversalNormalizer for T { #[inline] fn normalize_package(self) -> Self { self } #[inline] fn is_normalized(&self) -> bool { true } } $body }, } } } #[macro_use] mod converter; #[macro_use] mod merkle; #[macro_use] mod dkg; #[macro_use] mod ecdh; #[macro_use] mod frost; #[macro_use] mod sizes;