[#FillableSigningProvider]
= FillableSigningProvider
:mrdocs:

Fillable signing provider that keeps keys in an address&hyphen;&gt;secret map

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class FillableSigningProvider
    : 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:FillableSigningProvider/AddCScript.adoc[`AddCScript`]  [.small]#[virtual]#
| Add a redeem or witness script&period;
| xref:FillableSigningProvider/AddKey.adoc[`AddKey`]  [.small]#[virtual]#
| Add a private key, deriving its public key&period;
| xref:FillableSigningProvider/AddKeyPubKey.adoc[`AddKeyPubKey`]  [.small]#[virtual]#
| Add a private key together with its public key&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:FillableSigningProvider/GetCScript-0d.adoc[`GetCScript`] 
| Look up a script by its script id&period;
| xref:FillableSigningProvider/GetCScripts.adoc[`GetCScripts`]  [.small]#[virtual]#
| Return the ids of all known scripts&period;
| xref:FillableSigningProvider/GetKey-0c.adoc[`GetKey`] 
| Look up a private key by its key id&period;
| xref:SigningProvider/GetKeyByXOnly.adoc[`GetKeyByXOnly`] 
| Look up a private key by any key id derived from an x&hyphen;only pubkey&period;
| xref:SigningProvider/GetKeyOrigin.adoc[`GetKeyOrigin`]  [.small]#[virtual]#
| Look up the origin information for a key&period;
| xref:SigningProvider/GetKeyOriginByXOnly.adoc[`GetKeyOriginByXOnly`] 
| Look up key origin info by any key id derived from an x&hyphen;only pubkey&period;
| xref:FillableSigningProvider/GetKeys.adoc[`GetKeys`]  [.small]#[virtual]#
| Return the ids of all known private keys&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:FillableSigningProvider/GetPubKey-0d.adoc[`GetPubKey`] 
| Look up a public key by its key id&period;
| xref:SigningProvider/GetPubKeyByXOnly.adoc[`GetPubKeyByXOnly`] 
| Look up a public key by any key id derived from an x&hyphen;only pubkey&period;
| xref:SigningProvider/GetTaprootBuilder.adoc[`GetTaprootBuilder`]  [.small]#[virtual]#
| Look up the Taproot builder for an output key&period;
| xref:SigningProvider/GetTaprootSpendData.adoc[`GetTaprootSpendData`]  [.small]#[virtual]#
| Look up the Taproot spend data for an output key&period;
| xref:FillableSigningProvider/HaveCScript-09.adoc[`HaveCScript`] 
| Report whether a script with the given id is known&period;
| xref:FillableSigningProvider/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;
|===


== Data Members

[cols="1,4"]
|===
| Name| Description
| xref:FillableSigningProvider/cs_KeyStore.adoc[`cs&lowbar;KeyStore`] 
| Mutex guarding the key and script maps&period;
|===


== Protected Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:FillableSigningProvider/KeyMap.adoc[`KeyMap`] 
| Map of key id to private key&period;
| xref:FillableSigningProvider/ScriptMap.adoc[`ScriptMap`] 
| Map of script id to script&period;
|===


== Protected Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:FillableSigningProvider/ImplicitlyLearnRelatedKeyScripts.adoc[`ImplicitlyLearnRelatedKeyScripts`] 
| Record the scripts implied by a public key without persisting them&period;
|===


== Protected Data Members

[cols="1,4"]
|===
| Name| Description
| xref:FillableSigningProvider/mapKeys.adoc[`mapKeys`] 
| Map of key id to unencrypted private keys known by the signing provider&period; Map may be empty if the provider has another source of keys, like an encrypted store&period;
| xref:FillableSigningProvider/mapScripts.adoc[`mapScripts`] 
| Map of script id to scripts known by the signing provider&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;
|===

== Derived Classes

[cols="1,4"]
|===
| Name| Description
| xref:wallet/LegacyDataSPKM.adoc[`LegacyDataSPKM`] 
| Manages the minimum data needed to load and migrate a legacy wallet&period;
|===


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