diff --git a/client/src/client_sync/v17/mod.rs b/client/src/client_sync/v17/mod.rs index 84617b49..985beaa9 100644 --- a/client/src/client_sync/v17/mod.rs +++ b/client/src/client_sync/v17/mod.rs @@ -153,6 +153,7 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v17__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); /// Argument to the `Client::get_new_address_with_type` function. diff --git a/client/src/client_sync/v17/wallet.rs b/client/src/client_sync/v17/wallet.rs index f0cadac4..04f0a11f 100644 --- a/client/src/client_sync/v17/wallet.rs +++ b/client/src/client_sync/v17/wallet.rs @@ -669,6 +669,22 @@ macro_rules! impl_client_v17__wallet_create_funded_psbt { }; } +/// Implements Bitcoin Core JSON-RPC API method `walletlock`. +#[macro_export] +macro_rules! impl_client_v17__wallet_lock { + () => { + impl Client { + pub fn wallet_lock(&self) -> Result<()> { + match self.call("walletlock", &[]) { + Ok(serde_json::Value::Null) => Ok(()), + Ok(res) => Err(Error::Returned(res.to_string())), + Err(err) => Err(err.into()), + } + } + } + }; +} + /// Implements Bitcoin Core JSON-RPC API method `walletprocesspsbt`. #[macro_export] macro_rules! impl_client_v17__wallet_process_psbt { diff --git a/client/src/client_sync/v18/mod.rs b/client/src/client_sync/v18/mod.rs index 67e87e86..68183071 100644 --- a/client/src/client_sync/v18/mod.rs +++ b/client/src/client_sync/v18/mod.rs @@ -170,4 +170,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v17__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v19/mod.rs b/client/src/client_sync/v19/mod.rs index d27d9d87..8f463876 100644 --- a/client/src/client_sync/v19/mod.rs +++ b/client/src/client_sync/v19/mod.rs @@ -167,4 +167,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v17__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v20/mod.rs b/client/src/client_sync/v20/mod.rs index df8a46bb..334db2dd 100644 --- a/client/src/client_sync/v20/mod.rs +++ b/client/src/client_sync/v20/mod.rs @@ -167,4 +167,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v17__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v21/mod.rs b/client/src/client_sync/v21/mod.rs index 011e3142..c0d794b4 100644 --- a/client/src/client_sync/v21/mod.rs +++ b/client/src/client_sync/v21/mod.rs @@ -167,4 +167,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v22/mod.rs b/client/src/client_sync/v22/mod.rs index 57fe9b25..f8a73ba5 100644 --- a/client/src/client_sync/v22/mod.rs +++ b/client/src/client_sync/v22/mod.rs @@ -167,4 +167,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v23/mod.rs b/client/src/client_sync/v23/mod.rs index 1dcee366..b7c7ca07 100644 --- a/client/src/client_sync/v23/mod.rs +++ b/client/src/client_sync/v23/mod.rs @@ -169,6 +169,7 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); /// Argument to the `Client::get_new_address_with_type` function. diff --git a/client/src/client_sync/v24/mod.rs b/client/src/client_sync/v24/mod.rs index 6df99d65..4d990792 100644 --- a/client/src/client_sync/v24/mod.rs +++ b/client/src/client_sync/v24/mod.rs @@ -166,4 +166,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v25/mod.rs b/client/src/client_sync/v25/mod.rs index 4b7c310c..56186cf0 100644 --- a/client/src/client_sync/v25/mod.rs +++ b/client/src/client_sync/v25/mod.rs @@ -166,4 +166,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v26/mod.rs b/client/src/client_sync/v26/mod.rs index 47b08f28..8922dd7f 100644 --- a/client/src/client_sync/v26/mod.rs +++ b/client/src/client_sync/v26/mod.rs @@ -172,4 +172,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v27/mod.rs b/client/src/client_sync/v27/mod.rs index 59685ca1..f68edc70 100644 --- a/client/src/client_sync/v27/mod.rs +++ b/client/src/client_sync/v27/mod.rs @@ -168,4 +168,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v28/mod.rs b/client/src/client_sync/v28/mod.rs index e059f3bb..6a9a221c 100644 --- a/client/src/client_sync/v28/mod.rs +++ b/client/src/client_sync/v28/mod.rs @@ -170,4 +170,5 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v29/mod.rs b/client/src/client_sync/v29/mod.rs index f1d6648d..51c80930 100644 --- a/client/src/client_sync/v29/mod.rs +++ b/client/src/client_sync/v29/mod.rs @@ -170,6 +170,7 @@ crate::impl_client_v17__sign_message!(); crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); +crate::impl_client_v17__wallet_lock!(); crate::impl_client_v17__wallet_process_psbt!(); /// Arg for the `getblocktemplate` method. (v29+). diff --git a/integration_test/tests/wallet.rs b/integration_test/tests/wallet.rs index 5dc3bef1..d23a1229 100644 --- a/integration_test/tests/wallet.rs +++ b/integration_test/tests/wallet.rs @@ -603,6 +603,16 @@ fn wallet__sign_message__modelled() { let _ = res.expect("SignMessage into model"); } +#[test] +fn wallet__wallet_lock() { + let node = Node::with_wallet(Wallet::Default, &[]); + + node.client.create_wallet("wallet_name").expect("createwallet"); + node.client.encrypt_wallet("passphrase").expect("encryptwallet"); + + let _: () = node.client.wallet_lock().expect("walletlock"); +} + fn create_load_unload_wallet() { let node = Node::with_wallet(Wallet::None, &[]);