Skip to content

Commit 81e1dd5

Browse files
committed
Generalize PublicOnlySigningProvider into HidingSigningProvider
1 parent 84f1f1b commit 81e1dd5

File tree

3 files changed

+19
-13
lines changed

3 files changed

+19
-13
lines changed

src/script/sign.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -640,18 +640,25 @@ void PSBTOutput::Merge(const PSBTOutput& output)
640640
if (witness_script.empty() && !output.witness_script.empty()) witness_script = output.witness_script;
641641
}
642642

643-
bool PublicOnlySigningProvider::GetCScript(const CScriptID &scriptid, CScript& script) const
643+
bool HidingSigningProvider::GetCScript(const CScriptID& scriptid, CScript& script) const
644644
{
645645
return m_provider->GetCScript(scriptid, script);
646646
}
647647

648-
bool PublicOnlySigningProvider::GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const
648+
bool HidingSigningProvider::GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const
649649
{
650650
return m_provider->GetPubKey(keyid, pubkey);
651651
}
652652

653-
bool PublicOnlySigningProvider::GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const
653+
bool HidingSigningProvider::GetKey(const CKeyID& keyid, CKey& key) const
654654
{
655+
if (m_hide_secret) return false;
656+
return m_provider->GetKey(keyid, key);
657+
}
658+
659+
bool HidingSigningProvider::GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const
660+
{
661+
if (m_hide_origin) return false;
655662
return m_provider->GetKeyOrigin(keyid, info);
656663
}
657664

src/script/sign.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,19 @@ class SigningProvider
3939

4040
extern const SigningProvider& DUMMY_SIGNING_PROVIDER;
4141

42-
class PublicOnlySigningProvider : public SigningProvider
42+
class HidingSigningProvider : public SigningProvider
4343
{
4444
private:
45+
const bool m_hide_secret;
46+
const bool m_hide_origin;
4547
const SigningProvider* m_provider;
4648

4749
public:
48-
PublicOnlySigningProvider(const SigningProvider* provider) : m_provider(provider) {}
49-
bool GetCScript(const CScriptID &scriptid, CScript& script) const;
50-
bool GetPubKey(const CKeyID &address, CPubKey& pubkey) const;
51-
bool GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const;
50+
HidingSigningProvider(const SigningProvider* provider, bool hide_secret, bool hide_origin) : m_hide_secret(hide_secret), m_hide_origin(hide_origin), m_provider(provider) {}
51+
bool GetCScript(const CScriptID& scriptid, CScript& script) const override;
52+
bool GetPubKey(const CKeyID& keyid, CPubKey& pubkey) const override;
53+
bool GetKey(const CKeyID& keyid, CKey& key) const override;
54+
bool GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const override;
5255
};
5356

5457
struct FlatSigningProvider final : public SigningProvider

src/wallet/rpcwallet.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4520,11 +4520,7 @@ bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const C
45204520
}
45214521

45224522
SignatureData sigdata;
4523-
if (sign) {
4524-
complete &= SignPSBTInput(*pwallet, *psbtx.tx, input, sigdata, i, sighash_type);
4525-
} else {
4526-
complete &= SignPSBTInput(PublicOnlySigningProvider(pwallet), *psbtx.tx, input, sigdata, i, sighash_type);
4527-
}
4523+
complete &= SignPSBTInput(HidingSigningProvider(pwallet, !sign, false), *psbtx.tx, input, sigdata, i, sighash_type);
45284524

45294525
if (it != pwallet->mapWallet.end()) {
45304526
// Drop the unnecessary UTXO if we added both from the wallet.

0 commit comments

Comments
 (0)