From 7449be0ec0d74a250d1a20f4e4ff2a4fcffc1f2c Mon Sep 17 00:00:00 2001 From: Glenn Willen Date: Thu, 6 Jun 2019 22:10:52 -0700 Subject: [PATCH] Disable PSBT RPCs when not in g_con_elementsmode. --- src/rpc/rawtransaction.cpp | 18 ++++++++++++++++++ src/wallet/rpcwallet.cpp | 12 ++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index 762d63c413..7cdfc0018a 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -1313,6 +1313,9 @@ static std::string WriteHDKeypath(std::vector& keypath) UniValue blindpsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + if (request.fHelp || request.params.size() < 1 || request.params.size() > 2) throw std::runtime_error( RPCHelpMan{"blindpsbt", @@ -1433,6 +1436,9 @@ UniValue blindpsbt(const JSONRPCRequest& request) UniValue decodepsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + if (request.fHelp || request.params.size() != 1) throw std::runtime_error( RPCHelpMan{"decodepsbt", @@ -1768,6 +1774,9 @@ UniValue decodepsbt(const JSONRPCRequest& request) UniValue combinepsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + if (request.fHelp || request.params.size() != 1) throw std::runtime_error( RPCHelpMan{"combinepsbt", @@ -1816,6 +1825,9 @@ UniValue combinepsbt(const JSONRPCRequest& request) UniValue finalizepsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + if (request.fHelp || request.params.size() < 1 || request.params.size() > 2) throw std::runtime_error( RPCHelpMan{"finalizepsbt", @@ -1874,6 +1886,9 @@ UniValue finalizepsbt(const JSONRPCRequest& request) UniValue createpsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + if (request.fHelp || request.params.size() < 2 || request.params.size() > 4) throw std::runtime_error( RPCHelpMan{"createpsbt", @@ -1949,6 +1964,9 @@ UniValue createpsbt(const JSONRPCRequest& request) UniValue converttopsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + if (request.fHelp || request.params.size() < 1 || request.params.size() > 3) throw std::runtime_error( RPCHelpMan{"converttopsbt", diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 8ee7cdfc52..b06080ee20 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -4357,6 +4357,9 @@ void AddKeypathToMap(const CWallet* pwallet, const CKeyID& keyID, std::map const wallet = GetWalletForJSONRPCRequest(request); CWallet* const pwallet = wallet.get(); @@ -4407,6 +4410,9 @@ UniValue walletfillpsbtdata(const JSONRPCRequest& request) UniValue walletsignpsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + std::shared_ptr const wallet = GetWalletForJSONRPCRequest(request); CWallet* const pwallet = wallet.get(); @@ -4471,6 +4477,9 @@ UniValue walletsignpsbt(const JSONRPCRequest& request) UniValue walletprocesspsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + std::shared_ptr const wallet = GetWalletForJSONRPCRequest(request); CWallet* const pwallet = wallet.get(); @@ -4540,6 +4549,9 @@ UniValue walletprocesspsbt(const JSONRPCRequest& request) UniValue walletcreatefundedpsbt(const JSONRPCRequest& request) { + if (!g_con_elementsmode) + throw std::runtime_error("PSBT operations are disabled when not in elementsmode.\n"); + std::shared_ptr const wallet = GetWalletForJSONRPCRequest(request); CWallet* const pwallet = wallet.get();