mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-05-17 23:56:39 +00:00
Generalize PublicOnlySigningProvider into HidingSigningProvider
This commit is contained in:
parent
84f1f1bfdf
commit
81e1dd5ce1
@ -640,18 +640,25 @@ void PSBTOutput::Merge(const PSBTOutput& output)
|
|||||||
if (witness_script.empty() && !output.witness_script.empty()) witness_script = output.witness_script;
|
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);
|
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);
|
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);
|
return m_provider->GetKeyOrigin(keyid, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,16 +39,19 @@ public:
|
|||||||
|
|
||||||
extern const SigningProvider& DUMMY_SIGNING_PROVIDER;
|
extern const SigningProvider& DUMMY_SIGNING_PROVIDER;
|
||||||
|
|
||||||
class PublicOnlySigningProvider : public SigningProvider
|
class HidingSigningProvider : public SigningProvider
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
const bool m_hide_secret;
|
||||||
|
const bool m_hide_origin;
|
||||||
const SigningProvider* m_provider;
|
const SigningProvider* m_provider;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PublicOnlySigningProvider(const SigningProvider* provider) : m_provider(provider) {}
|
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;
|
bool GetCScript(const CScriptID& scriptid, CScript& script) const override;
|
||||||
bool GetPubKey(const CKeyID &address, CPubKey& pubkey) const;
|
bool GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const override;
|
||||||
bool GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const;
|
bool GetKey(const CKeyID& keyid, CKey& key) const override;
|
||||||
|
bool GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FlatSigningProvider final : public SigningProvider
|
struct FlatSigningProvider final : public SigningProvider
|
||||||
|
@ -4520,11 +4520,7 @@ bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const C
|
|||||||
}
|
}
|
||||||
|
|
||||||
SignatureData sigdata;
|
SignatureData sigdata;
|
||||||
if (sign) {
|
complete &= SignPSBTInput(HidingSigningProvider(pwallet, !sign, false), *psbtx.tx, input, sigdata, i, sighash_type);
|
||||||
complete &= SignPSBTInput(*pwallet, *psbtx.tx, input, sigdata, i, sighash_type);
|
|
||||||
} else {
|
|
||||||
complete &= SignPSBTInput(PublicOnlySigningProvider(pwallet), *psbtx.tx, input, sigdata, i, sighash_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (it != pwallet->mapWallet.end()) {
|
if (it != pwallet->mapWallet.end()) {
|
||||||
// Drop the unnecessary UTXO if we added both from the wallet.
|
// Drop the unnecessary UTXO if we added both from the wallet.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user