X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fsign%2Ftype_resolver.rs;h=2a122da34470332e1147a427de86c864abe4adab;hb=b6059e9f3942498b0cbf056f25bc3ed37d4cc2bc;hp=f76650982c2b4f2ae8e4126975d56728b2e4e261;hpb=c852ce6139103d5eabe936f69cbbbfd304c58e4d;p=rust-lightning diff --git a/lightning/src/sign/type_resolver.rs b/lightning/src/sign/type_resolver.rs index f7665098..2a122da3 100644 --- a/lightning/src/sign/type_resolver.rs +++ b/lightning/src/sign/type_resolver.rs @@ -1,34 +1,43 @@ -use crate::sign::{ChannelSigner, EcdsaChannelSigner}; +use core::ops::Deref; +use crate::sign::{ChannelSigner, SignerProvider}; -pub(crate) enum ChannelSignerType { +pub(crate) enum ChannelSignerType where SP::Target: SignerProvider { // in practice, this will only ever be an EcdsaChannelSigner (specifically, Writeable) - Ecdsa(ECS) + Ecdsa(::EcdsaSigner), + #[cfg(taproot)] + Taproot(::TaprootSigner), } -impl ChannelSignerType{ +impl ChannelSignerType where SP::Target: SignerProvider { pub(crate) fn as_ref(&self) -> &dyn ChannelSigner { match self { - ChannelSignerType::Ecdsa(ecs) => ecs + ChannelSignerType::Ecdsa(ecs) => ecs, + #[cfg(taproot)] + ChannelSignerType::Taproot(tcs) => tcs, } } pub(crate) fn as_mut(&mut self) -> &mut dyn ChannelSigner { match self { - ChannelSignerType::Ecdsa(ecs) => ecs + ChannelSignerType::Ecdsa(ecs) => ecs, + #[cfg(taproot)] + ChannelSignerType::Taproot(tcs) => tcs, } } #[allow(unused)] - pub(crate) fn as_ecdsa(&self) -> Option<&ECS> { + pub(crate) fn as_ecdsa(&self) -> Option<&::EcdsaSigner> { match self { - ChannelSignerType::Ecdsa(ecs) => Some(ecs) + ChannelSignerType::Ecdsa(ecs) => Some(ecs), + _ => None } } #[allow(unused)] - pub(crate) fn as_mut_ecdsa(&mut self) -> Option<&mut ECS> { + pub(crate) fn as_mut_ecdsa(&mut self) -> Option<&mut ::EcdsaSigner> { match self { - ChannelSignerType::Ecdsa(ecs) => Some(ecs) + ChannelSignerType::Ecdsa(ecs) => Some(ecs), + _ => None } } }