Bitcoin Core
31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
src
wallet
test
scriptpubkeyman_tests.cpp
Go to the documentation of this file.
1
// Copyright (c) 2020-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
#include <
key.h
>
6
#include <
key_io.h
>
7
#include <
test/util/setup_common.h
>
8
#include <
script/solver.h
>
9
#include <
wallet/scriptpubkeyman.h
>
10
#include <
wallet/wallet.h
>
11
#include <
wallet/test/util.h
>
12
13
#include <boost/test/unit_test.hpp>
14
15
namespace
wallet
{
16
BOOST_FIXTURE_TEST_SUITE
(
scriptpubkeyman_tests
,
BasicTestingSetup
)
17
18
BOOST_AUTO_TEST_CASE
(
DescriptorScriptPubKeyManTests
)
19
{
20
std::unique_ptr<interfaces::Chain>& chain =
m_node
.
chain
;
21
22
CWallet
keystore
(chain.get(),
""
, CreateMockableWalletDatabase());
23
auto
key_scriptpath
=
GenerateRandomKey
();
24
25
// Verify that a SigningProvider for a pubkey is only returned if its corresponding private key is available
26
auto
key_internal
=
GenerateRandomKey
();
27
std::string
desc_str
=
"tr("
+
EncodeSecret
(
key_internal
) +
",pk("
+
HexStr
(
key_scriptpath
.GetPubKey()) +
"))"
;
28
auto
spk_man1
=
CreateDescriptor
(
keystore
,
desc_str
,
true
);
29
BOOST_CHECK
(
spk_man1
!=
nullptr
);
30
auto
signprov_keypath_spendable
=
spk_man1
->GetSigningProvider(
key_internal
.GetPubKey());
31
BOOST_CHECK
(
signprov_keypath_spendable
!=
nullptr
);
32
33
desc_str
=
"tr("
+
HexStr
(
XOnlyPubKey::NUMS_H
) +
",pk("
+
HexStr
(
key_scriptpath
.GetPubKey()) +
"))"
;
34
auto
spk_man2
=
CreateDescriptor
(
keystore
,
desc_str
,
true
);
35
BOOST_CHECK
(
spk_man2
!=
nullptr
);
36
auto
signprov_keypath_nums_h
=
spk_man2
->GetSigningProvider(
XOnlyPubKey::NUMS_H
.GetEvenCorrespondingCPubKey());
37
BOOST_CHECK
(
signprov_keypath_nums_h
==
nullptr
);
38
}
39
40
BOOST_AUTO_TEST_SUITE_END
()
41
}
// namespace wallet
m_node
node::NodeContext m_node
Definition
bitcoin-gui.cpp:43
XOnlyPubKey::NUMS_H
static const XOnlyPubKey NUMS_H
Nothing Up My Sleeve point H Used as an internal key for provably disabling the key path spend see BI...
Definition
pubkey.h:195
wallet::CWallet
A CWallet maintains a set of transactions and balances, and provides the ability to create new transa...
Definition
wallet.h:310
BOOST_FIXTURE_TEST_SUITE
BOOST_FIXTURE_TEST_SUITE(cuckoocache_tests, BasicTestingSetup)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END
BOOST_AUTO_TEST_SUITE_END()
HexStr
std::string HexStr(const std::span< const uint8_t > s)
Convert a span of bytes to a lower-case hexadecimal string.
Definition
hex_base.cpp:30
GenerateRandomKey
CKey GenerateRandomKey(bool compressed) noexcept
Definition
key.cpp:475
key.h
EncodeSecret
std::string EncodeSecret(const CKey &key)
Definition
key_io.cpp:231
key_io.h
wallet
Definition
wallet_balance.cpp:26
wallet::CreateDescriptor
wallet::DescriptorScriptPubKeyMan * CreateDescriptor(CWallet &keystore, const std::string &desc_str, const bool success)
Definition
util.cpp:221
wallet::BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(bnb_test)
Definition
coinselection_tests.cpp:123
BOOST_CHECK
#define BOOST_CHECK(expr)
Definition
object.cpp:16
scriptpubkeyman.h
setup_common.h
solver.h
BasicTestingSetup
Basic testing setup.
Definition
setup_common.h:64
node::NodeContext::chain
std::unique_ptr< interfaces::Chain > chain
Definition
context.h:76
Ticks
constexpr auto Ticks(Dur2 d)
Helper to count the seconds of a duration/time_point.
Definition
time.h:73
util.h
wallet.h
Generated on Thu Apr 16 2026 09:42:38 for Bitcoin Core by
1.10.0