aboutsummaryrefslogtreecommitdiff
path: root/src/script/descriptor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/descriptor.cpp')
-rw-r--r--src/script/descriptor.cpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/script/descriptor.cpp b/src/script/descriptor.cpp
index 44e6112f2d..adb5d20edb 100644
--- a/src/script/descriptor.cpp
+++ b/src/script/descriptor.cpp
@@ -251,7 +251,7 @@ public:
return false;
}
- bool ToPrivateString(const SigningProvider& arg, std::string& out) const final
+ bool ToStringHelper(const SigningProvider* arg, std::string& out, bool priv) const
{
std::string extra = ToStringExtra();
size_t pos = extra.size() > 0 ? 1 : 0;
@@ -259,13 +259,17 @@ public:
for (const auto& pubkey : m_pubkey_args) {
if (pos++) ret += ",";
std::string tmp;
- if (!pubkey->ToPrivateString(arg, tmp)) return false;
+ if (priv) {
+ if (!pubkey->ToPrivateString(*arg, tmp)) return false;
+ } else {
+ tmp = pubkey->ToString();
+ }
ret += std::move(tmp);
}
if (m_script_arg) {
if (pos++) ret += ",";
std::string tmp;
- if (!m_script_arg->ToPrivateString(arg, tmp)) return false;
+ if (!m_script_arg->ToStringHelper(arg, tmp, priv)) return false;
ret += std::move(tmp);
}
out = std::move(ret) + ")";
@@ -274,20 +278,13 @@ public:
std::string ToString() const final
{
- std::string extra = ToStringExtra();
- size_t pos = extra.size() > 0 ? 1 : 0;
- std::string ret = m_name + "(" + extra;
- for (const auto& pubkey : m_pubkey_args) {
- if (pos++) ret += ",";
- ret += pubkey->ToString();
- }
- if (m_script_arg) {
- if (pos++) ret += ",";
- ret += m_script_arg->ToString();
- }
- return std::move(ret) + ")";
+ std::string ret;
+ ToStringHelper(nullptr, ret, false);
+ return ret;
}
+ bool ToPrivateString(const SigningProvider& arg, std::string& out) const override final { return ToStringHelper(&arg, out, true); }
+
bool Expand(int pos, const SigningProvider& arg, std::vector<CScript>& output_scripts, FlatSigningProvider& out) const final
{
std::vector<std::pair<CPubKey, KeyOriginInfo>> entries;