Move KeyOriginInfo to its own header file

pull/16227/head
Andrew Chow 5 years ago
parent d9becff4e1
commit 16f8096e91

@ -181,6 +181,7 @@ BITCOIN_CORE_H = \
rpc/util.h \ rpc/util.h \
scheduler.h \ scheduler.h \
script/descriptor.h \ script/descriptor.h \
script/keyorigin.h \
script/sigcache.h \ script/sigcache.h \
script/sign.h \ script/sign.h \
script/standard.h \ script/standard.h \

@ -0,0 +1,37 @@
// Copyright (c) 2019 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_SCRIPT_KEYORIGIN_H
#define BITCOIN_SCRIPT_KEYORIGIN_H
#include <serialize.h>
#include <streams.h>
#include <vector>
struct KeyOriginInfo
{
unsigned char fingerprint[4]; //!< First 32 bits of the Hash160 of the public key at the root of the path
std::vector<uint32_t> path;
friend bool operator==(const KeyOriginInfo& a, const KeyOriginInfo& b)
{
return std::equal(std::begin(a.fingerprint), std::end(a.fingerprint), std::begin(b.fingerprint)) && a.path == b.path;
}
ADD_SERIALIZE_METHODS;
template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action)
{
READWRITE(fingerprint);
READWRITE(path);
}
void clear()
{
memset(fingerprint, 0, 4);
path.clear();
}
};
#endif // BITCOIN_SCRIPT_KEYORIGIN_H

@ -10,6 +10,7 @@
#include <hash.h> #include <hash.h>
#include <pubkey.h> #include <pubkey.h>
#include <script/interpreter.h> #include <script/interpreter.h>
#include <script/keyorigin.h>
#include <streams.h> #include <streams.h>
class CKey; class CKey;
@ -20,31 +21,6 @@ class CTransaction;
struct CMutableTransaction; struct CMutableTransaction;
struct KeyOriginInfo
{
unsigned char fingerprint[4]; //!< First 32 bits of the Hash160 of the public key at the root of the path
std::vector<uint32_t> path;
friend bool operator==(const KeyOriginInfo& a, const KeyOriginInfo& b)
{
return std::equal(std::begin(a.fingerprint), std::end(a.fingerprint), std::begin(b.fingerprint)) && a.path == b.path;
}
ADD_SERIALIZE_METHODS;
template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action)
{
READWRITE(fingerprint);
READWRITE(path);
}
void clear()
{
memset(fingerprint, 0, 4);
path.clear();
}
};
/** An interface to be implemented by keystores that support signing. */ /** An interface to be implemented by keystores that support signing. */
class SigningProvider class SigningProvider
{ {

Loading…
Cancel
Save