pub fn combine_multi_sig_individuals<S: CspSigner, H: Signable>(
        csp_signer: &S,
        registry: Arc<dyn RegistryClient>,
        signatures: BTreeMap<NodeId, IndividualMultiSigOf<H>>,
        registry_version: RegistryVersion,
    ) -> CryptoResult<CombinedMultiSigOf<H>> {
        if signatures.is_empty() {
            panic!("At least one signature required");
        }

        let (pubkey_sig_pairs, algorithm) = node_sigs_to_pubkey_sig_pairs(
            registry,
            signatures,
            CommitteeSigning,
            registry_version,
        )?;

        let combined_sig = csp_signer.combine_sigs(pubkey_sig_pairs, algorithm)?;

        Ok(CombinedMultiSigOf::new(CombinedMultiSig(
            combined_sig.as_ref().to_vec(),
        )))
    }
/// Combines a non-empty collection of individual signatures into a combined
/// signature. Panics if called with zero signatures.
Combines a non-empty collection of individual signatures into a combined
signature. Panics if called with zero signatures.
Combines a non - empty collection of individual signatures into a combined signature . Panics if called with zero signatures .
pub fn combine_multi_sig_individuals<S: CspSigner, H: Signable>(
        csp_signer: &S,
        registry: Arc<dyn RegistryClient>,
        signatures: BTreeMap<NodeId, IndividualMultiSigOf<H>>,
        registry_version: RegistryVersion,
    ) -> CryptoResult<CombinedMultiSigOf<H>> {
        if signatures.is_empty() {
            panic!("At least one signature required");
        }
        let (pubkey_sig_pairs, algorithm) = node_sigs_to_pubkey_sig_pairs(
            registry,
            signatures,
            CommitteeSigning,
            registry_version,
        )?;
        let combined_sig = csp_signer.combine_sigs(pubkey_sig_pairs, algorithm)?;
        Ok(CombinedMultiSigOf::new(CombinedMultiSig(
            combined_sig.as_ref().to_vec(),
        )))
    }
pub fn combine_multi_sig_individuals < S : CspSigner , H : Signable > ( csp_signer : & S , registry : Arc < dyn RegistryClient > , signatures : BTreeMap < NodeId , IndividualMultiSigOf < H > > , registry_version : RegistryVersion , ) -> CryptoResult < CombinedMultiSigOf < H > > { if signatures . is_empty ( ) { panic ! ( " " ) ; } let ( pubkey_sig_pairs , algorithm ) = node_sigs_to_pubkey_sig_pairs ( registry , signatures , CommitteeSigning , registry_version , ) ? ; let combined_sig = csp_signer . combine_sigs ( pubkey_sig_pairs , algorithm ) ? ; Ok ( CombinedMultiSigOf :: new ( CombinedMultiSig ( combined_sig . as_ref ( ) . to_vec ( ) , ) ) ) }
Combines a non-empty collection of individual signatures into a combined
signature.
Combines a non - empty collection of individual signatures into a combined signature .
csp_signer
&S
registry
Arc<dyn RegistryClient>
signatures
BTreeMap<NodeId, IndividualMultiSigOf<H>>
registry_version
RegistryVersion
csp_signer
&S
registry
Arc<dyn RegistryClient>
signatures
BTreeMap<NodeId, IndividualMultiSigOf<H>>
registry_version
RegistryVersion