mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-28 20:45:04 +02:00
descriptors: Add PubkeyProvider::IsBIP32()
This commit is contained in:
@@ -221,6 +221,9 @@ public:
|
|||||||
|
|
||||||
/** Make a deep copy of this PubkeyProvider */
|
/** Make a deep copy of this PubkeyProvider */
|
||||||
virtual std::unique_ptr<PubkeyProvider> Clone() const = 0;
|
virtual std::unique_ptr<PubkeyProvider> Clone() const = 0;
|
||||||
|
|
||||||
|
/** Whether this PubkeyProvider is a BIP 32 extended key that can be derived from */
|
||||||
|
virtual bool IsBIP32() const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OriginPubkeyProvider final : public PubkeyProvider
|
class OriginPubkeyProvider final : public PubkeyProvider
|
||||||
@@ -251,6 +254,7 @@ public:
|
|||||||
}
|
}
|
||||||
bool IsRange() const override { return m_provider->IsRange(); }
|
bool IsRange() const override { return m_provider->IsRange(); }
|
||||||
size_t GetSize() const override { return m_provider->GetSize(); }
|
size_t GetSize() const override { return m_provider->GetSize(); }
|
||||||
|
bool IsBIP32() const override { return m_provider->IsBIP32(); }
|
||||||
std::string ToString(StringType type) const override { return "[" + OriginString(type) + "]" + m_provider->ToString(type); }
|
std::string ToString(StringType type) const override { return "[" + OriginString(type) + "]" + m_provider->ToString(type); }
|
||||||
bool ToPrivateString(const SigningProvider& arg, std::string& ret) const override
|
bool ToPrivateString(const SigningProvider& arg, std::string& ret) const override
|
||||||
{
|
{
|
||||||
@@ -319,6 +323,7 @@ public:
|
|||||||
}
|
}
|
||||||
bool IsRange() const override { return false; }
|
bool IsRange() const override { return false; }
|
||||||
size_t GetSize() const override { return m_pubkey.size(); }
|
size_t GetSize() const override { return m_pubkey.size(); }
|
||||||
|
bool IsBIP32() const override { return false; }
|
||||||
std::string ToString(StringType type) const override { return m_xonly ? HexStr(m_pubkey).substr(2) : HexStr(m_pubkey); }
|
std::string ToString(StringType type) const override { return m_xonly ? HexStr(m_pubkey).substr(2) : HexStr(m_pubkey); }
|
||||||
bool ToPrivateString(const SigningProvider& arg, std::string& ret) const override
|
bool ToPrivateString(const SigningProvider& arg, std::string& ret) const override
|
||||||
{
|
{
|
||||||
@@ -406,6 +411,7 @@ public:
|
|||||||
BIP32PubkeyProvider(uint32_t exp_index, const CExtPubKey& extkey, KeyPath path, DeriveType derive, bool apostrophe) : PubkeyProvider(exp_index), m_root_extkey(extkey), m_path(std::move(path)), m_derive(derive), m_apostrophe(apostrophe) {}
|
BIP32PubkeyProvider(uint32_t exp_index, const CExtPubKey& extkey, KeyPath path, DeriveType derive, bool apostrophe) : PubkeyProvider(exp_index), m_root_extkey(extkey), m_path(std::move(path)), m_derive(derive), m_apostrophe(apostrophe) {}
|
||||||
bool IsRange() const override { return m_derive != DeriveType::NO; }
|
bool IsRange() const override { return m_derive != DeriveType::NO; }
|
||||||
size_t GetSize() const override { return 33; }
|
size_t GetSize() const override { return 33; }
|
||||||
|
bool IsBIP32() const override { return true; }
|
||||||
std::optional<CPubKey> GetPubKey(int pos, const SigningProvider& arg, FlatSigningProvider& out, const DescriptorCache* read_cache = nullptr, DescriptorCache* write_cache = nullptr) const override
|
std::optional<CPubKey> GetPubKey(int pos, const SigningProvider& arg, FlatSigningProvider& out, const DescriptorCache* read_cache = nullptr, DescriptorCache* write_cache = nullptr) const override
|
||||||
{
|
{
|
||||||
KeyOriginInfo info;
|
KeyOriginInfo info;
|
||||||
|
Reference in New Issue
Block a user