34 std::span<
const std::array<unsigned char, 33>> ordered_public_keys,
38 [[nodiscard]] std::span<const SigningRosterMember>
members()
const {
return members_; }
41 [[nodiscard]]
const std::array<unsigned char, 32>&
signing_key()
const {
return signing_key_; }
44 [[nodiscard]]
const std::array<unsigned char, 32>&
key_list_hash()
const {
return key_list_hash_; }
52 std::vector<SigningRosterMember> members_;
53 std::array<unsigned char, 32> signing_key_{};
54 std::array<unsigned char, 32> key_list_hash_{};
55 bool aggregate_was_negated_ =
false;
Field element modulo the backend scalar field used by this implementation.
Experimental public key aggregation for one ordered coalition roster.
bool aggregate_was_negated() const
Whether the unnormalized weighted sum had odd Y.
std::span< const SigningRosterMember > members() const
Members in their original order; effective weights include parity.
const std::array< unsigned char, 32 > & signing_key() const
Canonical even-Y aggregate signing key for ConflictContext.
static Result< SigningRoster > aggregate(std::span< const std::array< unsigned char, 33 > > ordered_public_keys, purify_secp_context *secp_context)
const std::array< unsigned char, 32 > & key_list_hash() const
BIP327 key-list hash; this is NOT the authenticated Purify host commitment U.
Expected< T, Error > Result
Expected-returning convenience alias for Purify value-producing APIs.
Fixed-width integer and field arithmetic helpers used throughout Purify.
An ordered individual signing key and its normalized public weight.
FieldElement coefficient
BIP327 key coefficient multiplied by the aggregate parity sign.
std::array< unsigned char, 33 > public_key