diff --git a/mod.rs b/mod.rs index 94744e4..710ec3c 100644 --- a/mod.rs +++ b/mod.rs @@ -1,4 +1,4 @@ -mod error; +pub mod error; pub mod keygen; #[cfg(feature = "serialization-serde")] mod serde_impl; @@ -59,7 +59,7 @@ impl PublicKey { } /// A signature, or a signature share. -#[derive(Debug)] +#[derive(Clone, Debug, PartialOrd)] pub struct Signature(E::G2); impl PartialEq for Signature { @@ -68,6 +68,18 @@ impl PartialEq for Signature { } } +impl Signature { + pub fn parity(&self) -> bool { + 2 % self + .0 + .into_affine() + .into_uncompressed() + .as_ref() + .last() + .expect("non-empty signature") == 0 + } +} + /// A secret key, or a secret key share. #[derive(Debug)] pub struct SecretKey(E::Fr);