pub fn aggregate<C>(
signing_package: &SigningPackage<C>,
signature_shares: &BTreeMap<Identifier<C>, SignatureShare<C>>,
pubkeys: &PublicKeyPackage<C>,
) -> Result<Signature<C>, Error<C>>where
C: Ciphersuite,
Expand description
Aggregates the signature shares to produce a final signature that can be verified with the group public key.
signature_shares
maps the identifier of each participant to the
round2::SignatureShare
they sent. These identifiers must come from whatever mapping
the coordinator has between communication channels and participants, i.e.
they must have assurance that the round2::SignatureShare
came from
the participant with that identifier.
This operation is performed by a coordinator that can communicate with all the signing participants before publishing the final signature. The coordinator can be one of the participants or a semi-trusted third party (who is trusted to not perform denial of service attacks, but does not learn any secret information). Note that because the coordinator is trusted to report misbehaving parties in order to avoid publishing an invalid signature, if the coordinator themselves is a signer and misbehaves, they can avoid that step. However, at worst, this results in a denial of service attack due to publishing an invalid signature.