This PR adds a fuzz target for src/musig. Previously, the module APIs had no dedicated harness, so fail paths (empty key lists, never-generated secnonce) were underexercised.
It covers:
MuSig2AggregatePubkeysMuSig2AggregatePubkeys(with key aggregation cache and optional expected aggregate)CreateMuSig2SyntheticXpubMuSig2SessionID- Signing-shaped path:
CreateMuSig2Nonce- optionally
CreateMuSig2PartialSigwith a secnonce that was never generated CreateMuSig2PartialSigwith the generated secnonceCreateMuSig2AggregateSig
The never-generated secnonce call exercises #35422. Previously, IsValid() was true as soon as a secure buffer was allocated, even before the nonce was generated. On master without that fix this arm can crash. With the fix, it returns nullopt.