13#include <test/util/setup_common.h>
15#include <boost/test/unit_test.hpp>
19BOOST_FIXTURE_TEST_SUITE(delegation_tests, TestingSetup)
22 const
CPubKey &expected_pubkey) {
48 dgb.
addLevel(key, l1key.GetPubKey());
55 dgb.
addLevel(l1key, l2key.GetPubKey());
85 std::vector<TestVector> testcases{
87 "46116afa1abaab88b96c115c248b77c7d8e099565c5fb40731482c6655ca450d21"
88 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3"
90 "afc74900c1f28b69e466461fb1e0663352da6153be0fcd59280e27f2446391d5",
91 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3",
94 "46116afa1abaab88b96c115c248b77c7d8e099565c5fb40731482c6655ca450d21"
95 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3"
96 "012103e49f9df52de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645e"
98 "2ddbea7c88dcf38412b58374856a466e165797a69321c0928a89c64521f7e2e767c93"
99 "de645ef5125ec901dcd51347787ca29771e7786bbe402d2d5ead0dc",
100 "ffcd49dc98ebdbc90e731a7b0c89939bfe082f15f3aa82aca657176b83669185",
101 "03e49f9df52de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645ef",
104 "46116afa1abaab88b96c115c248b77c7d8e099565c5fb40731482c6655ca450d21"
105 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3"
106 "022103e49f9df52de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645e"
107 "f7d512ddbea7c88dcf38412b58374856a466e165797a69321c0928a89c64521f7e2e7"
108 "67c93de645ef5125ec901dcd51347787ca29771e7786bbe402d2d5ead0dc2103aac52"
109 "f4cfca700e7e9824298e0184755112e32f359c832f5f6ad2ef62a2c024a5cddd0ffe8"
110 "4e12e4bf49e4c0af7c8548e618a24e12495d659f5ba75e114e1526a618aa305b1e69b"
111 "f6ae20b2557999f2e3fec25d5f2271f8b9de0d06ba7344550",
112 "a3f98e6b5ec330219493d109e5c11ed8e302315df4604b5462e9fb80cb0fde89",
113 "03aac52f4cfca700e7e9824298e0184755112e32f359c832f5f6ad2ef62a2c024a",
116 "46116afa1abaab88b96c115c248b77c7d8e099565c5fb40731482c6655ca450d21"
117 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3012"
118 "103e49f9df53de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645ef7d"
119 "512ddbea7c88dcf38412b58374856a466e165797a69321c0928a89c64521f7e2e767c"
120 "93de645ef5125ec901dcd51347787ca29771e7786bbe402d2d5ead0dc",
121 "af7e82716489c3cf3f361d449ed815112ff619f7fc34a4803bd958c68d1e2684",
122 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3",
123 DelegationResult::INVALID_SIGNATURE},
124 {
"Invalid signature",
125 "46116afa1abaab88b96c115c248b77c7d8e099565c5fb40731482c6655ca450d21"
126 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3"
127 "012103e49f9df52de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645e"
128 "f7d512ddbea7c88dcf38412c58374856a466e165797a69321c0928a89c64521f7e2e7"
129 "67c93de645ef5125ec901dcd51347787ca29771e7786bbe402d2d5ead0dc",
130 "ffcd49dc98ebdbc90e731a7b0c89939bfe082f15f3aa82aca657176b83669185",
131 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3",
132 DelegationResult::INVALID_SIGNATURE},
133 {
"Second invalid key",
134 "46116afa1abaab88b96c115c248b77c7d8e099565c5fb40731482c6655ca450d21"
135 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3"
136 "022103e49f9df52de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645e"
137 "f7d512ddbea7c88dcf38412b58374856a466e165797a69321c0928a89c64521f7e2e7"
138 "67c93de645ef5125ec901dcd51347787ca29771e7786bbe402d2d5ead0dc2103aac52"
139 "f4dfca700e7e9824298e0184755112e32f359c832f5f6ad2ef62a2c024a5cddd0ffe8"
140 "4e12e4bf49e4c0af7c8548e618a24e12495d659f5ba75e114e1526a618aa305b1e69b"
141 "f6ae20b2557999f2e3fec25d5f2271f8b9de0d06ba7344550",
142 "b474512f71a3f5a6e94cc3b958fd658ece0d0632ace58c8c8f9f65c2b9ad5fad",
143 "03e49f9df52de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645ef",
144 DelegationResult::INVALID_SIGNATURE},
145 {
"Second invalid signature",
146 "46116afa1abaab88b96c115c248b77c7d8e099565c5fb40731482c6655ca450d21"
147 "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3"
148 "022103e49f9df52de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645e"
149 "f7d512ddbea7c88dcf38412b58374856a466e165797a69321c0928a89c64521f7e2e7"
150 "67c93de645ef5125ec901dcd51347787ca29771e7786bbe402d2d5ead0dc2103aac52"
151 "f4cfca700e7e9824298e0184755112e32f359c832f5f6ad2ef62a2c024a5cddd0ffe8"
152 "4e12e4bf49e4c0af7c8548e618a24e12495d659f5ba75e114e1526a618aa305b1e69b"
153 "f6ae20b2557999f2e3fec25d5f2271f8b9de0d06ba7344551",
154 "a3f98e6b5ec330219493d109e5c11ed8e302315df4604b5462e9fb80cb0fde89",
155 "03e49f9df52de2dea81cf7838b82521b69f2ea360f1c4eed9e6c89b7d0f9e645ef",
156 DelegationResult::INVALID_SIGNATURE},
159 for (
auto &c : testcases) {
177 123456, 1234, proofKey);
181 CKey delegatorKey = proofKey;
185 delegatorKey = delegatedKey;
205BOOST_AUTO_TEST_SUITE_END()
#define Assert(val)
Identity function.
An encapsulated secp256k1 private key.
static CKey MakeCompressedKey()
Produce a valid compressed key.
CPubKey GetPubKey() const
Compute the public key from a private key.
An encapsulated public key.
bool addLevel(const CKey &delegatorKey, const CPubKey &delegatedPubKey)
bool verify(DelegationState &state, CPubKey &auth) const
const DelegationId & getId() const
BOOST_AUTO_TEST_CASE(verify_random)
static void CheckDelegation(const Delegation &dg, const ProofRef &p, const CPubKey &expected_pubkey)
bool error(const char *fmt, const Args &...args)
constexpr size_t MAX_DELEGATION_LEVELS
The maximum number of delegation levels we are willing to verify.
ProofRef buildRandomProof(Chainstate &active_chainstate, uint32_t score, int height, const CKey &masterKey)
#define BOOST_CHECK_EQUAL(v1, v2)
#define BOOST_CHECK(expr)
template std::vector< std::byte > ParseHex(std::string_view)