diff options
Diffstat (limited to 'src/wallet/rpc/wallet.cpp')
-rw-r--r-- | src/wallet/rpc/wallet.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/wallet/rpc/wallet.cpp b/src/wallet/rpc/wallet.cpp index 2773a7ed59..e8743cd2f6 100644 --- a/src/wallet/rpc/wallet.cpp +++ b/src/wallet/rpc/wallet.cpp @@ -713,6 +713,7 @@ static RPCHelpMan migratewallet() HELP_REQUIRING_PASSPHRASE, { {"wallet_name", RPCArg::Type::STR, RPCArg::DefaultHint{"the wallet name from the RPC endpoint"}, "The name of the wallet to migrate. If provided both here and in the RPC endpoint, the two must be identical."}, + {"passphrase", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "The wallet passphrase"}, }, RPCResult{ RPCResult::Type::OBJ, "", "", @@ -741,15 +742,14 @@ static RPCHelpMan migratewallet() wallet_name = request.params[0].get_str(); } - WalletContext& context = EnsureWalletContext(request.context); - { - std::shared_ptr<CWallet> wallet = GetWallet(context, wallet_name); - if (wallet && wallet->IsCrypted()) { - throw JSONRPCError(RPC_WALLET_WRONG_ENC_STATE, "Error: migratewallet on encrypted wallets is currently unsupported."); - } + SecureString wallet_pass; + wallet_pass.reserve(100); + if (!request.params[1].isNull()) { + wallet_pass = std::string_view{request.params[1].get_str()}; } - util::Result<MigrationResult> res = MigrateLegacyToDescriptor(wallet_name, context); + WalletContext& context = EnsureWalletContext(request.context); + util::Result<MigrationResult> res = MigrateLegacyToDescriptor(wallet_name, wallet_pass, context); if (!res) { throw JSONRPCError(RPC_WALLET_ERROR, util::ErrorString(res).original); } |