[#MultiSigningProvider]
= MultiSigningProvider
:mrdocs:

A signing provider to be used to interface with multiple signing providers at once&period;

== Synopsis

Declared in `&lt;script&sol;signingprovider&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class MultiSigningProvider
    : public xref:SigningProvider.adoc[SigningProvider]
----

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `xref:SigningProvider.adoc[SigningProvider]`
| An interface to be implemented by keystores that support signing&period;
|===

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:MultiSigningProvider/AddProvider.adoc[`AddProvider`] 
| Add a signing provider to delegate lookups to&period;
| xref:SigningProvider/DeleteMuSig2Session.adoc[`DeleteMuSig2Session`]  [.small]#[virtual]#
| Delete the state stored for a MuSig2 signing session&period;
| xref:SigningProvider/GetAllMuSig2ParticipantPubkeys.adoc[`GetAllMuSig2ParticipantPubkeys`]  [.small]#[virtual]#
| Return all known MuSig2 aggregate pubkeys and their participants&period;
| xref:MultiSigningProvider/GetCScript.adoc[`GetCScript`]  [.small]#[virtual]#
| Look up a script by its script id across all providers&period;
| xref:MultiSigningProvider/GetKey-01.adoc[`GetKey`] 
| `GetKey` overloads
| xref:SigningProvider/GetKeyByXOnly.adoc[`GetKeyByXOnly`] 
| Look up a private key by any key id derived from an x&hyphen;only pubkey&period;
| xref:MultiSigningProvider/GetKeyOrigin.adoc[`GetKeyOrigin`]  [.small]#[virtual]#
| Look up key origin info by key id across all providers&period;
| xref:SigningProvider/GetKeyOriginByXOnly.adoc[`GetKeyOriginByXOnly`] 
| Look up key origin info by any key id derived from an x&hyphen;only pubkey&period;
| xref:SigningProvider/GetMuSig2ParticipantPubkeys.adoc[`GetMuSig2ParticipantPubkeys`]  [.small]#[virtual]#
| Return the MuSig2 participant pubkeys for an aggregate pubkey&period;
| xref:SigningProvider/GetMuSig2SecNonce.adoc[`GetMuSig2SecNonce`]  [.small]#[virtual]#
| Retrieve the MuSig2 secret nonce for a signing session&period;
| xref:MultiSigningProvider/GetPubKey-09.adoc[`GetPubKey`] 
| `GetPubKey` overloads
| xref:SigningProvider/GetPubKeyByXOnly.adoc[`GetPubKeyByXOnly`] 
| Look up a public key by any key id derived from an x&hyphen;only pubkey&period;
| xref:MultiSigningProvider/GetTaprootBuilder.adoc[`GetTaprootBuilder`]  [.small]#[virtual]#
| Look up a Taproot builder for an output key across all providers&period;
| xref:MultiSigningProvider/GetTaprootSpendData.adoc[`GetTaprootSpendData`]  [.small]#[virtual]#
| Look up Taproot spend data for an output key across all providers&period;
| xref:SigningProvider/HaveCScript.adoc[`HaveCScript`]  [.small]#[virtual]#
| Report whether a script with the given id is known&period;
| xref:SigningProvider/HaveKey.adoc[`HaveKey`]  [.small]#[virtual]#
| Report whether a private key with the given id is known&period;
| xref:SigningProvider/SetMuSig2SecNonce.adoc[`SetMuSig2SecNonce`]  [.small]#[virtual]#
| Store a MuSig2 secret nonce for a signing session&period;
|===


== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:GetKeyForDestination.adoc[`GetKeyForDestination`]
| Return the CKeyID of the key involved in a script (if there is a unique one)&period;
| xref:IsSegWitOutput.adoc[`IsSegWitOutput`]
| Check whether a scriptPubKey is known to be segwit&period;
| xref:ProduceSignature.adoc[`ProduceSignature`]
| Produce a script signature using a generic signature creator&period;
| xref:SignPSBTInput.adoc[`SignPSBTInput`]
| Signs a PSBTInput, verifying that all provided data matches what is being signed&period;
| xref:UpdatePSBTOutput.adoc[`UpdatePSBTOutput`]
| Updates a PSBTOutput with information from provider&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
