title: multisig/MultiSig.hpp summary: Standalone multi-signature primitive: payload signature verification and N-of-M quorum evaluation over a signer set. No CRDT, node, or pubsub dependency (MSIG-03).
multisig/MultiSig.hpp¶
Standalone multi-signature primitive: payload signature verification and N-of-M quorum evaluation over a signer set. No CRDT, node, or pubsub dependency (MSIG-03). More...
Namespaces¶
| Name |
|---|
| sgns |
| sgns::multisig |
Classes¶
| Name | |
|---|---|
| struct | sgns::multisig::QuorumResult Result of an N-of-M quorum evaluation. |
| class | sgns::multisig::MultiSig Configured N-of-M signature evaluator. |
Types¶
| Name | |
|---|---|
| using std::vector< uint8_t > | SignatureBytes |
| using std::vector< std::pair< std::string, SignatureBytes > > | CollectedSignatures |
Functions¶
| Name | |
|---|---|
| bool | VerifyPayloadSignature(const std::string & address, const SignatureBytes & signature, const std::vector< uint8_t > & payload) Verifies a signature over an arbitrary raw-byte payload. Delegates entirely to GeniusAccount::VerifySignature; no custom crypto or signing-bytes construction is performed here (the payload is assumed already-canonical). |
Detailed Description¶
Standalone multi-signature primitive: payload signature verification and N-of-M quorum evaluation over a signer set. No CRDT, node, or pubsub dependency (MSIG-03).
Date: 2026-07-21 Henrique A. Klein ([email protected])
Types Documentation¶
using SignatureBytes¶
using CollectedSignatures¶
using sgns::multisig::CollectedSignatures = typedef std::vector<std::pair<std::string, SignatureBytes> >;
Functions Documentation¶
function VerifyPayloadSignature¶
bool VerifyPayloadSignature(
const std::string & address,
const SignatureBytes & signature,
const std::vector< uint8_t > & payload
)
Verifies a signature over an arbitrary raw-byte payload. Delegates entirely to GeniusAccount::VerifySignature; no custom crypto or signing-bytes construction is performed here (the payload is assumed already-canonical).
Parameters:
- address Public address (hex-encoded public key) the signature is claimed to be from.
- signature Raw signature bytes to verify.
- payload Raw payload bytes the signature is claimed to cover.
Return: true if the signature is valid for the given address and payload, false otherwise (including malformed address or incorrectly sized signature).
Source code¶
#ifndef SGNS_MULTISIG_MULTISIG_HPP
#define SGNS_MULTISIG_MULTISIG_HPP
#include <cstddef>
#include <cstdint>
#include <string>
#include <unordered_set>
#include <utility>
#include <vector>
namespace sgns::multisig
{
using SignatureBytes = std::vector<uint8_t>;
using CollectedSignatures = std::vector<std::pair<std::string, SignatureBytes>>;
bool VerifyPayloadSignature( const std::string &address,
const SignatureBytes &signature,
const std::vector<uint8_t> &payload );
struct QuorumResult
{
bool has_quorum = false;
uint64_t valid_unique_count = 0;
};
class MultiSig
{
public:
MultiSig( const std::vector<std::string> &signer_set, uint64_t required_signatures );
[[nodiscard]] bool IsValid() const;
[[nodiscard]] uint64_t RequiredSignatures() const;
[[nodiscard]] size_t AuthorizedSignerCount() const;
QuorumResult EvaluateQuorum( const CollectedSignatures &collected_signatures,
const std::vector<uint8_t> &payload ) const;
private:
std::unordered_set<std::string> signer_set_;
uint64_t required_signatures_ = 0;
};
} // namespace sgns::multisig
#endif // SGNS_MULTISIG_MULTISIG_HPP
Updated on 2026-08-06 at 13:59:19 +0000