MCPcopy Create free account
hub / github.com/BTCGPU/BTCGPU / GetPubKey

Method GetPubKey

src/script/descriptor.cpp:121–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

119 bool IsRange() const override { return m_derive != DeriveType::NO; }
120 size_t GetSize() const override { return 33; }
121 bool GetPubKey(int pos, const SigningProvider& arg, CPubKey& out) const override
122 {
123 if (IsHardened()) {
124 CExtKey key;
125 if (!GetExtKey(arg, key)) return false;
126 for (auto entry : m_path) {
127 key.Derive(key, entry);
128 }
129 if (m_derive == DeriveType::UNHARDENED) key.Derive(key, pos);
130 if (m_derive == DeriveType::HARDENED) key.Derive(key, pos | 0x80000000UL);
131 out = key.Neuter().pubkey;
132 } else {
133 // TODO: optimize by caching
134 CExtPubKey key = m_extkey;
135 for (auto entry : m_path) {
136 key.Derive(key, entry);
137 }
138 if (m_derive == DeriveType::UNHARDENED) key.Derive(key, pos);
139 assert(m_derive != DeriveType::HARDENED);
140 out = key.pubkey;
141 }
142 return true;
143 }
144 std::string ToString() const override
145 {
146 std::string ret = EncodeExtPubKey(m_extkey) + FormatKeyPath(m_path);

Callers

nothing calls this directly

Calls 2

NeuterMethod · 0.80
DeriveMethod · 0.45

Tested by

no test coverage detected