/// Verifies a combined signature from a non-empty set of signers.
/// Panics if called with zero signers.
Verifies a combined signature from a non-empty set of signers.
Panics if called with zero signers.
Verifies a combined signature from a non - empty set of signers . Panics if called with zero signers .
pub fn verify_multi_sig_combined<S: CspSigner, H: Signable>(
        csp_signer: &S,
        registry: Arc<dyn RegistryClient>,
        signature: &CombinedMultiSigOf<H>,
        message: &H,
        signers: BTreeSet<NodeId>,
        registry_version: RegistryVersion,
    ) -> CryptoResult<()> {
        if signers.is_empty() {
            panic!("At least one signer required");
        }
        let message_bytes = message.as_signed_bytes();
        let csp_sig = CspSignature::try_from(signature)?;
        let (csp_pubkeys, algorithm) =
            node_ids_to_pubkeys(registry, signers, CommitteeSigning, registry_version)?;
        csp_signer.verify_multisig(csp_pubkeys, csp_sig, &message_bytes, algorithm)
    }
pub fn verify_multi_sig_combined < S : CspSigner , H : Signable > ( csp_signer : & S , registry : Arc < dyn RegistryClient > , signature : & CombinedMultiSigOf < H > , message : & H , signers : BTreeSet < NodeId > , registry_version : RegistryVersion , ) -> CryptoResult < ( ) > { if signers . is_empty ( ) { panic ! ( " " ) ; } let message_bytes = message . as_signed_bytes ( ) ; let csp_sig = CspSignature :: try_from ( signature ) ? ; let ( csp_pubkeys , algorithm ) = node_ids_to_pubkeys ( registry , signers , CommitteeSigning , registry_version ) ? ; csp_signer . verify_multisig ( csp_pubkeys , csp_sig , & message_bytes , algorithm ) }
Verifies a combined signature from a non-empty set of signers.
Verifies a combined signature from a non - empty set of signers .
csp_signer
&S
registry
Arc<dyn RegistryClient>
signature
&CombinedMultiSigOf<H>
message
&H
signers
BTreeSet<NodeId>
registry_version
RegistryVersion