Page MenuHomePhabricator

D4490.diff
No OneTemporary

D4490.diff

diff --git a/src/script/sign.h b/src/script/sign.h
--- a/src/script/sign.h
+++ b/src/script/sign.h
@@ -46,16 +46,21 @@
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 {
diff --git a/src/script/sign.cpp b/src/script/sign.cpp
--- a/src/script/sign.cpp
+++ b/src/script/sign.cpp
@@ -565,18 +565,28 @@
}
}
-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);
}
diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp
--- a/src/wallet/rpcwallet.cpp
+++ b/src/wallet/rpcwallet.cpp
@@ -5146,14 +5146,8 @@
}
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);
// Get public key paths
if (bip32derivs) {

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 1, 11:01 (16 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5187450
Default Alt Text
D4490.diff (3 KB)

Event Timeline