Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
rpc
external_signer.cpp
Go to the documentation of this file.
1
// Copyright (c) 2018-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 <bitcoin-build-config.h>
// IWYU pragma: keep
6
7
#include <
common/args.h
>
8
#include <
common/system.h
>
9
#include <
external_signer.h
>
10
#include <
rpc/protocol.h
>
11
#include <
rpc/server.h
>
12
#include <rpc/util.h>
13
#include <
util/strencodings.h
>
14
15
#include <string>
16
#include <vector>
17
18
#ifdef ENABLE_EXTERNAL_SIGNER
19
20
static
RPCHelpMan
enumeratesigners
()
21
{
22
return
RPCHelpMan
{
"enumeratesigners"
,
23
"Returns a list of external signers from -signer."
,
24
{},
25
RPCResult
{
26
RPCResult::Type::OBJ
,
""
,
""
,
27
{
28
{
RPCResult::Type::ARR
,
"signers"
,
/*optional=*/
false
,
""
,
29
{
30
{
RPCResult::Type::OBJ
,
""
,
""
,
31
{
32
{
RPCResult::Type::STR_HEX
,
"fingerprint"
,
"Master key fingerprint"
},
33
{
RPCResult::Type::STR
,
"name"
,
"Device name"
},
34
}},
35
},
36
}
37
}
38
},
39
RPCExamples
{
40
HelpExampleCli
(
"enumeratesigners"
,
""
)
41
+
HelpExampleRpc
(
"enumeratesigners"
,
""
)
42
},
43
[&](
const
RPCHelpMan
& self,
const
JSONRPCRequest
& request) ->
UniValue
44
{
45
const
std::string
command
=
gArgs
.GetArg(
"-signer"
,
""
);
46
if
(
command
==
""
)
throw
JSONRPCError
(
RPC_MISC_ERROR
,
"Error: restart bitcoind with -signer=<cmd>"
);
47
const
std::string chain =
gArgs
.GetChainTypeString();
48
UniValue
signers_res =
UniValue::VARR
;
49
try
{
50
std::vector<ExternalSigner> signers;
51
ExternalSigner::Enumerate
(
command
, signers, chain);
52
for
(
const
ExternalSigner
&
signer
: signers) {
53
UniValue
signer_res =
UniValue::VOBJ
;
54
signer_res.
pushKV
(
"fingerprint"
,
signer
.m_fingerprint);
55
signer_res.
pushKV
(
"name"
,
signer
.m_name);
56
signers_res.
push_back
(std::move(signer_res));
57
}
58
}
catch
(
const
std::exception& e) {
59
throw
JSONRPCError
(
RPC_MISC_ERROR
, e.what());
60
}
61
UniValue
result(
UniValue::VOBJ
);
62
result.
pushKV
(
"signers"
, std::move(signers_res));
63
return
result;
64
}
65
};
66
}
67
68
void
RegisterSignerRPCCommands
(
CRPCTable
&
t
)
69
{
70
static
const
CRPCCommand
commands[]{
71
{
"signer"
, &
enumeratesigners
},
72
};
73
for
(
const
auto
& c : commands) {
74
t
.appendCommand(c.name, &c);
75
}
76
}
77
78
#endif
// ENABLE_EXTERNAL_SIGNER
gArgs
ArgsManager gArgs
Definition
args.cpp:40
args.h
command
const auto command
Definition
bitcoin-wallet.cpp:116
CRPCCommand
Definition
server.h:42
CRPCTable
RPC command dispatcher.
Definition
server.h:87
ExternalSigner
Definition
external_signer.h:19
ExternalSigner::Enumerate
static bool Enumerate(const std::string &command, std::vector< ExternalSigner > &signers, const std::string &chain)
Definition
external_signer.cpp:27
JSONRPCRequest
Definition
request.h:53
RPCHelpMan
Definition
util.h:419
UniValue
Definition
univalue.h:22
UniValue::push_back
void push_back(UniValue val)
Definition
univalue.cpp:103
UniValue::VOBJ
@ VOBJ
Definition
univalue.h:24
UniValue::VARR
@ VARR
Definition
univalue.h:24
UniValue::pushKV
void pushKV(std::string key, UniValue val)
Definition
univalue.cpp:125
external_signer.h
JSONRPCError
UniValue JSONRPCError(int code, const std::string &message)
Definition
request.cpp:70
RegisterSignerRPCCommands
void RegisterSignerRPCCommands(CRPCTable &t)
Definition
external_signer.cpp:68
enumeratesigners
static RPCHelpMan enumeratesigners()
Definition
external_signer.cpp:20
protocol.h
RPC_MISC_ERROR
@ RPC_MISC_ERROR
General application defined errors.
Definition
protocol.h:40
HelpExampleCli
std::string HelpExampleCli(const std::string &methodname, const std::string &args)
Definition
util.cpp:183
HelpExampleRpc
std::string HelpExampleRpc(const std::string &methodname, const std::string &args)
Definition
util.cpp:201
server.h
strencodings.h
ByteUnit::t
@ t
Definition
strencodings.h:52
RPCExamples
Definition
util.h:408
RPCResult
Definition
util.h:296
RPCResult::Type::STR
@ STR
Definition
util.h:300
RPCResult::Type::ARR
@ ARR
Definition
util.h:299
RPCResult::Type::STR_HEX
@ STR_HEX
Special string with only hex chars.
Definition
util.h:306
RPCResult::Type::OBJ
@ OBJ
Definition
util.h:298
signer
Definition
musig.c:31
system.h
Generated on
for Bitcoin Core by
1.17.0