git / moonbite-core / src/libmw/include/mw/crypto/MuSig.h · raw
#pragma once#include <mw/models/crypto/SecretKey.h>#include <mw/models/crypto/Signature.h>#include <mw/models/crypto/PublicKey.h>#include <mw/models/crypto/Hash.h>class MuSig{public: static SecretKey GenerateSecureNonce(); // // Builds one party's share of a Schnorr signature. // Returns a CompactSignature if successful. // static CompactSignature CalculatePartial( const SecretKey& secretKey, const SecretKey& secretNonce, const PublicKey& sumPubKeys, const PublicKey& sumPubNonces, const mw::Hash& message ); // // Verifies one party's share of a Schnorr signature. // Returns true if valid. // static bool VerifyPartial( const CompactSignature& partialSignature, const PublicKey& publicKey, const PublicKey& sumPubKeys, const PublicKey& sumPubNonces, const mw::Hash& message ); // // Combines multiple partial signatures to build the final aggregate signature. // Returns the raw aggregate signature. // static Signature Aggregate( const std::vector<CompactSignature>& signatures, const PublicKey& sumPubNonces );};