#[cfg(any(feature = "secp256k1", feature = "sr25519", feature = "ed25519"))]
use crate::scheme::CryptoScheme;
#[cfg(feature = "secp256k1")]
pub mod secp256k1;
#[cfg(feature = "sr25519")]
pub mod sr25519;
#[cfg(feature = "ed25519")]
pub mod ed25519;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SchemeType {
#[cfg(feature = "secp256k1")]
Secp256k1,
#[cfg(feature = "sr25519")]
Sr25519,
#[cfg(feature = "ed25519")]
Ed25519,
}
impl SchemeType {
pub fn name(&self) -> &'static str {
match self {
#[cfg(feature = "secp256k1")]
SchemeType::Secp256k1 => <crate::schemes::secp256k1::Secp256k1 as CryptoScheme>::NAME,
#[cfg(feature = "sr25519")]
SchemeType::Sr25519 => <crate::schemes::sr25519::Sr25519 as CryptoScheme>::NAME,
#[cfg(feature = "ed25519")]
SchemeType::Ed25519 => <crate::schemes::ed25519::Ed25519 as CryptoScheme>::NAME,
#[allow(unreachable_patterns)]
_ => unreachable!("unsupported signature scheme"),
}
}
}