use super::algorithms::Scheme;
use serde::{Deserialize, Serialize};
use std::marker::PhantomData;
#[cfg(feature = "cl03")]
use crate::cl03::{
blind::CL03BlindSignature,
commitment::CL03Commitment,
proof::{CL03PoKSignature, CL03ZKPoK},
signature::CL03Signature,
};
#[cfg(feature = "bbsplus")]
use crate::bbsplus::{
proof::{BBSplusPoKSignature, BBSplusZKPoK},
signature::BBSplusSignature,
};
#[cfg(feature = "bbsplus_blind")]
use crate::bbsplus::commitment::BBSplusCommitment;
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
pub enum BlindSignature<S: Scheme> {
#[cfg(feature = "bbsplus")]
BBSplus(BBSplusSignature),
#[cfg(feature = "cl03")]
CL03(CL03BlindSignature),
_Unreachable(std::marker::PhantomData<S>),
}
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
pub enum Commitment<S: Scheme> {
#[cfg(feature = "bbsplus_blind")]
BBSplus(BBSplusCommitment),
#[cfg(feature = "cl03")]
CL03(CL03Commitment),
_Unreachable(std::marker::PhantomData<S>),
}
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
pub enum PoKSignature<S: Scheme> {
#[cfg(feature = "bbsplus")]
BBSplus(BBSplusPoKSignature),
#[cfg(feature = "cl03")]
CL03(CL03PoKSignature),
_Unreachable(PhantomData<S>),
}
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
pub enum ZKPoK<S: Scheme> {
#[cfg(feature = "bbsplus")]
BBSplus(BBSplusZKPoK),
#[cfg(feature = "cl03")]
CL03(CL03ZKPoK),
_Unreachable(PhantomData<S>),
}
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
pub enum Signature<S: Scheme> {
#[cfg(feature = "bbsplus")]
BBSplus(BBSplusSignature),
#[cfg(feature = "cl03")]
CL03(CL03Signature),
_Unreachable(PhantomData<S>),
}