Bitcoin Core 31.99.0
P2P Digital Currency
keyorigin.h
Go to the documentation of this file.
1// Copyright (c) 2019-present The Bitcoin Core developers
2// Distributed under the MIT software license, see the accompanying
3// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5#ifndef BITCOIN_SCRIPT_KEYORIGIN_H
6#define BITCOIN_SCRIPT_KEYORIGIN_H
7
8#include <pubkey.h>
9#include <serialize.h>
10#include <vector>
11
13{
15 std::vector<uint32_t> path;
16
17 friend bool operator==(const KeyOriginInfo& a, const KeyOriginInfo& b) = default;
18
19 friend bool operator<(const KeyOriginInfo& a, const KeyOriginInfo& b)
20 {
21 // Compare the fingerprints lexicographically
22 if (a.fingerprint < b.fingerprint) return true;
23 else if (a.fingerprint > b.fingerprint) return false;
24
25 // Compare the sizes of the paths, shorter is "less than"
26 if (a.path.size() < b.path.size()) {
27 return true;
28 } else if (a.path.size() > b.path.size()) {
29 return false;
30 }
31 // Paths same length, compare them lexicographically
32 return a.path < b.path;
33 }
34
35 SERIALIZE_METHODS(KeyOriginInfo, obj) { READWRITE(obj.fingerprint, obj.path); }
36
37 void clear()
38 {
39 fingerprint.fill(0);
40 path.clear();
41 }
42};
43
44#endif // BITCOIN_SCRIPT_KEYORIGIN_H
std::array< unsigned char, 4 > KeyFingerprint
Definition: pubkey.h:22
#define READWRITE(...)
Definition: serialize.h:148
SERIALIZE_METHODS(KeyOriginInfo, obj)
Definition: keyorigin.h:35
KeyFingerprint fingerprint
First 32 bits of the Hash160 of the public key at the root of the path.
Definition: keyorigin.h:14
friend bool operator==(const KeyOriginInfo &a, const KeyOriginInfo &b)=default
std::vector< uint32_t > path
Definition: keyorigin.h:15
friend bool operator<(const KeyOriginInfo &a, const KeyOriginInfo &b)
Definition: keyorigin.h:19
void clear()
Definition: keyorigin.h:37