/Users/mcomp/contrib/bitcoin/src/script/keyorigin.h
Line | Count | Source (jump to first uncovered line) |
1 | | // Copyright (c) 2019-2020 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 <serialize.h> |
9 | | #include <vector> |
10 | | |
11 | | struct KeyOriginInfo |
12 | | { |
13 | | unsigned char fingerprint[4]; //!< First 32 bits of the Hash160 of the public key at the root of the path |
14 | | std::vector<uint32_t> path; |
15 | | |
16 | | friend bool operator==(const KeyOriginInfo& a, const KeyOriginInfo& b) |
17 | 0 | { |
18 | 0 | return std::equal(std::begin(a.fingerprint), std::end(a.fingerprint), std::begin(b.fingerprint)) && a.path == b.path; |
19 | 0 | } |
20 | | |
21 | | friend bool operator<(const KeyOriginInfo& a, const KeyOriginInfo& b) |
22 | 0 | { |
23 | | // Compare the fingerprints lexicographically |
24 | 0 | int fpr_cmp = memcmp(a.fingerprint, b.fingerprint, 4); |
25 | 0 | if (fpr_cmp < 0) { |
26 | 0 | return true; |
27 | 0 | } else if (fpr_cmp > 0) { |
28 | 0 | return false; |
29 | 0 | } |
30 | | // Compare the sizes of the paths, shorter is "less than" |
31 | 0 | if (a.path.size() < b.path.size()) { |
32 | 0 | return true; |
33 | 0 | } else if (a.path.size() > b.path.size()) { |
34 | 0 | return false; |
35 | 0 | } |
36 | | // Paths same length, compare them lexicographically |
37 | 0 | return a.path < b.path; |
38 | 0 | } |
39 | | |
40 | 0 | SERIALIZE_METHODS(KeyOriginInfo, obj) { READWRITE(obj.fingerprint, obj.path); } Unexecuted instantiation: _ZN13KeyOriginInfo16SerializationOpsI10DataStreamS_17ActionUnserializeEEvRT0_RT_T1_ Unexecuted instantiation: _ZN13KeyOriginInfo16SerializationOpsI10DataStreamKS_15ActionSerializeEEvRT0_RT_T1_ |
41 | | |
42 | | void clear() |
43 | 0 | { |
44 | 0 | memset(fingerprint, 0, 4); |
45 | 0 | path.clear(); |
46 | 0 | } |
47 | | }; |
48 | | |
49 | | #endif // BITCOIN_SCRIPT_KEYORIGIN_H |