diff options
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/descriptor.cpp | 8 | ||||
-rw-r--r-- | src/script/descriptor.h | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/script/descriptor.cpp b/src/script/descriptor.cpp index 95b949e9c2..a39cf635aa 100644 --- a/src/script/descriptor.cpp +++ b/src/script/descriptor.cpp @@ -938,6 +938,14 @@ std::unique_ptr<Descriptor> Parse(const std::string& descriptor, FlatSigningProv return nullptr; } +std::string GetDescriptorChecksum(const std::string& descriptor) +{ + std::string ret; + Span<const char> sp(descriptor.data(), descriptor.size()); + if (!CheckChecksum(sp, false, &ret)) return ""; + return ret; +} + std::unique_ptr<Descriptor> InferDescriptor(const CScript& script, const SigningProvider& provider) { return InferScript(script, ParseScriptContext::TOP, provider); diff --git a/src/script/descriptor.h b/src/script/descriptor.h index 29915c6c92..8c937d7fe5 100644 --- a/src/script/descriptor.h +++ b/src/script/descriptor.h @@ -81,6 +81,14 @@ struct Descriptor { */ std::unique_ptr<Descriptor> Parse(const std::string& descriptor, FlatSigningProvider& out, bool require_checksum = false); +/** Get the checksum for a descriptor. + * + * If it already has one, and it is correct, return the checksum in the input. + * If it already has one that is wrong, return "". + * If it does not already have one, return the checksum that would need to be added. + */ +std::string GetDescriptorChecksum(const std::string& descriptor); + /** Find a descriptor for the specified script, using information from provider where possible. * * A non-ranged descriptor which only generates the specified script will be returned in all |