mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
Generalize PublicOnlySigningProvider into HidingSigningProvider
This commit is contained in:
parent
84f1f1bfdf
commit
81e1dd5ce1
3 changed files with 19 additions and 13 deletions
|
@ -640,18 +640,25 @@ void PSBTOutput::Merge(const PSBTOutput& output)
|
|||
if (witness_script.empty() && !output.witness_script.empty()) witness_script = output.witness_script;
|
||||
}
|
||||
|
||||
bool PublicOnlySigningProvider::GetCScript(const CScriptID &scriptid, CScript& script) const
|
||||
bool HidingSigningProvider::GetCScript(const CScriptID& scriptid, CScript& script) const
|
||||
{
|
||||
return m_provider->GetCScript(scriptid, script);
|
||||
}
|
||||
|
||||
bool PublicOnlySigningProvider::GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const
|
||||
bool HidingSigningProvider::GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const
|
||||
{
|
||||
return m_provider->GetPubKey(keyid, pubkey);
|
||||
}
|
||||
|
||||
bool PublicOnlySigningProvider::GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const
|
||||
bool HidingSigningProvider::GetKey(const CKeyID& keyid, CKey& key) const
|
||||
{
|
||||
if (m_hide_secret) return false;
|
||||
return m_provider->GetKey(keyid, key);
|
||||
}
|
||||
|
||||
bool HidingSigningProvider::GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const
|
||||
{
|
||||
if (m_hide_origin) return false;
|
||||
return m_provider->GetKeyOrigin(keyid, info);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,16 +39,19 @@ public:
|
|||
|
||||
extern const SigningProvider& DUMMY_SIGNING_PROVIDER;
|
||||
|
||||
class PublicOnlySigningProvider : public SigningProvider
|
||||
class HidingSigningProvider : public SigningProvider
|
||||
{
|
||||
private:
|
||||
const bool m_hide_secret;
|
||||
const bool m_hide_origin;
|
||||
const SigningProvider* m_provider;
|
||||
|
||||
public:
|
||||
PublicOnlySigningProvider(const SigningProvider* provider) : m_provider(provider) {}
|
||||
bool GetCScript(const CScriptID &scriptid, CScript& script) const;
|
||||
bool GetPubKey(const CKeyID &address, CPubKey& pubkey) const;
|
||||
bool GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const;
|
||||
HidingSigningProvider(const SigningProvider* provider, bool hide_secret, bool hide_origin) : m_hide_secret(hide_secret), m_hide_origin(hide_origin), m_provider(provider) {}
|
||||
bool GetCScript(const CScriptID& scriptid, CScript& script) const override;
|
||||
bool GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const override;
|
||||
bool GetKey(const CKeyID& keyid, CKey& key) const override;
|
||||
bool GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const override;
|
||||
};
|
||||
|
||||
struct FlatSigningProvider final : public SigningProvider
|
||||
|
|
|
@ -4520,11 +4520,7 @@ bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const C
|
|||
}
|
||||
|
||||
SignatureData sigdata;
|
||||
if (sign) {
|
||||
complete &= SignPSBTInput(*pwallet, *psbtx.tx, input, sigdata, i, sighash_type);
|
||||
} else {
|
||||
complete &= SignPSBTInput(PublicOnlySigningProvider(pwallet), *psbtx.tx, input, sigdata, i, sighash_type);
|
||||
}
|
||||
complete &= SignPSBTInput(HidingSigningProvider(pwallet, !sign, false), *psbtx.tx, input, sigdata, i, sighash_type);
|
||||
|
||||
if (it != pwallet->mapWallet.end()) {
|
||||
// Drop the unnecessary UTXO if we added both from the wallet.
|
||||
|
|
Loading…
Add table
Reference in a new issue