Struct sn_messaging::node::SignatureAggregator [−][src]
pub struct SignatureAggregator { /* fields omitted */ }
Expand description
Aggregator for signature shares for arbitrary payloads.
This aggregator allows to collect BLS signature shares for some payload one by one until enough of them are collected. At that point it combines them into a full BLS signature of the given payload. It also automatically rejects invalid signature shares and expires entries that did not collect enough signature shares within a given time.
This aggregator also handles the case when the same payload is signed with a signature share corresponding to a different BLS public key. In that case, the payloads will be aggregated separately. This avoids mixing signature shares created from different curves which would otherwise lead to invalid signature to be produced even though all the shares are valid.
Implementations
Create new aggregator with the given expiration.
Add new share into the aggregator. If enough valid signature shares were collected, returns
its Signed
(signature + public key). Otherwise returns error which details why the
aggregation did not succeed yet.
Note: returned Error::NotEnoughShares
does not indicate a failure. It simply means more
shares still need to be added for that particular payload. This error could be safely
ignored (it might still be useful perhaps for debugging). The other error variants, however,
indicate failures and should be treated a such. See [Error] for more info.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for SignatureAggregator
impl Send for SignatureAggregator
impl Sync for SignatureAggregator
impl Unpin for SignatureAggregator
impl UnwindSafe for SignatureAggregator