mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 10:27:26 +08:00
* wip: conversion of hotstuff from flow into Q-oriented model * bulk of tests * remaining non-integration tests * add integration test, adjust log interface, small tweaks * further adjustments, restore full pacemaker shape * add component lifecycle management+supervisor * further refinements * resolve timeout hanging * mostly finalized state for consensus * bulk of engine swap out * lifecycle-ify most types * wiring nearly complete, missing needed hooks for proposals * plugged in, vetting message validation paths * global consensus, plugged in and verified * app shard now wired in too * do not decode empty keys.yml (#456) * remove obsolete engine.maxFrames config parameter (#454) * default to Info log level unless debug is enabled (#453) * respect config's "logging" section params, remove obsolete single-file logging (#452) * Trivial code cleanup aiming to reduce Go compiler warnings (#451) * simplify range traversal * simplify channel read for single select case * delete rand.Seed() deprecated in Go 1.20 and no-op as of Go 1.24 * simplify range traversal * simplify channel read for single select case * remove redundant type from array * simplify range traversal * simplify channel read for single select case * RC slate * finalize 2.1.0.5 * Update comments in StrictMonotonicCounter Fix comment formatting and clarify description. --------- Co-authored-by: Black Swan <3999712+blacks1ne@users.noreply.github.com>
49 lines
1.7 KiB
Go
49 lines
1.7 KiB
Go
package models
|
|
|
|
// AggregatedSignature provides a generic interface over an aggregatable
|
|
// signature type
|
|
type AggregatedSignature interface {
|
|
// GetSignature returns the aggregated signature in raw canonical bytes
|
|
GetSignature() []byte
|
|
// GetPubKey returns the public key in raw canonical bytes
|
|
GetPubKey() []byte
|
|
// GetBitmask returns the bitmask of the signers in the signature, in matching
|
|
// order to the clique's prover set (in ascending ring order).
|
|
GetBitmask() []byte
|
|
}
|
|
|
|
// AggregatedSigner provides a generic interface over an aggregatable signature
|
|
// scheme. Embeds the validation-only methods.
|
|
type AggregatedSigner interface {
|
|
AggregatedSignatureValidator
|
|
// AggregateSignatures produces an AggregatedSignature object, expecting
|
|
// public keys and signatures to be in matching order, with nil slices for
|
|
// bitmask entries that are not present. The order should be aligned to the
|
|
// clique's prover set (in ascending ring order).
|
|
AggregateSignatures(
|
|
publicKeys [][]byte,
|
|
signatures [][]byte,
|
|
) (AggregatedSignature, error)
|
|
// SignWithContext produces an AggregatedSignature object, optionally taking
|
|
// an existing AggregatedSignature and builds on top of it.
|
|
SignWithContext(
|
|
aggregatedSignature AggregatedSignature,
|
|
bitmaskIndex int,
|
|
privateKey []byte,
|
|
message []byte,
|
|
context []byte,
|
|
) (AggregatedSignature, error)
|
|
}
|
|
|
|
// AggregatedSignatureValidator provides a generic interface over aggregated
|
|
// signature validation.
|
|
type AggregatedSignatureValidator interface {
|
|
// VerifySignature validates the AggregatedSignature, with a binary pass/fail
|
|
// result.
|
|
VerifySignature(
|
|
aggregatedSignature AggregatedSignature,
|
|
message []byte,
|
|
context []byte,
|
|
) bool
|
|
}
|